兩週前我發佈了我的第一個Android應用程序(一個名爲Agent Syndicate的MMO),除了聲音和音樂外,一切都運行良好!Android MP3 MediaPlayer崩潰一些手機
使用128kps的索尼Sound Forge Pro 10中創建的標準MP3文件,我立即收到許多用戶抱怨關於各種手機上的強制關閉問題的報告,這些手機主要運行Android 2.1和2.2。我發佈了一個關閉所有聲音的新版本,投訴停止。但是我真的很想聽到聲音,所以這很不理想。
我沒有資源來測試除了我的個人手機和模擬器之外的其他任何資源(其中一切都完美無缺),但很明顯,這對許多玩家來說都是一個主要問題!
我不應該使用MP3嗎?是否有一種通用方法最適合所有手機播放簡單的聲音文件?
這是我使用的,開始我的聲音效果是什麼:
final MediaPlayer player = MediaPlayer.create(GlobalState.Instance, resId);
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
public void onCompletion(MediaPlayer mp)
{
mp.release();
}
});
player.setVolume(0.5f, 0.5f);
player.start();
我本來叫player.start()之前player.prepare(),但保留對某些聲音文件的獲取IllegalStateExceptions 。其中的一些信息在確切地調用這些方法的時候非常混亂,以及例外的含義。刪除player.prepare()使它在模擬器和我的本地dev設備上100%的時間工作。
要非常小心的SoundPool,因爲它解壓縮,在內存中,你添加到它的每一個聲音。僅用於超小聲音(<1s)。加載任何東西即使是很大的內容都會導致內存異常。 – ADB 2011-01-04 08:41:49