2015-09-27 22 views
0

當我啓動應用程序和鎖定屏幕不點擊(播放音頻)按鈕後,當我解鎖屏幕,按下播放按鈕我收到異常。獲得java.lang.IllegalStateException當我unlcok屏幕

public class DemoActivity extends Activity { 
MediaPlayer mp; 
Button btn; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main_activity); 
mp = MediaPlayer.create(DemoActivity.this,R.raw.mus); 
btn = (Button) findViewById(R.id.btnOk); 
btn.setOnClickListener(new OnClickListener() { 
@Override 
     public void onClick(View v) { 
if (btn.getText().toString().equalsIgnoreCase("play")) { 
       mp.start(); 
       btn.setText("Pause"); 
      } else if (btn.getText().toString().equalsIgnoreCase("pause")) { 
       mp.pause(); 
       btn.setText("Play"); 
      } 
} 
    }); 
@Override 
public void onPause() { 
super.onPause(); 
    if (mp.isPlaying()) { 
     mp.start(); 
    } else { 
     mp.release(); 
    } 
} 
@Override 
protected void onRestart() { 
    try { 
     if (mp.isPlaying() && mp!=null) { 
      mp.start(); 
     } else { 
      mp.release(); 
     } 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } 
    super.onRestart(); 
} 
@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    mp.release(); 
} 

}

這裏是我的代碼,請儘量給我一個解決方案。 在此先感謝

+0

您是否嘗試在調試模式下運行它並逐步遍歷每個命令以檢查引發異常的位置? –

+0

反對。解釋你爲了自己解決這個問題所做的嘗試。你調試了嗎?您是否檢查了堆棧跟蹤以查看問題源於何處?你也應該在這裏包含堆棧跟蹤。 –

回答

0

請在每mp.start()之前嘗試致電mp.prepare()。您收到錯誤是因爲mp尚未準備好供您使用,因此調用start()會導致IllegalStateException。