我只是试图通过媒体播放器播放音乐n秒。
我的第一个档案:
public void Play_Music() {
mTestUtils.ConnectDevice();
mTestUtils.playMusic(MUSIC_PATH, STREAM_TIME);
mTestUtils.DisconnectDevice(();
}
我的第二档:
public void playMusic(String music_path, int stream_time) {
MediaPlayer mMediaPlayer = new MediaPlayer();
try {
Log.i(TAG, "In Play mUsic");
mMediaPlayer.setDataSource(music_path);
mMediaPlayer.prepare();
mMediaPlayer.start();
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
Log.i(TAG, "In Handler");
mMediaPlayer.stop();
mMediaPlayer.release();
}
}, stream_time);
Log.i(TAG, "Done Playing");
} catch (IOException e) {
e.printStackTrace();
}
return;
}
这里我的问题是如何使处理程序等待给定的时间。 这里发生的是播放音乐被调用,它执行该函数并立即返回执行第一个文件中的下一个语句。我想等到处理程序函数完成后,我需要将控件传递给第一个文件。
提前致谢。
答案 0 :(得分:1)
我从你的问题中理解的是,当你调用playMusic()方法时,它会开始播放并立即停止你的音乐。因为代码从上到下运行。
发生在第二步之后,您立即呼叫断开连接设备。我不知道那个功能是做什么的。如果要在处理程序完成后调用断开连接功能,则需要使用回调方法。处理程序将告诉(通过回调方法)何时调用disconnect方法。我希望我回答这个问题。
有关如何回调接口现象工作的指导,请参阅以下链接。
https://stackoverflow.com/questions/3398363/how-to-define-callbacks-in-android
https://stackoverflow.com/questions/18054720/what-is-callback-in-android