Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 媒体控制器与传输控制的区别_Android_Android Mediaplayer_Android Mediasession - Fatal编程技术网

Android 媒体控制器与传输控制的区别

Android 媒体控制器与传输控制的区别,android,android-mediaplayer,android-mediasession,Android,Android Mediaplayer,Android Mediasession,我试图理解这两个Android构造实际上是什么,以及它们是如何工作的,特别是在处理MediaPlayer和MediaSession类时的传输控制 从MediaSession的官方文档中可以看出 允许与媒体控制器、音量键、媒体按钮和传输控件进行交互 据我所知,媒体按钮指的是设备(如果存在)或蓝牙耳机上的实际物理按钮。音量键是显而易见的 说到媒体控制器,我想我已经设法弄清楚它指的是一个特定的视图,帧视图有播放/暂停以及跳过下一步/上一步等按钮。但是传输控件到底是什么,在哪里可以/应该使用它们,它们是

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

从MediaSession的官方文档中可以看出

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

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

说到媒体控制器,我想我已经设法弄清楚它指的是一个特定的视图,帧视图有播放/暂停以及跳过下一步/上一步等按钮。但是传输控件到底是什么,在哪里可以/应该使用它们,它们是如何在代码中实现的


提前感谢您的回答

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

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

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

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

对于任何有兴趣看到这更好的行动,下面是我的应用程序项目的回购协议。虽然它远不是一个功能齐全、没有bug的应用程序,但它确实实现了MediaSession和服务,以及通知和MediaButton控件,非常完美


还感谢@pantos27的帮助

传输控制媒体播放器,媒体控制器用于拦截媒体按钮。媒体控制器事件->传输控制操作它们不同的原因是,您可以通过媒体会话从应用程序中的order对象使用传输控制器object@pantos27谢谢你,你能给我指出任何类型的代码片段(甚至是最基本的动作)吗这会让我看到两者的用法吗?如果没有,没关系,谢谢你的回复