0

我有一首歌使用 Android 在后台连续播放MediaPlayer,我的意思是它永远循环播放。

我也有25-30 很短的声音,我使用SoundPoolClass 以离散的持续时间播放,而且它们还必须用主歌一次又一次地播放。

每个声音都是0.5第二个持续时间,其中一些是0.7Mb大小,而一首歌的平均大小约为0.4Mb.

我能够在我制作这个应用程序的设备上顺利完成这整个事情,然后我才知道 SoundPool 在双核手机上播放有问题。所以我撤回了对他们的支持。

最近我在运行 2.3.3 的旧设备上测试了该应用程序,新问题是声音似乎在前 4-5 个周期内正常播放,即直到主歌播放 4-5 次,然后在第 6 次,有声音播放有明显延迟,我记录了 的值,SoundPool.play()发现延迟约为(1-2 秒),而且这个问题只出现在低端手机上,为什么会发生这种情况,我想是问题造成的由SoundPool类,根本不是硬件问题,因为我测试它的设备有足够的RAM500Mb和体面的600Mhz处理器。

我真的需要解决这个问题,因为我希望我的应用程序可以在大多数设备上运行,暂时除了双核手机。

此外,我不能使用 MediaPlayer 播放我的声音,因为我不想增加 CPU 开销并使我的应用程序滞后更多,而且我不知道我想提前播放多少声音。

任何有关如何解决此问题和减少滞后的线索,都非常受欢迎。

4

1 回答 1

1

音频/视频播放通常是有问题的,因为涉及到很多硬件/低级软件因素(可能有专门的解码硬件在单独的芯片上和/或嵌入到 cpu 中,所有这些都与软件解码器相结合,在蓝牙之间切换,耳机插孔和您拥有的 2 个扬声器,从内核到 Android 系统的巨大软件堆栈等)。它可能是 Android 设备中最脆弱的子系统。许多设备在该区域具有较小的怪癖,并且与 Mhz / RAM / Dualcore 没有直接关系。不幸的是,你必须和他们中的一些人一起生活:(

你最好的选择是尝试不同的方式来播放/压缩你的音频。诸如在 5 个周期后重新开始播放等

于 2012-04-24T18:55:41.933 回答