如何将媒体播放器控件实现为跨活动的页脚

时间:2014-01-24 17:44:34

标签: android

我正在制作音乐播放器应用。 我的要求之一是在屏幕底部显示媒体控制栏(带进度指示器和停止按钮)。 即使用户在活动之间导航,此栏也必须在整个应用程序中保留,而音乐在后台播放。

我想就如何最好地实现这一点提出一些建议,这是我找到一个解决方案,以便在所有活动中保持此控制栏可见的关键挑战,当音乐播放时,屏幕上方“漂浮”。

我目前正在使用MediaPlayer通过Android服务播放音乐,因此该栏必须将其状态与服务同步。

在做了一些研究之后,我发现了一些关于我能做什么的提示,但似乎没有一个是理想的:

  • 使用Android通知。不是我的选择,因为我需要栏位于屏幕的底部。
  • 让我的整个应用程序成为一个单独的活动,并大量使用碎片。控制栏只是与服务同步的活动的页脚视图(通过本地BroadcastReceiver或其他回调方法)。我当前的所有活动都将转换为'shell'活动中的片段,我需要管理片段backstack。 我只是不喜欢这个选项,它看起来很乱,而且很多重新分解工作。我可以看到的缺点是,当我运行'adb shell dumpsys activity'并查看正在运行的活动时,我将不再获得任何有用的调试信息。也不确定我是否能够使用片段,以防我需要在屏幕之间共享组件..(我没有检查过我可以在片段的布局中使用片段,但我对此表示怀疑)。

我想到的一个选项,但它并不优雅,因为这个控制栏是我将在我的所有活动中包含的片段。当活动开始时,绑定到服务以获取最新状态,然后使用回调机制获得定期更新(通过BroadcastReceiver)。

有更好的/其他想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

大多数非侵入性的方式是你描述的方式。或者检查:

How to implement a popup overlay that can be displayed over any other app in Android