我正在尝试创建一个应用程序,该应用程序在打开应用程序时首先播放音乐,并且在播放音乐之后执行其余代码。现在我正在做如下的事情:
MusicPlayer mp=new MusicPlayer();
mp.setDataSource("source");
mp.prepare();
mp.start();
do {
} while(mp.isPlaying());
我只是使用do-while循环暂停系统,但我认为系统因此而过载,仿真器也因此而陷入困境。
有没有有效的方法呢?
答案 0 :(得分:3)
有一个名为CompletionListener的回调函数。您可以使用以下命令进行设置:
myPlayer.setOnCompletionListener
您可以在此处找到描述:http://developer.android.com/reference/android/media/MediaPlayer.html#Callbacks
答案 1 :(得分:2)
我不确定你想做什么是对的。如果您阻止UI线程并且没有任何事情发生但只播放了一些音乐,则用户可能会觉得有些问题并且无法正常工作。
当某些事情发生时,播放音乐会更好 - 播放内容,下载内容或其他内容。
使用myPlayer.setOnCompletionListener
作为@Manu表示调用音乐完成后必须执行的事件/方法。你必须做这样的事情:
public class MyActivity extends Activity {
private MusicPlayer mp;
protected void onCreate(...) {
super.onCreate(...);
mp = new MusicPlayer();
mp.setDataSource("source");
mp.setOnCompletionListener(
new OnCompletionListener() {
onCompletion(MediaPlayer player) {
otherMethod();
}
});
}
protected void onResume() {
super.onResume();
playMusic();
}
private void playMusic() {
mp.prepare();
mp.start();
}
// Called when the music is finished.
private void otherMethod() {
// Do something.
}
}