android錯誤之MediaPlayer用法的Media Player called in state *,androidmediaplayer

來源:互聯網
上載者:User

標籤:

用到Media Player,遇到幾個問題,記一下

 

用法就不說了,使用的時候最好參考一下mediaPlayer的這張圖

 

第一個錯誤是Media Player called in state 8

這個是因為在調用start之前沒有prepare,因為我是用了

 

 

mediaPlayer = MediaPlayer.create(context, R.raw.notice);

 

 

去初始化的播放器,這個介面說明

只要成功返回了播放器就不需要再去prepare了,但是我之後多次調用stop和start,就導致出現上面錯誤,

對照圖上也可以看出來,如果在暫停時候使用多是stop,則在start之前必須重新prepare,否則報錯Media Player called in state 8

如果暫停使用pause,那麼直接start就可以,不用prepare。

 

第二個錯誤是Media Player called in state 0

這個錯誤是由於

 

public void play(){try {mediaPlayer.prepare();} catch (IllegalStateException e) {e.printStackTrace();}
mediaPlayer.start();
}


改成下面這樣

 

 

public void play(){try {mediaPlayer.setOnPreparedListener(preparedListener);mediaPlayer.prepareAsync();} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();}}OnPreparedListener preparedListener = new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {mediaPlayer.start();}};

 

 

一看就明白了,剛開始我調完prepare就直接去start了,但是這時候可能prepare還沒有成功,所以就報了上面的錯誤。

 

之後又遇到一個prepareAsync called in state 8

這個解決方案在之前那個基礎上加一行代碼,確保在prepare之前播放器已經stop了

 

 

public void play() {try {if(mediaPlayer !=null){mediaPlayer.stop();}mediaPlayer.setOnPreparedListener(preparedListener);mediaPlayer.prepareAsync();} catch (IllegalStateException e) {e.printStackTrace();}currentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);if (currentVolumn < maxVolumn) {am.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolumn, 0);}}



 

jason0539

微博:http://weibo.com/2553717707

部落格:http://blog.csdn.net/jason0539(轉載請說明出處)

 

android錯誤之MediaPlayer用法的Media Player called in state *,androidmediaplayer

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.