MediaPlayer在pre L设备上保持冻结状态

时间:2015-03-28 13:10:47

标签: android

我正在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中运行的。

1 个答案:

答案 0 :(得分:0)

我在设置dataSource并准备之后通过调用.prepareAsync()方法解决了我的问题。