我有一个创建,播放和处理媒体播放器(只是音频)的服务,但我在主要活动中有一个我想要的搜索栏,自然地,显示音频文件的进度并允许用户寻求各种职位。
我有一段时间难以理解的是:将UI中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么?
答案 0 :(得分:4)
我将如何做到这一点:
绑定播放音频的服务。服务器在onBind
中返回的接口应具有getCurrentPos()
和getDuration()
功能。
在您的活动onCreate
绑定服务
onResume
使用Handler
的{{1}}功能中开始更新。postDelayed
停止通过onPause
功能发布的所有回调。postDelayed
运行postDelayed
和boundService.getCurrentPos()
的runnable中,并相应地更新搜索栏。总而言之,您应该使用服务绑定和处理程序来重复更新。
boundService.getDuration()
阅读此问题:Repeat a task with a time delay? 答案 1 :(得分:0)
尝试查看MediaController,了解它是否对您有用。
答案 2 :(得分:0)
您还可以尝试Otto from Square
您只需要创建一个类SeekBarSyncEvent.java
,将所需的参数放在那里:
然后,您可以使用SeekBarSyncEvent
课程中的onPrepared()
课程从您的服务中发布活动,从活动中初始化搜索栏。
最后在您的活动中创建@Subscribe
方法,以便调用seekBarUpdate()
方法。
这应该很好,很好,易于维护。