1

我正在使用MediaControllerandMediaPlayer一起在 Android 中创建一个简单的音频播放器,取自我在此站点上找到的示例。

但是,经过大量搜索后,我找不到解决问题的方法:播放音乐时进度/搜索栏不会刷新。它只是在按下某些东西时自我更新MediaController(播放/暂停、前进等)。

我没有得到任何简单的解决方法?

注意: MyMediaController是在 中声明的XML,我的MediaController.MediaPlayerControl方法只是使用MediaPlayer该类。

4

2 回答 2

1

Mediaplayer provides a method getCurrentPosition() you can put this in a thread to continously update the progressbar.

    public int getCurrentPositionInt(){
        if (player != null)
            return player.getCurrentPosition();
        else
            return 0;
    }

Create a Thread or CountDownTimer to continuously update the seekbar :

seekBar.setMax((getCurrentPositionInt() / 1000));

OR

MediaController.MediaPlayerControl mp;
mp.seekTo((getCurrentPositionInt() / 1000)) 
于 2012-08-17T20:05:09.923 回答
0

对不起我的英语!

您在音乐播放器准备好之前显示控制器。准备好后,您需要从控制器通知您的活动。

public void onPrepared(MediaPlayer mp) {
                    mp.start();
                    Intent onPreparedIntent = new Intent("MP_READY");
                    LocalBroadcastManager.getInstance(activity).sendBroadcast(onPreparedIntent);
                }

然后您需要在您的活动中创建一个 BroadcastReceiver 并覆盖他的 onReceive 方法以显示控制器。

private BroadcastReceiver mpReadyReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context c, Intent i) {            
        controller.show(0);
    }
};

您还需要在活动的 onResume() 中注册接收者。

protected void onResume() {
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(mpReadyReceiver,
            new IntentFilter("MP_READY"));
}

现在尝试仅在必要时调用 controller.show。

注意不要创建多个控制器实例

于 2019-10-01T02:41:36.893 回答