Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Deezer Android SDK的LGE Nexus 4上的永久音频中断_Android_Deezer - Fatal编程技术网

使用Deezer Android SDK的LGE Nexus 4上的永久音频中断

使用Deezer Android SDK的LGE Nexus 4上的永久音频中断,android,deezer,Android,Deezer,音频播放已在三星Galaxy S3和HTC One上成功测试,但在运行安卓4.4的LGE Nexus 4上严重中断。发生的事情是,完美的音频可以听到一小部分秒,然后是几秒钟的沉默,然后是另一个简短的音频片段,然后沉默,如此下去。因此,似乎音频流逻辑最终会在一个永恒的开始-播放-运行-停止循环中结束 每隔一秒钟左右,我就会看到以下警告记录: 12-09 00:55:56.982 10842-14365/com.soundrop.android W/AudioTrack﹕ releaseBuffe

音频播放已在三星Galaxy S3和HTC One上成功测试,但在运行安卓4.4的LGE Nexus 4上严重中断。发生的事情是,完美的音频可以听到一小部分秒,然后是几秒钟的沉默,然后是另一个简短的音频片段,然后沉默,如此下去。因此,似乎音频流逻辑最终会在一个永恒的开始-播放-运行-停止循环中结束

每隔一秒钟左右,我就会看到以下警告记录:

12-09 00:55:56.982  10842-14365/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting
12-09 00:55:57.583  10842-14367/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting
12-09 00:55:58.594  10842-14369/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting
12-09 00:55:59.595  10842-14371/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting
12-09 00:56:02.047  10842-14379/com.soundrop.android W/AudioTrack﹕ releaseBuffer() track 0x7b03f4e0 name=s:176;n:2;f:-1 disabled due to previous underrun, restarting
这让我想到了设备之间可能存在的音频缓冲区差异,因此我做了一些探索:

HTC One (good playback): AudioTrack.getMinBufferSize(44100, STEREO, ENCODING_PCM_16BIT) => 16932
LGE Nexus 4 (bad playback): AudioTrack.getMinBufferSize(44100, STEREO, ENCODING_PCM_16BIT) => 7056
我的猜测是,Deezer Android SDK在这个特定设备上设置的缓冲区大小太小,因为它似乎选择的缓冲区大小是报告的最小大小的10倍


更新:刚刚在运行4.4的HTC One上重现了音频口吃,其中getMinBufferSize()返回16932(就像在Android<4.4上一样)。因此,这个问题显然不是特定于设备的,而是与从KitKat开始的特定于操作系统的行为变化有关。

这确实是安卓4.4更新引起的问题。AudioTrack实施中的某些内容发生了变化,并导致了这些运行不足的问题


我们目前正在解决这个问题,我们将尽快发布它

看看你是否能找到一个在新版本上运行的开源示例而不会结结巴巴,看看你是否能找出他们所做的与你所做的有什么不同。我在使用“方法断点”进行调试时遇到了这个问题,显然这真的减慢了速度,