0

我开发了一个同时播放音频和视频歌曲的音乐播放器应用程序,它具有播放、暂停、显示歌曲进度的进度条等功能,现在从 MusicPlayerActivity 返回时,音乐在后台运行,现在我想去这个 MusicPlayerActivity 来自另一个活动来暂停歌曲,我使用 Intent 进行切换,但我没有得到进度条的值,即播放了多少歌曲,虽然歌曲正在后台播放。请任何人帮助我,如何存储歌曲的持续时间和 UI 的状态。请提供一些帮助或教程或链接。提前致谢。

4

2 回答 2

0

在我的应用程序中,我将音乐播放器实现为后台服务。在该服务中,我每 500 毫秒发送一次广播消息,其中我提供有关当前位置的信息。当播放器暂停时,我停止发送消息。并且在我注册收听此消息的每项活动中,我都可以更新可见播放器。对于发送消息,我使用在后台线程上运行的处理程序。

private Runnable mUpdateProgressRunnable = new Runnable() {

        @Override
        public void run() {
            if (mMediaPlayer != null && !mSeeking) {
                int duration = mMediaPlayer.getDuration();
                int currentPosition = mMediaPlayer.getCurrentPosition();
                Bundle params = new Bundle();
                params.putInt(Broadcaster.P_PLAYER_DURATION, duration);
                params.putInt(Broadcaster.P_PLAYER_POSITION, currentPosition);
                getRferl().getBroadcaster().send(Broadcaster.E_PLAYER_CURRENT_POSITION, params);
                mUpdateProgressHandler.postDelayed(this, 500);
            }
        }
    };

Rferl 是我的应用程序,Broadcaster 只是 LocalBroadcastManager 的包装器

于 2012-08-25T14:21:40.200 回答