5

我有一个创建、播放和处理媒体播放器(只是音频)的服务,但我在主要活动中有一个搜索栏,我想自然地显示音频文件的进度并允许用户搜索到各个位置。

我花了很长时间才弄清楚:将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么?

4

3 回答 3

4

这是我将如何做到这一点:

  1. 绑定到播放音频的服务。服务器返回的接口onBind应具有getCurrentPos()getDuration()功能。

  2. 在您的 ActivityonCreate绑定到服务中

  3. 在您的 Activity 的useonResume函数中开始更新。HandlerpostDelayed
  4. 在您的活动中停止通过函数onPause 发布的所有回调。postDelayed
  5. 在 runnable 中传递给postDelayedrunboundService.getCurrentPos()boundService.getDuration()适当地更新 seekbar。

总而言之,您应该使用服务绑定和处理程序进行定期更新。

  1. 对于绑定服务,请阅读“绑定服务”文档(本地绑定服务在您的场景中应该足够了)。
  2. 如何用户Handler定期更新阅读此问题:Repeat a task with a time delay?
于 2011-06-06T18:05:11.050 回答
0

你也可以试试Square 的 Otto

你只需要创建一个类SeekBarSyncEvent.java,把你需要的参数放在那里:

  • 进度
  • 持续时间
  • 来自用户的布尔值
  • 随便你想要什么

然后,您可以通过在您的服务的方法中使用您的SeekBarSyncEvent类从总线发布一个事件来初始化活动中的搜索栏。onPrepared()

最后@Subscribe在您的活动上创建方法,以便它调用您的seekBarUpdate()方法。

这应该可以正常工作,美观且易于维护。

于 2013-12-20T10:14:28.597 回答
0

试着看看MediaController看看它是否对你有用。

于 2011-06-06T18:04:36.267 回答