首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不同的媒体控制器与传输控制Android

不同的媒体控制器与传输控制Android
EN

Stack Overflow用户
提问于 2018-03-12 11:32:10
回答 1查看 1.7K关注 0票数 1

在处理MediaPlayer和MediaSession类时,我正在尝试理解这两个Android结构实际上是什么,以及它们是如何工作的,特别是传输控制。

从关于MediaSession的官方文档来看,它

允许与媒体控制器、音量键、媒体按钮和传输控件进行交互。

据我所知,媒体按钮是指设备上的实际物理按钮(如果存在)或ex。在蓝牙耳机上。音量键是显而易见的。

当谈到媒体控制器时,我想我设法弄明白了它指的是一个特定的视图,具有播放/暂停以及跳过下一步/上一步等按钮的FrameView。但是传输控制到底是什么,可以/应该在哪里使用它们,以及如何在代码中实现它们?

提前感谢您的任何答复!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 17:59:37

为了供我自己或其他人将来参考,MediaPlayer本质上类似于立体声播放器的内部机制,并直接控制声音回放,“内部”。它确实有一些函数,比如play()、pause()、skipToNext()等。

当您想要创建一个音乐应用程序时,您通常会实现一个客户端-服务模型,应用程序接口是您的客户端(在主UI线程中),服务将播放音乐(也在后台)。谷歌所做的是实现了一个专门针对音乐和视频的客户服务模型,即MediaSession(Compat).它有自己的类型的服务,会话状态(当你想要有通知,Android Wear或Auto,这样他们就可以知道应用程序是正在播放还是暂停,可以获得曲目信息和专辑图像等,以便所有这些平台上的一切都很好地同步),以及MediaController和它的回调,需要为不同的功能实现。

它的一个选项是getTransportControls(),,这本质上是当您按下前面提到的立体声播放器上的play()、pause()等按钮时发生的事情的高级表示。对于其中的每一个,您都可以@重写它们各自的onPlay()、onPause()回调方法,以便在控制音乐的MediaPlayer对象上执行您想要的确切功能。在这里,您将调用MediaPlayer.play()函数,以及设置MediaSession的回放状态,可能还会更新通知等。

至于其他按键,音量键实际上就是音量键,而媒体按键则是您可能拥有的物理按键(蓝牙耳机、带播放按钮的耳机等)。你可以设置你的应用程序,这样它就可以识别和使用它们。

对于任何有兴趣更好地了解这一点的人来说,下面是我的应用程序项目的repo。虽然它远不是一个功能齐全、没有bug的应用程序,但它确实实现了MediaSession和服务,以及相当完美的通知和MediaButton控件。

https://github.com/RockBoyEmy/GESMediaPlayer

也感谢@pantos27的帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49227794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档