Android MediaPlayer在pre-L设备上保持冻结状态
我正在用android开发一款MediaPlayer,到目前为止,我已经在棒棒糖、LG G3、S5等平台上测试了我的应用程序。 当我在pre L设备(运行4.4.2的S4 mini)上运行我的应用程序时,我发现了一个问题。当音乐开始播放时,因为我从一个URL播放它,它开始播放大约2-3秒,然后在很短的时间内停止播放,然后再播放,以此类推 再次阅读android.developers的主要教程,我发现我可以阻止主UI,因此我需要在服务中运行媒体播放器Android MediaPlayer在pre-L设备上保持冻结状态,android,Android,我正在用android开发一款MediaPlayer,到目前为止,我已经在棒棒糖、LG G3、S5等平台上测试了我的应用程序。 当我在pre L设备(运行4.4.2的S4 mini)上运行我的应用程序时,我发现了一个问题。当音乐开始播放时,因为我从一个URL播放它,它开始播放大约2-3秒,然后在很短的时间内停止播放,然后再播放,以此类推 再次阅读android.developers的主要教程,我发现我可以阻止主UI,因此我需要在服务中运行媒体播放器 public class MyService
public class MyService extends Service implements MediaPlayer.OnPreparedListener {
private static final String ACTION_PLAY = "com.example.action.PLAY";
MediaPlayer mMediaPlayer = null;
public int onStartCommand(Intent intent, int flags, int startId) {
...
if (intent.getAction().equals(ACTION_PLAY)) {
mMediaPlayer = ... // initialize it here
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.prepareAsync(); // prepare async to not block main thread
}
}
/** Called when MediaPlayer is ready */
public void onPrepared(MediaPlayer player) {
player.start();
}
}
如果这是一个解决方案,我真的不知道该怎么做,我的媒体播放器现在在我的活动中以
线程运行。在设置dataSource和prepare之后,我通过调用.prepareAsync()方法解决了我的问题。假设您已经将AsyncTask子类化,那么应该有一个@Override方法'doInBackground()“设计用于在不同线程上处理其工作。从那里开始你的球员。如果你不知道我在说什么,让我知道我将发布一个示例代码是的,请发布一个示例,将非常好。