[英]When I click pause button it paused but when i clicked again play button , it starts the song from start
[英]Changing audio button from play to pause when clicked and vice versa
我想要我的应用程序中的一个播放按钮,当单击该按钮时,它会播放音频并更改为暂停,而当单击暂停按钮时,音频会停止并且该按钮更改为再次播放,依此类推。 但是该按钮无法正常工作。 请帮忙。 我在下面添加我的Java代码。
public class surah extends AppCompatActivity {
MediaPlayer mp = new MediaPlayer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_surah);
mp=MediaPlayer.create(surah.this, R.raw.surahkahf);
final ImageView audio = (ImageView)findViewById(R.id.btn);
audio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mp.isPlaying()){
mp.stop();
audio.setBackgroundResource(R.drawable.play);
try {
mp.prepare();
}catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
mp.start();
audio.setImageResource(R.drawable.pause);
}
}
});
}
}
首先,正如aborocz在评论中提到的那样,您可能打算暂停播放而不是停止播放,因此要使用的方法是pause()
。 在这种情况下,您无需再次准备MediaPlayer
,它将从恢复播放时暂停的位置开始。
其次, isPlaying()
方法不适用于此目的。 有些比赛条件阻止了期望的行为。 从Android MediaPlayer
文档中 :
请注意,在播放器引擎中,异步发生从“开始”状态到“暂停”状态的转换,反之亦然。 在对isPlaying()的调用中更新状态之前,可能需要花费一些时间,对于流式传输的内容,状态更新可能需要花费几秒钟的时间。
而是存储您自己的布尔值。
public class surah extends AppCompatActivity {
private MediaPlayer mp;
private boolean isMediaPlaying = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_surah);
mp = MediaPlayer.create(surah.this, R.raw.surahkahf);
final ImageView audio = (ImageView)findViewById(R.id.btn);
audio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isMediaPlaying) {
mp.pause();
audio.setBackgroundResource(R.drawable.play);
isMediaPlaying = false;
} else {
mp.start();
audio.setImageResource(R.drawable.pause);
isMediaPlaying = true;
}
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.