【问题标题】:Android: button is not changing to pause state when i clickAndroid:当我单击时,按钮不会变为暂停状态
【发布时间】:2014-04-25 09:04:55
【问题描述】:

我已经为媒体播放器编码,它正在播放歌曲。在前端仅使用图像按钮并将其硬编码为播放按钮

当我再次点击时,它必须将图像更改为暂停状态,但我使用的按钮在我点击它时同时播放歌曲两次,这是错误的

但我需要暂停这首歌,所以无论我在哪里使用

mp.start();

将开始从 url 播放音乐的功能,我将代码添加为

if(!mp.isPlaying()){
mp.start();
buttonPlayPause.setBackgroundResource(R.drawable.pause);
}else {
mp.pause();
buttonPlayPause.setBackgroundResource(R.drawable.play);}

但是当我点击播放按钮时它开始播放,如果我再次点击按钮它开始同时播放两次

请帮助我应该如何启动和暂停我在 url 中显示的 mp3 文件,如果我使用不同的功能,它不会自行阻塞

项目的完整代码是

public class MainActivity5 extends Activity implements OnClickListener,
OnPreparedListener, OnErrorListener, OnCompletionListener {



MediaPlayer mp;
ProgressDialog pd;
Button bt;
ImageButton iv;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main5);
iv = (ImageButton)findViewById(R.id.play);
iv.setOnClickListener(this);}
@Override
public void onPrepared(MediaPlayer mp) 
 {
   Log.i("StreamAudioDemo", "prepare finished");
   //pd.setMessage("Playing.....");
   //mp.start();

   /*if(mp.isPlaying()== true)
   {
       mp.start();
       iv.setImageResource(R.drawable.pause);
   }
   else 
   {
       mp.pause();
       mp.release();
       iv.setImageResource(R.drawable.play);
   }*/

}
@Override
 public void onClick(View v) {

   try
    {
        pd = new ProgressDialog(this);
        pd.setMessage("Buffering.....");
        //pd.show();
        mp = new MediaPlayer();
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mp.setOnPreparedListener(this);
        mp.setOnErrorListener(this);
        mp.setDataSource("http://192.168.1.138/Android/music/vande.mp3");
        mp.prepareAsync();
        mp.setOnCompletionListener(this);
    }
    catch(Exception e)
    {
        Log.e("StreamAudioDemo", e.getMessage());
    }
}

@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
  pd.dismiss();
  return false;
}

@Override
public void onCompletion(MediaPlayer mp) {
    pd.dismiss();
    Toast.makeText(getApplicationContext(), "Completed", Toast.LENGTH_LONG).show();     
}}

提前感谢您的帮助

我在上面注释了一些代码,我必须重新更正它

【问题讨论】:

  • 您的代码中的 mpmediaPlayer 是什么,是错字还是您在此处使用的??
  • 不应该是if (mp.isPlaying()) {吗?
  • 如果buttonPlayPauseImageButton,那么是的——你应该使用setImageResource
  • 使用if(mp.isPlaying()== true) 而不是这个if(!mp.isPlaying())
  • 你能把你的完整代码发布到媒体播放器上吗

标签: java android url android-emulator media-player


【解决方案1】:

你可以试试你的onclickListener,当这个播放器正在播放时,如果你想暂停它,你应该调用MediaPlayer.pause(),如果你想释放它的数据,你可以调用MediaPlayer.release( ),然后,您可以播放下一首音乐。

【讨论】:

  • 我什么时候应该在上面的代码中使用 release() @tagmic
  • 这个能帮到你吗?
【解决方案2】:

使用这个

public void onPrepared(MediaPlayer mp) 
 {
   Log.i("StreamAudioDemo", "prepare finished");
   //pd.setMessage("Playing.....");

// mp.start(); - this should be removed 
   if(mp.isPlaying()== true)
   {
     mp.pause();

       iv.setImageResource(R.drawable.pause);
   }
   else 
   {
      mp.start();
       mp.release();
       iv.setImageResource(R.drawable.play);
   }

}

【讨论】:

  • 我会尽快让你知道@Sree
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多