繁体   English   中英

媒体播放器和服务类

[英]mediaplayer and service class

我有一个运行我的媒体播放器的服务类,它工作正常,我的唯一问题是,当我的服务创建媒体播放器时,它会暂停UI(例如挂起)或其他操作,直到媒体播放器完成了自我创建。 我想发生的是,当我按下播放按钮时,会出现一则敬酒消息并显示“正在连接”,而当媒体播放器准备就绪时,会显示一条敬酒消息,显示“已连接”,那么媒体播放器就会以某种方式开始播放音乐,但我的敬酒没有显示,如果迟到..

这是我的服务代码:

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();
}
  }

更换

      player = MediaPlayer.create(this, source);

      player = new MediaPlayer();
      player.setDataSource(source);
      player.prepareAsync();

MediaPlayer.create调用prepare()方法来准备MediaPlayer,它是一个同步操作并挂起UI,因此您会遇到UI延迟的情况。 因此,您应该显式使用.prepareAsync()来避免上述示例中提供的这种延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM