Articles of 延迟

如何使用低延迟的Androidaudio

问题: 正如您可能听说过的,Android不提供低延迟audioAPI。 我的意思是低延迟的audio,你应该能够从麦克风获得audio信号,并播放声音,没有太多的时间间隔(例如,5-7毫秒) 我已经尝试了老的Java(与AudioRecord和AudioTrack)和“新的”OpenSL ES。 他们是可怕的,使应用程序无法使用。 这个问题在这里有很好的logging。 顺便说一句,iOS API可以产生大约5-7毫秒的延迟。 寻找解决方法: 但我正在尝试做低延迟audio。 像这样的答案描述。 “但是,我只能通过编写我自己的代码来完成这个工作,这个代码在内部进行了混音,并且只有在播放最终的混音输出时才访问低级audio播放API,在.Net中播放声音的高级方法小巧的框架在理论上是复音的能力,但实际上他们工作可怕(大量的小故障,口吃和扭曲)“。 这对Android有意义吗? 答案是令人沮丧的。 所以我的问题。 Android真的没有办法实现10毫秒的audio延迟? 说实话,我很快就不期待一个解决办法,只希望一个伟大的思想家能够回答这个问题。

不使用线程给几秒钟的延迟

我怎么能不延迟几秒钟使用threads.somefunction,我可以打电话给任何地方延迟。 Android内置function是首选。 谢谢

android延迟使用处理程序

我想显示几个图像,并在每个图像之间添加一个延迟。 我这样做,没有在代码中的错误,但由于某种原因,应用程序崩溃。 Bitmap bitmap = BitmapFactory.decodeFile(imageIn); ImageView myImageView = (ImageView)findViewById(R.id.imageview); myImageView.setImageBitmap(bitmap); // Those are the only 2 lines I used to make my handler Handler handlerTimer = new Handler(); handlerTimer.postDelayed((Runnable) this, 20000);

播放stream时如何避免在Android媒体播放器中进行15秒的延迟/caching

我正在实现从远程机器播放stream的媒体播放器。 通过我的应用程序,我可以控制远程机器(例如寻求第二个)。 像魅力工作,但:Android媒体播放器缓冲一些疯狂的10-15秒(!!),这意味着每个点击(“搜寻”)需要10-15秒生效,即使不到一秒钟,直到新数据到达。 我的问题:有没有办法控制(限制)caching? 还是我只是做错了什么? 我是唯一有这个问题的人吗? 我的代码非常简单: player = new MediaPlayer() player.setDataSource(url); player.setOnPreparedListener(new OnPreparedListener() { public void onPrepared(MediaPlayer mp) { mp.start(); } }); player.prepareAsync(); 更新:我使用本地自build迷你HTTP服务器来连接我的字节stream到Android媒体播放器。 在这种情况下,似乎Android DRM正在延迟/caching。 仍然不是很清楚为什么(为什么不,如果我连接到我的IIS托pipe文件)。 也不知道如何解决这个问题。 input欢迎! 谢谢! 丹尼尔

检测或近似Android上的蓝牙延迟(audio播放)

我目前正在使用连接的智能家居设备(例如飞利浦色调)的Androidaudio可视化工具来可视化音乐。 我无法弥补由蓝牙扬声器造成的延迟。 我注意到,在使用蓝牙扬声器时,Youtube应用程序与其他许多videostream应用程序相比,在audio和video之间几乎没有任何延迟。 我想,他们必须通过调整(延迟)video信号来弥补蓝牙延迟。 是否有合理的方式检测或近似蓝牙扬声器的延迟/延迟? 非常感谢您的帮助! 最好,Stefan

Android应用程序首次推出时间更长,甚至需要30秒以上

下面是应用程序第一次安装时的日志: 05-12 13:16:23.632 28250-28250 / com.app.projectName W / System:ClassLoader引用未知path:/data/app/com.app.projectName-1/lib/arm 05-12 13:16:59.041 28250-28250 / com.app.projectName W / System:ClassLoader引用未知path:/data/app/com.app.projectName-1/lib/arm 05-12 13:16:59.073 28250-28250 / com.app。 projectName I / MultiDex:具有版本2.1.0的VM具有multidex支持05-12 13:16:59.073 28250-28250 / com.app.projectName I / MultiDex:install 05-12 13:16:59.073 28250-28250 / com。 app.projectName I / MultiDex:VM支持multidex,MultiDex支持库被禁用。 而我在我的项目中使用MultiDex库,它将完全在棒棒糖设备下工作。这种延迟在棒棒糖设备中的变化在30秒到90秒之间,第一次应用程序启动。 看到它不是由于MultiDex权利? 因为时间是1.)初始化05-12 13:16:23.632第二个日志在36秒之后到来05-12 13:16:59.041 这件事创build应用程序延迟ClassLoader引用…. MultiDex正在快速初始化。 以下是屏幕截图 它需要15秒到30秒,甚至更多。 我的Gradle文件是: dependencies { compile […]

Android睡眠/等待/延迟function

首先,我是一个初学Android的世界所以请道歉,如果这是愚蠢的问题.. 我正在尝试做以下事情: 启用移动数据 等待10秒 一个。 检查手机是否有IP地址(数据连接成功) 湾 如果未连接,则禁用数据 C。 转到第1步 这些步骤1到3在For循环中执行用户给定的重试次数。 现在我的问题是:我被困在第二步。 我无法使waitfor(int seconds)函数。 我尝试使用Runnable PostDelayed方法,但它不给我需要的输出。 for(retry = UserChoice; retry > 0 && !isDataAvailable ; retry — ){ enableInternet() delay(10) isDataAvailable = GetInternetAvailibility() if(!isDataAvailable){ disableInternet() } } 我尝试在postDelayed处理程序中放置isDataAvailable = GetInternetAvailibility()语句,但isDataAvailable = GetInternetAvailibility()在延迟后执行时导致enableInternet() disableInternet()同时执行。 我可以从日志中看到, enableInternet()为UserChoice执行次数没有任何延迟。 Thread.sleep(10000)只是冻结了10秒的用户界面…我怎么做到这一点? 编辑:让我清楚: public void onClick(View v) { // Perform action […]

为进度对话框添加一个延迟

我想让一个虚拟的进度对话框出现2或3秒。 除了说检测,它实际上不会做任何事情。 我有这个代码: ProgressDialog dialog = ProgressDialog.show(this, "", "Detecting…", true); dialog.show(); dialog.dismiss(); 但是我怎么在节目和放弃对话中出现几秒钟呢? 谢谢!

AudioTrack滞后:obtainBuffer超时

我通过加载文件并通过FileInputStream> BufferedInputStream> DataInputStream方法将字节传送到AudioTrack.write()来在Android手机上播放WAV。 audio播放良好,当它是,我可以很容易地调整采样率,音量等性能不错。 然而,一首曲子开始播放大约需要两秒钟的时间。 我知道AudioTrack有一个不可避免的延迟,但这是荒谬的。 每当我弹奏曲目,我都会得到这个: 03-13 14:55:57.100: WARN/AudioTrack(3454): obtainBuffer timed out (is the CPU pegged?) 0x2e9348 user=00000960, server=00000000 03-13 14:55:57.340: WARN/AudioFlinger(72): write blocked for 233 msecs, 9 delayed writes, thread 0xba28 我注意到,从打开手机的时间开始,每次播放音轨时,延迟的写入次数就会增加一次 – 即使在多次会话中也是如此。 块时间始终为230 – 240ms,考虑到此设备(9600/44100)上的最小缓冲区大小为9600,这是有意义的。 我在互联网上的无数次search中看到了这个消息,但通常似乎与播放audio或跳过audio有关。 就我而言,这只是一个延迟的开始。 我在高优先级的线程中运行我的所有代码。 这是我正在做的一个截断的function版本。 这是我的回放类中的线程callback。 再次,这个工作(现在只播放16位,44.1kHz,立体声文件),它只是需要永远启动,并获得缓冲区/延迟写入消息每一次。 public void run() { // Load file FileInputStream mFileInputStream; try […]

如何在不使用thread.sleep的情况下延迟android中的循环?

我想延迟一个for循环,而不使用Thread.sleep因为该方法使我的整个应用程序挂起。 我试图使用handler但似乎并没有在一个循环内工作。 有人可以指出我的代码中的错误。 public void onClick(View v) { if (v == start) { for (int a = 0; a<4 ;a++) { Handler handler1 = new Handler(); handler1.postDelayed(new Runnable() { ImageButton[] all= {btn1, btn2, btn3, btn4}; btn5 = all[random.nextInt(all.length)]; btn5.setBackgroundColor(Color.RED); @Override public void run() { } }, 1000); } } } 基本上我想要做的是我有4个ImageButton ,我改变他们的每个背景为红色通过使用循环顺序。 这就是为什么我需要在我的循环内延迟,如果不是所有的ImageButton将只是直接变成红色,而不显示哪个ImageButton先转。