2011-12-22 232 views
0

我正在嘗試使用MediaPlayer對象播放聲音,但儘管我盡了最大的努力,但似乎無法使其運行。聲音只是拒絕播放。Android媒體播放器

這是一個短暫的聲音,應該在屏幕被觸摸時播放,這意味着它必須重複許多次而沒有太多延遲。知道這個我遵循狀態圖http://developer.android.com/reference/android/media/MediaPlayer.html。我似乎無法看到我的方法調用的順序究竟出了什麼問題。

MediaPlayer mp = MediaPlayer.create(this.getContext(), R.raw.select2); 
try { 
    mp.prepare(); 
    mp.start();     
    Log.e("debug","sound played"); 
    } 
catch(Exception e) {} 
mp.stop(); 
+0

無需調用的準備方法.....在第一行會自動準備,你有在onPrepare監聽器中啓動播放器... – 2011-12-22 11:43:15

+0

謝謝!我不知道OnPreparedListener類。現在正在工作。 – rolledback 2011-12-22 17:26:52

回答

0

你叫prepare()上的媒體播放器,但create()呼叫使用自動準備的球員,這會導致IllegalStateException當您嘗試再次調用prepare(),和您發送到您的catch()(你會注意到這一點如果以某種方式處理異常,即打印堆棧跟蹤)。

0
MediaPlayer player = MediaPlayer.create(this.getContext(), R.raw.select2); 

我們通過設置它的一些屬性配置音樂播放器如下圖所示

player.setWakeMode(getApplicationContext()PowerManager.PARTIAL_WAKE_LOCK); 
player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
player.setOnPreparedListener(this); 
player.setOnCompletionListener(this); 
player.setOnErrorListener(this); 
try { 
    player.prepare(); 
    player.start();     
    Log.e("debug","sound played"); 
} catch(Exception e) {} 
    player.stop();