我创建了一个包含媒体播放器的活动。当我开始活动时,音乐开始播放。但是当歌曲完成并且当我点击模拟器上的后退按钮时,它显示错误(IllegellStateException)。
这是我的代码。
先谢谢了。
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.audio);
    init();
    imgVw.setImageResource(R.raw.teddy_two);
    prefs = PreferenceManager.getDefaultSharedPreferences(this);
    mp=MediaPlayer.create(Audio_Activity.this,R.raw.ennamo_yadho);
    Log.e("Song is playing","in  Mediya Player ");
    Log.e("Current ","Position -> " + length);
    mp.setLooping(false);
    mp.start();
    btnChapter.setEnabled(false);
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
    {
        @Override
        public void onCompletion(MediaPlayer mp) 
        {
            // TODO Auto-generated method stub
            mp.stop();
            mp.release();
            btnChapter.setEnabled(true);
            System.out.println("Music is over and Button is enable !!!!!!");
        }
    });
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        }
    }
    @Override
    public void onPause()
    {
        super.onStop();
        SharedPreferences. Editor prefsEdit = prefs.edit();
        int position = mp.getCurrentPosition();
        prefsEdit.putInt("mediaPosition", position);
        prefsEdit.commit();
    }
    @Override
    protected void onResume() 
    {
        super.onResume();
        System.out.println("Activity is Resume !!!");
        int position = prefs.getInt("mediaPosition", 0);
        mp.seekTo(position);
        mp.start();
    }
    #Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) 
        { 
            if(mp!= null)
            {
                mp.pause();
            }
            //finish();
         return true;
     }
     return super.onKeyDown(keyCode, event);
 }
}