允许与媒体控制器、音量键、媒体按钮和传输控件进行交互。
MediaSession 文档声明它适用于媒体按钮和传输控件。这是否仅包括设备上的物理按钮,或者您是否可以实现触发 MediaSession 回调的 UI 按钮?
允许与媒体控制器、音量键、媒体按钮和传输控件进行交互。
MediaSession 文档声明它适用于媒体按钮和传输控件。这是否仅包括设备上的物理按钮,或者您是否可以实现触发 MediaSession 回调的 UI 按钮?
确实如此。
首先你需要一个监听媒体按钮事件的服务,所以像这样从你的清单中声明它
<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