gpt4 book ai didi

Android 媒体播放器导致 "dead thread"消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:11 24 4
gpt4 key购买 nike

我从后台服务 (IntentService) 启动声音,它由系统警报触发(声音结束时服务的线程通常会死掉)。

相关代码是这样的:

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (alert == null)
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(this, alert);
final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) != 0) {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mMediaPlayer.setLooping(false);
mMediaPlayer.prepareAsync();
mMediaPlayer.start();
}

这个东西工作正常,但每次播放声音时,我都会在 log cat 中得到这个:

WARN/MessageQueue(7508):Handler{482f97e0} 向死线程上的 Handler 发送消息

我认为这可能是由于声音结束时对后台线程的回调,或者我在完成前一个媒体播放器之前反复使用媒体播放器。有什么想法吗?

最佳答案

非常老的问题,但是@Alex' xkcd link说服我无论如何都要回答。

我有一个非常相似的情况,并且能够通过 Runnable 实例化 MediaPlayer 来达到预期的结果。在我的例子中,一个 IntentService 调用一个正在进行的服务,它负责媒体播放。我的解决方案如下所示(仅相关代码):

public class HelperService extends Service {

public void play() {
Thread thread = new Thread(new Runnable() {
public void run() {
soundStart();
}
});
thread.start();
}

private void soundStart() {
try {
AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(R.raw.sound);
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);

mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
mp.reset();
return false;
}
});

mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// do stuff
}
});

mMediaPlayer.prepare();
mMediaPlayer.start();

} catch (IOException e) {
e.printStackTrace();
}
}
}

关于Android 媒体播放器导致 "dead thread"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6828209/

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