我有一个创建、播放和处理媒体播放器(只是音频)的服务,但我在主要活动中有一个搜索栏,我想自然地显示音频文件的进度并允许用户搜索到各个位置。
我花了很长时间才弄清楚:将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么?
我有一个创建、播放和处理媒体播放器(只是音频)的服务,但我在主要活动中有一个搜索栏,我想自然地显示音频文件的进度并允许用户搜索到各个位置。
我花了很长时间才弄清楚:将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么?
这是我将如何做到这一点:
绑定到播放音频的服务。服务器返回的接口onBind
应具有getCurrentPos()
和getDuration()
功能。
在您的 ActivityonCreate
绑定到服务中
onResume
函数中开始更新。Handler
postDelayed
onPause
发布的所有回调。postDelayed
postDelayed
runboundService.getCurrentPos()
并boundService.getDuration()
适当地更新 seekbar。总而言之,您应该使用服务绑定和处理程序进行定期更新。
Handler
定期更新阅读此问题:Repeat a task with a time delay?你也可以试试Square 的 Otto
你只需要创建一个类SeekBarSyncEvent.java
,把你需要的参数放在那里:
然后,您可以通过在您的服务的方法中使用您的SeekBarSyncEvent
类从总线发布一个事件来初始化活动中的搜索栏。onPrepared()
最后@Subscribe
在您的活动上创建方法,以便它调用您的seekBarUpdate()
方法。
这应该可以正常工作,美观且易于维护。
试着看看MediaController看看它是否对你有用。