2013-04-22 34 views
1

我有两项活动,家庭作业和更接近。我有一首歌在家庭作业中播放,但是当按下某个按钮时,媒体播放器会暂停并打开近处。在我的onPause功能中,我试图暂停媒体播放器,但它不起作用,更近的活动打开并且音乐仍在播放。之前,我已经设置好了,以便在活动作业的按钮监听器中,媒体播放器暂停,但是媒体播放器在我设置onResume时不会恢复。我认为这可能是mediaplayer的范围问题,有谁能帮我解决这个问题吗?Android:onResume/onPause和mediaplayer

package com.cis.lab4; 

import java.io.IOException; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.res.AssetFileDescriptor; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class Homework extends Activity { 

    final MediaPlayer mediaplayer = new MediaPlayer(); 
    int media_length; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_homework); 
     setPlayer(); 
     mediaplayer.start(); 
     Button next = (Button) findViewById(R.id.homeworkContinue); 
     final Intent openCloser = new Intent(this, EndActivity.class); 
     next.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View v) { 
       startActivity(openCloser); 

      } 

     }); 
    } 

    public void onResume(Bundle savedInstanceState){ 
     super.onResume(); 
     mediaplayer.seekTo(media_length); 
     mediaplayer.start(); 
    } 

    public void onPause(Bundle savedInstanceState){ 
     mediaplayer.pause(); 
     media_length = mediaplayer.getCurrentPosition(); 
    } 


    public void setPlayer(){ 
     AssetFileDescriptor afd; 
     try { 
      afd = getAssets().openFd("rev.mp3"); 
      mediaplayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength()); 
      mediaplayer.prepare(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

回答

1

您没有正确覆盖onPause。

试试这个的onPause istead请:

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    mediaplayer.pause(); 
    media_length = mediaplayer.getCurrentPosition(); 
} 

应该很好地工作。你应该为onResume做同样的事情。 晚安。