音乐显示播放进度问题
在写一个音乐播放器,在一个Service类中利用MediaPlayer进行音乐的播放,一个Activity中控制界面,现在想在播放时在Activity上的一个SeekBar能够显示音乐的播放进度,现在的问题是,音乐播放是在Service中,所以获得歌曲播放进度是在Service中获得,要把进度传递给Activity的SeekBar显示进度,而进度是要不断更新的,难道Service中歌曲进度更新一次我就要startActivity吗?行不通吧?用BroadcastReceiver能OK么?希望大家帮帮我!
[解决办法]
恩 , 可以的 。
LZ可以在Service里面开一个线程 , 专门负责SEEKBAR的管理 ,每隔一秒sendBroadcast一次 , 可以利用Intent来抓你写的那个BroadcastReceiver , 并且抓的时候你还可以把歌曲进度的一些信息写到Intent里面 。
那个广播直接写到你布局SEEKBAR的那个Activity里面就行了。
[解决办法]
[解决办法]
如果只是为了实现更新SeekBar的功能,其实不用BroadcastReceiver 也可以,把service类中的MediaPlayer变量声明为静态public成员,在activity中直接调用
MusicService.mMediaPlayer.getCurrentPosition();
和
MusicService.mMediaPlayer.getDuration();
取得当前播放的位置,再设置SeekBar的进度就可以了,新开一个线程,设置一个1s的延迟,循环更新进度就可以了。