2011-10-05 29 views
1

我有使机器人一个应用程序中,我需要三个按钮的XML和Java中我设置了onclick事件,如何改变从停止到开始的歌曲状态?

播放按钮被点击时的歌曲准备和发挥, 点击停止按钮时乐曲停止, 单击暂停按钮时歌曲暂停。

但我的问题是,当我点击播放后,我就停止按钮,然后我点击播放按钮后,乐曲停止播放时点击按钮歌曲播放,但此时的歌曲无法播放,

我的代码为此应用创建。在下面给出。

package com.mydemo; 

import java.io.IOException; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MydemoActivity extends Activity { 
/** Called when the activity is first created. */ 

Button bPlay,bPause,bStop; 
MediaPlayer mp; 
int position = 0; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mp = MediaPlayer.create(this, R.raw.fluet); 

    bPlay = (Button) findViewById(R.id.bPlay); 
    bPause = (Button)findViewById(R.id.bPause); 
    bStop = (Button) findViewById(R.id.bStop); 

    bPause.setVisibility(View.GONE); 

    mp.setOnCompletionListener(new OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer arg0) { 

      position = 0; 
      bPlay.setVisibility(View.VISIBLE); 
      bPause.setVisibility(View.GONE); 

     } 
    }); 

    bPlay.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      if(position > 0) 
      { 
       mp.seekTo(position); 
       mp.start(); 
      } 

      try { 
       mp.prepare(); 
      } catch (IllegalStateException e)  {     
       e.printStackTrace(); 
      } catch (IOException e) {     
       e.printStackTrace(); 
      } 
      mp.start(); 

      bPlay.setVisibility(View.GONE); 
      bPause.setVisibility(View.VISIBLE); 
     } 
    }); 

    bPause.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) {    

      if(mp!=null) 
      { 
       mp.pause(); 
       position = mp.getCurrentPosition(); 
      } 

      bPlay.setVisibility(View.VISIBLE); 
      bPause.setVisibility(View.GONE); 
     } 
    });   

    bStop.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      mp.stop(); 
      position = 0; 

      bPlay.setVisibility(View.VISIBLE); 
       bPause.setVisibility(View.GONE);     
     } 
    }); 
    } 
} 

看到更新后的代码:

package com.mydemo; 

import java.io.IOException; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MydemoActivity extends Activity { 
/** Called when the activity is first created. */ 

Button bPlay,bPause,bStop; 
MediaPlayer mp; 
int position = 0; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mp = MediaPlayer.create(this, R.raw.fluet); 

    bPlay = (Button) findViewById(R.id.bPlay); 
    bPause = (Button)findViewById(R.id.bPause); 
    bStop = (Button) findViewById(R.id.bStop); 

    bPause.setVisibility(View.GONE); 

    mp.setOnCompletionListener(new OnCompletionListener() { 

     @Override 
     public void onCompletion(MediaPlayer arg0) { 

      position = 0; 
      bPlay.setVisibility(View.VISIBLE); 
      bPause.setVisibility(View.GONE); 

     } 
    }); 

    bPlay.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 



      if(mp.isPlaying() == false) 
      { 
       try { 
        mp.prepare(); 
       } catch (IllegalStateException e) {     
        e.printStackTrace(); 
       } catch (IOException e) {     
        e.printStackTrace(); 
       } 
       mp.start(); 
      } 


      bPlay.setVisibility(View.GONE); 
      bPause.setVisibility(View.VISIBLE); 
     } 
    }); 

    bPause.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) {    

      if(mp!=null) 
      { 
       mp.pause(); 
       position = mp.getCurrentPosition(); 
      } 

      bPlay.setVisibility(View.VISIBLE); 
      bPause.setVisibility(View.GONE); 
     } 
    });   

    bStop.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      mp.stop(); 
      position = 0; 

      bPlay.setVisibility(View.VISIBLE); 
      bPause.setVisibility(View.GONE);    
     } 
    }); 
} 
} 

回答

0
bStop.setOnClickListener(new View.OnClickListener() 
     { 

     @Override 
     public void onClick(View arg0) { 

      mp.release(); 
      position = 0; 

      bPlay.setVisibility(View.VISIBLE); 
      bPause.setVisibility(View.GONE);    
     } 
    }); 
bStop.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     if(mp.isplaying == false) 
     { 
    mp = MediaPlayer.create(this, R.raw.fluet); 

     } 
    } 
}); 
1

编辑::
需要在表演事件申请条件像::

if(mp.isplaying == false) 
{ 
    //play the song 
} 
+0

感谢NIK ,但没有这样的方法在android中显示。 – Jayesh

+0

试试这个mp.isPlaying()== true。 –

+0

我曾试过,但它不工作,它给出了相同的结果。 – Jayesh

相关问题