我只是想通过媒体播放器播放音乐 n 秒。
public void playMusic(String music_path) {
MediaPlayer mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(music_path);
mMediaPlayer.prepare();
mMediaPlayer.start();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mMediaPlayer.stop();
}
}, 20000);
mMediaPlayer.release();
Log.i(TAG, "Done Playing");
} catch (IOException e) {
e.printStackTrace();
}
return;
}
主文件中的我的函数调用者:
public void Play_Music() {
mBtTestUtils.playMusic(MUSIC_PATH);
}
}
当我这样做时,我收到以下错误:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
如有任何帮助,我们将不胜感激。
最佳答案
您需要先调用Looper.prepare()
。您在处理程序上发布的任何内容都会进入消息队列。 Looper 会循环这个消息队列并发送任务来执行。每当定义一个新的 Handler 时,它都会获取定义它的线程的 Looper。新生成的线程不包含自己的 Looper,除非您调用 Looper.prepare(),因此会出现错误。
你可以得到很好的解释here .
关于java - 无法在未调用 Looper.prepare() Android Media Player 的线程内创建处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45417016/