0

我在与声音相关的HTC Wildfire S上经常崩溃时遇到问题(在其他设备(如 Thunderbolt)上出现类似的崩溃,但频率较低)。我已经尝试了各种各样的方法来解决它,或者至少在没有运气的情况下了解更多关于问题的确切原因。

我确定这个问题与声音有关。当我注释掉SoundPool.play()问题时,问题就消失了。我不认为它是特定于 SoundPool 的,因为我尝试使用OpenSL ES来代替它并没有减少崩溃。

我也很难接受这必然是较低级别声音的问题,因为它只发生在这个标题上;但不是(据我所知)在其他使用相同声音代码构建的游戏上。此外,我几乎没有发现其他人遇到同样问题的证据。

但是我能想到的游戏特定的事情会导致这种情况(大量同时出现的声音,频繁的声音,声音格式)似乎不是问题(我一次只减少了一个声音,切换到 WAV,更小文件,OGG,忽略而不阻塞最近发生在另一个声音中的声音)。

我们的通用代码是建立在cocos2dx之上的,看起来(虽然我不完全相信)崩溃增加了* Cocos2dxSound .java * 的调整,所以它只会SoundPool.play(...) returned 0在第一次之后休眠主​​线程。

此外,如果可能出现问题,安装后会下载来自 APK 的一些声音。

非常感谢任何想法或建议;这比它应该花费的时间更长。

4

2 回答 2

0

如果您共享一些代码会有所帮助。但我建议你从 ZXing 检查这段代码:

http://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/BeepManager.java?r=2271

特别是 buildMediaPlayer()

于 2012-09-12T00:02:53.823 回答
0

该问题是由一个不相关的问题引起的。当声音播放时,它暴露了问题。不确定是怎么玩的;但我们怀疑无论出于何种原因播放声音都会将大多数低/中档手机置于内存边缘(ndk-profiler 最近已签入,但签入时并未禁用它,因此它仍在进行分析)。

于 2012-09-14T23:13:24.697 回答