Android SoundPool类在我的应用程序中表现得很奇怪

时间:2012-04-24 17:53:32

标签: android android-mediaplayer performance

我使用Android MediaPlayer在后​​台持续播放一首歌,我不断意味着它永远循环播放。

我还使用25-30课程以离散持续时间播放SoundPool短音,并且还必须一次又一次地播放主歌曲。

声音的持续时间为0.5秒,其中一些的大小为0.7Mb,而歌曲的平均大小约为0.4Mb

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

最近我在运行2.3.3的旧设备上测试了应用程序,新问题是声音似乎在前4-5个循环中正常播放,即直到主歌播放4-5次,然后是第6次,播放声音有明显的延迟,我记录SoundPool.play()的值,发现延迟是〜(1-2秒),这个问题只出现在低端手机上,为什么会发生这种情况,我想这个问题是由SoundPool类引起的,并不是硬件问题,因为我测试它的设备有足够的RAM500Mb和一个不错的{{1处理器。

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

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

关于如何解决这个问题并减少延迟的任何线索都是最受欢迎的。

1 个答案:

答案 0 :(得分:1)

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

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