【问题标题】:Music player state saving in androidandroid中的音乐播放器状态保存
【发布时间】:2012-08-25 14:05:38
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:
    【解决方案2】:

    在我的应用程序中,我将音乐播放器实现为后台服务。 在该服务中,我每 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 的包装器

    【讨论】:

    • 感谢回答我的问题,但我没有实现任何服务,我已经使用 Handler 不断更新进度条,如何在重新创建活动时获取此处理程序对象,因此我还需要存储MediaPlayer 对象?
    • 这就是为什么我实现了包含媒体播放器的服务,并且每个活动都可以收听广播并更新进度条的状态。对不起,我不能帮助你,我没有以这种方式实现媒体播放器。我尽量不在活动中持有共享对象,所以我几乎没有经验必须正确地重新创建它。为此,我使用应用程序对象或后台服务。这对我来说更容易:)
    • 感谢您的回复@pcu,您能否提供此类实现的任何源代码,我的电子邮件ID 是-dhiraj.linkites@gmail.com
    猜你喜欢
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多