安卓媒体播放器的进度条

5

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

我现在遇到的问题是:将UI中的拖动条与服务中的媒体播放器连接起来,什么是最好或正确的方法?

3个回答

4
以下是我的做法:
  1. 绑定播放音频的服务。服务器在 onBind 中返回的接口应该具有 getCurrentPos()getDuration() 函数。

  2. 在您的 Activity 的 onCreate 中绑定服务

  3. 在您的 Activity 的 onResume 中,使用 HandlerpostDelayed 函数开始更新。
  4. 在您的 Activity 的 onPause 中,停止通过 postDelayed 函数发布的所有回调。
  5. 在传递给 postDelayed 的可运行对象中,运行 boundService.getCurrentPos()boundService.getDuration() 并相应地更新 seekbar。

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

  1. 有关绑定服务的信息,请阅读“绑定服务”文档(本地绑定服务在您的情况下应该足够)。
  2. 如何使用 Handler 进行定期更新,请阅读此问题:重复带有时间延迟的任务?

0

0

你也可以尝试来自Square的Otto

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

  • int 进度
  • int 持续时间
  • boolean 是否来自用户
  • 其他需要的参数

然后你可以通过在服务的onPrepared()方法中发布一个包含你的SeekBarSyncEvent类的事件,从活动中初始化seekbar。

最后,在你的活动中创建@Subscribe方法,使其调用你的seekBarUpdate()方法。

这样应该可以正常工作,易于维护。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接