我正在Android中开发一个MediaPlayer,到目前为止,我已经在棒棒糖,LG G3,S5等上测试了我的应用程序。 当我在pre L设备(S4 mini运行4.4.2)上运行我的应用程序时,我发现了一个问题。当音乐开始时,因为我从一个URL播放它开始播放2-3秒并停止很短的时间并且在它再次播放之后等等。
再次阅读android.developers的主要教程,我发现我可以阻止主UI,所以我需要在服务中运行媒体播放器。
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();
}
}
如果这是解决方案,我真的不明白我该怎么做,我的媒体播放器是在我的活动thread
中运行的。
答案 0 :(得分:0)
我在设置dataSource并准备之后通过调用.prepareAsync()方法解决了我的问题。