gpt4 book ai didi

java - 无法在未调用 Looper.prepare() Android Media Player 的线程内创建处理程序

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:25 25 4
gpt4 key购买 nike

我只是想通过媒体播放器播放音乐 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com