小弟最近在看Mediaplayer、、、今天突然发现一个问题、
在播放的时候按下暂停键、、在按下停止键、、、然后点播放键的时候是接在暂停那个位置开始播放的、
如果在播放的时候直接按停止键、、、、是正常的百思不得其解、、、、
求指点!在线等。

解决方案 »

  1.   

    public class MainActivity extends Activity implements MediaPlayer.OnCompletionListener {
    private ImageButton play1,pause1,stop1;
    MediaPlayer player=new MediaPlayer();
        private String path="/sdcard/music/奔.mp3";
        private Button sousuo;
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            play1=(ImageButton)findViewById(R.id.play);
            pause1=(ImageButton)findViewById(R.id.pause);
            stop1=(ImageButton)findViewById(R.id.stop);
            sousuo=(Button)findViewById(R.id.sousuo);
            play1.setEnabled(true);
            pause1.setEnabled(false);
            stop1.setEnabled(false);
            
            setMedia();
            
            play1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    playing();
    }
    });
            stop1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    play1.setEnabled(true);
    stop1.setEnabled(false);
    pause1.setEnabled(false);
    if(player.isPlaying()){
    player.stop();
    player.reset();

    player.release();
    }
    }
    });
            pause1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    play1.setEnabled(true);
    stop1.setEnabled(true);
    pause1.setEnabled(false);
    player.pause();
    }
    });
            sousuo.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent=new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setType("Audio/*");
    startActivityForResult(intent, 0);
    }
    });
          
    }
    public void setMedia(){

    try {
    player.release();
    player=new MediaPlayer();
    //player.reset();
    File file=new File(path);
    FileInputStream fs=new FileInputStream(file.getAbsolutePath());
    player.setDataSource(fs.getFD());
    player.prepare();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalStateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public void onActivityResult(int i,int b,Intent intent){
    if(intent!=null){
    Uri uri=intent.getData();
    String p=uri.toString().substring(52);
    System.out.println(p);
    System.out.println("path="+path);
    path=p;
    setMedia();
    System.out.println(path+"=path");
    }
    }
    public void playing(){

    if(path!=null&& !path.equals("")){
    play1.setEnabled(false);
    stop1.setEnabled(true);
    pause1.setEnabled(true);
    player.start();
    }
    }
    @Override
    public void onCompletion(MediaPlayer arg0) {
    // TODO Auto-generated method stub
    player.release();
    play1.setEnabled(true);
    stop1.setEnabled(false);
    pause1.setEnabled(false);

    }
    }不好意思、、、、、代码补上、
      

  2.   

    stop1.setOnClickListener(new OnClickListener() {
                 
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    play1.setEnabled(true);
                    stop1.setEnabled(false);
                    pause1.setEnabled(false);
                        if(player.isPlaying()){
                        player.stop();
                        player.reset();
                         
                        player.release();
                    }
                }
            });果然是逻辑错误 你的判断条件是if(player.isPlaying)
    才会执行停止的一系列操作。
    当你暂停的时候,player.isPlaying是false
    所以根本不会执行停止操作,所以当你点暂停,再点停止的时候,是不会执行任何操作的。
    修改一下你的判断条件吧。