我开发了一个播放音频和视频歌曲的音乐播放器应用程序,它具有播放,暂停,进度条等功能,显示歌曲的进度,现在从MusicPlayerActivity返回时,音乐在后台运行,现在我想要从另一个活动转到这个MusicPlayerActivity来暂停这首歌,我用Intent进行切换,但是我没有得到进度条的值,即播放了多少首歌,虽然歌曲是在后台播放的。请任何人帮助我,如何存储歌曲的持续时间和UI的状态。请提供一些帮助或教程或链接。提前致谢。
答案 0 :(得分:0)
尝试其中一些教程,他们都在其中使用进度条。
http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/ https://github.com/commonsguy/vidtry/blob/master/src/com/commonsware/android/vidtry/Player.java How do I use Android ProgressBar in determinate mode?
答案 1 :(得分:0)
在我的应用程序中,我将音乐播放器实现为后台服务。 在那项服务中,我每500ms发送一次广播消息,我提供有关当前位置的信息。当播放器暂停时,我停止发送消息。 在我注册的每个活动中都会收听此消息,因此我可以更新可见的播放器。 对于发送消息,我使用在后台线程上运行的处理程序。
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的包装器