当我第一次点击播放音乐时,我正在使用带有2个动作PLAY和STOP的“音乐”按钮,然后当我再次点击时它停止了。但是,当我第二次单击时,所有操作PLAY / STOP都不起作用。
public class Home extends Activity {
boolean isMediaOn=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageButton music=(ImageButton)findViewById(R.id.music);
final MediaPlayer sound=MediaPlayer.create(Accueil.this,R.raw.star);
music.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// play
if(isMediaOn==false)
{
System.out.println("PLAY");
sound.start();
music.setImageResource(R.drawable.music);
isMediaOn=true;
}
// stop
else
{
System.out.println("STOP");
if(sound.isPlaying()){
sound.reset();
sound.stop();
}
music.setImageResource(R.drawable.no_music);
isMediaOn=false;
}
}
});
以下是我的logcat的截图:
答案 0 :(得分:0)
当玩家处于州stop()
,STARTED
,PREPARED
或PAUSED
时,您才可以拨打PLAYBACK_COMPLETE
。您的reset()
来电正在将其重新置于IDLE
状态,导致stop()
失败。
答案 1 :(得分:0)
您可能希望使用pause(),如sound.pause();
pause()方法暂停播放并保持所有其他播放器状态(例如正在播放的文件,文件中的位置等)。
答案 2 :(得分:0)
在http://developer.android.com/reference/android/media/MediaPlayer.html#stop中明确指出 '一旦进入Stopped状态,在调用prepare()或prepareAsync()将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。'
public class Home extends Activity {
boolean isMediaOn=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageButton music=(ImageButton)findViewById(R.id.music);
final MediaPlayer sound=MediaPlayer.create(Accueil.this,R.raw.star);
music.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// play
if(isMediaOn==false)
{
System.out.println("PLAY");
try {
sound.prepare();
} catch (Exception e) {
Log.d(Settings.debug, e.toString());
}
sound.start();
music.setImageResource(R.drawable.music);
isMediaOn=true;
}
// stop
else
{
System.out.println("STOP");
if(sound.isPlaying()){
sound.reset();
sound.stop();
}
music.setImageResource(R.drawable.no_music);
isMediaOn=false;
}
}
});
答案 3 :(得分:-1)
试试这个,希望这可以帮助你。
final ImageButton music=(ImageButton)findViewById(R.id.music);
final MediaPlayer sound=MediaPlayer.create(Accueil.this,R.raw.star);
music.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(sound.isPlaying()){
sound.stop();
music.setImageResource(R.drawable.no_music);
} else {
sound.start();
music.setImageResource(R.drawable.music);
}
});