我使用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
类引起的,并不是硬件问题,因为我测试它的设备有足够的RAM
即500Mb
和一个不错的{{1处理器。
我真的需要解决这个问题,因为我希望我的应用可以在大多数设备上运行,但双核手机除外。
此外我无法使用MediaPlayer播放我的声音,因为我不想增加CPU开销并使我的应用程序滞后更多,而且我不知道我想要播放多少声音。
关于如何解决这个问题并减少延迟的任何线索都是最受欢迎的。
答案 0 :(得分:1)
音频/视频播放通常是有问题的,因为涉及许多硬件/低级软件因素(可能在单独的芯片上和/或嵌入到cpu中的专用解码硬件以及所有这些与软件解码器组合,切换在蓝牙,headphonejack和你拥有的2个扬声器之间,从内核到android系统的巨大软件堆栈等)。它可能是Android设备中最脆弱的子系统。许多设备在该区域有较小的怪癖,并不直接与Mhz / RAM / Dualcore相关。不幸的是,你必须和其中一些人住在一起:(
您最好的选择是尝试不同的播放/压缩音频的方法。比如在5个周期后重新开始播放等等。