java mediaplayer和服务类
我有一个运行mediaplayer的服务类,它运行得很好,我唯一的问题是,当我的服务创建mediaplayer时,它会暂停我的UI,比如挂起之类的,直到我的mediaplayer自己创建完成。我想发生的是,当我按下播放按钮时,会出现一条祝酒信息,并显示“正在连接”,当mediaplayer准备就绪时,会显示一条祝酒信息,上面写着“已连接”,然后mediaplayer开始播放音乐,不知怎的,我的祝酒词没有显示出来,如果他们播放得太晚
这是我的服务代码:
public class myservice extends Service {
MediaPlayer player;
private Handler UIHandler = new Handler();
private Uri source = Uri.parse("http://www.mydomain.com:8000/listen.mp3");
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
public void onCreate() {
Toast.makeText(this, "Connecting", Toast.LENGTH_SHORT).show();
player = MediaPlayer.create(this, source);
}
private void testtoast() {
Toast.makeText(this, "Connecting", Toast.LENGTH_SHORT).show();
}
public void onStart(Intent intent, int StartId) {
Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
player.setOnPreparedListener( new OnPreparedListener() {
public void onPrepared(MediaPlayer player) {
// TODO Auto-generated method stub
player.start();
}
});
}
public void onDestroy() {
Toast.makeText(this, "Destroyed", Toast.LENGTH_SHORT).show();
player.stop();
player.release();
}
}
# 1 楼答案
替换
与
MediaPlayer.create
调用prepare()
方法来准备MediaPlayer,这是一个同步操作,并挂起UI,因此您的UI会出现延迟。因此,您应该显式地使用.prepareAsync()
,以避免上述示例中提供的这种延迟