Android媒体播放器搜索栏

时间:2011-06-06 17:45:31

标签: android android-service android-mediaplayer android-seekbar

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

我有一段时间难以理解的是:将UI中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么?

3 个答案:

答案 0 :(得分:4)

我将如何做到这一点:

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

  2. 在您的活动onCreate绑定服务

  3. 在您的活动的onResume使用Handler的{​​{1}}功能中开始更新。
  4. 在您的活动中postDelayed停止通过onPause功能发布的所有回调。
  5. 在传递给postDelayed运行postDelayedboundService.getCurrentPos()的runnable中,并相应地更新搜索栏。
  6. 总而言之,您应该使用服务绑定和处理程序来重复更新。

    1. 对于绑定服务,请阅读"Bound services"文档(在您的方案中,本地有界服务应该足够了。)
    2. 如何定期更新用户boundService.getDuration()阅读此问题:Repeat a task with a time delay?

答案 1 :(得分:0)

尝试查看MediaController,了解它是否对您有用。

答案 2 :(得分:0)

您还可以尝试Otto from Square

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

  • int progress
  • int duration
  • boolean fromUser
  • 无论你需要什么

然后,您可以使用SeekBarSyncEvent课程中的onPrepared()课程从您的服务中发布活动,从活动中初始化搜索栏。

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

这应该很好,很好,易于维护。