1

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

MediaSession 文档声明它适用于媒体按钮和传输控件。这是否仅包括设备上的物理按钮,或者您是否可以实现触发 MediaSession 回调的 UI 按钮?

4

1 回答 1

1

确实如此。

首先你需要一个监听媒体按钮事件的服务,所以像这样从你的清单中声明它

     <service android:name="com.example.android.MediaPlaybackService" >
   <intent-filter>
     <action android:name="android.intent.action.MEDIA_BUTTON" />
   </intent-filter>
 </service>

在该服务中,您应该初始化一个MediaSessionCompat对象并将您收到的意图连同它一起传递给类似的MediaButtonReceiver东西

    private MediaSessionCompat mMediaSessionCompat = ...;

 public int onStartCommand(Intent intent, int flags, int startId) {
   MediaButtonReceiver.handleIntent(mMediaSessionCompat, intent);
   return super.onStartCommand(intent, flags, startId);
 }

您可能还想创建一个实例MediaSessionCompat.Callback并将其设置为

setCallback()

这是您实际控制正在播放的媒体的地方 您还可以通过您自己的 UI 使用MediaControllerCompat使用它的getTransportControls()方法的实例来调用这些传输控件

更多在这里 MediaButtonReceiver

于 2016-10-17T20:52:16.383 回答