我试图返回媒体播放器的当前状态,因为我想检查媒体播放器还没有加载歌曲,所以我可以提供弹出窗口来选择音频文件。如何返回媒体播放器的状态?
代码在其他类
public Sound(int buttonID, Activity _activity) {
super();
this.activity = _activity;
button = (Button) activity.findViewById(buttonID);
mp = new MediaPlayer();
}
代码,以检查是否音频文件被加载
sound.button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(//no audio file loaded){
Intent intent = new Intent(MainActivity.this, Pop.class);
startActivityForResult(intent, PICK_AUDIO_REQUEST);
}
else if(sound.mp.isPlaying()) {
sound.mp.pause();
}
else{
sound.mp.seekTo(0);
sound.mp.start();
}
}
});
使用的答案,这是我想出了代码:
sound.button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
sound.mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
isPrepared = true;
}
});
if(!isPrepared){
Intent intent = new Intent(MainActivity.this, Pop.class);
startActivityForResult(intent, PICK_AUDIO_REQUEST);
}
else if(sound.mp.isPlaying()) {
sound.mp.pause();
}
else{
sound.mp.seekTo(0);
sound.mp.start();
}
}
});
我在考虑加载一个虚拟文件,然后检查是否存在以覆盖它。这不会是优雅的,但它会吗?或者,我会如何与你的解决方案一起搭配onpreparedlistener? – Sterisk
无论何时更改声音数据源('url' /'uri'),您都必须重新准备'MediaManager'。没有别的办法。 –
那么我会在哪里放置onpreparedlistener? – Sterisk