gpt4 book ai didi

android - Media Player 突然停止并在 logcat : TimedEventQueue(33): Event 4 was not found in the queue, 中显示警告已取消?

转载 作者:行者123 更新时间:2023-11-29 22:20:20 26 4
gpt4 key购买 nike

我正在尝试将背景音乐放入我的应用程序中。我创建了一个 Intent 服务,它创建一个媒体播放器并启动音乐。

一旦我的应用程序启动,音乐只播放一秒钟,之后我在我的 logcat 中看到以下警告:-

09-13 20:12:54.082: WARN/TimedEventQueue(33): 在队列中找不到事件 4,已经取消了吗?

对于我的应用程序的每次运行,事件编号都会发生变化。这次是事件 5。

这是我实现媒体播放器的服务类:-

import android.app.IntentService;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
import android.widget.Toast;

public class MusicService extends IntentService {

MediaPlayer mPlayer;
private OnErrorListener mErrorListener;

public MusicService() {
super("MusicService");
// TODO Auto-generated constructor stub
}

@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
// Normally we would do some work here, like download a file.


}

///////////////////////////////////////////////////////////

@Override
public int onStartCommand (Intent intent, int flags, int startId)

{
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
mPlayer.setLooping(true);
mPlayer.start();

return super.onStartCommand(intent,flags,startId);


}

@Override

public void onCreate ()

{
super.onCreate();
// try{
mPlayer = MediaPlayer.create(this, R.raw.jingle);
//}catch (IllegalArgumentException e) {
//e.printStackTrace();
//}catch (IllegalStateException e ) {
//e.printStackTrace();
//}

if(mPlayer!= null)
{
mPlayer.setLooping(true); // Set looping
mPlayer.setVolume(100,100);
}


mPlayer.setOnErrorListener(new OnErrorListener() {

public boolean onError(MediaPlayer mp, int what, int extra) {
// TODO Auto-generated method stub
onPlayError();
return true;
}

});


}

private void onPlayError() {
Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show();
if(mPlayer != null)
{
try{
mPlayer.stop();
mPlayer.release();
}finally {
mPlayer = null;
}
}
}

@Override
public void onDestroy ()

{
super.onDestroy();
if(mPlayer != null)
{
try{
mPlayer.stop();
mPlayer.release();
}finally {
mPlayer = null;
}
}

}



}

最佳答案

我找到了解决方案。问题是因为我使用的是 Intent 服务,所以在使用 Intent 启动服务后,播放器开始了,但立即在 Destroy 上被调用,那里有一个代码来释放和停止播放器。

删除该代码后,我可以看到音乐连续播放,而且我没有看到那些定时队列警告!!!

关于android - Media Player 突然停止并在 logcat : TimedEventQueue(33): Event 4 was not found in the queue, 中显示警告已取消?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407979/

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