belongs to Maven artifact com.android.support:support-media-compat:28.0.0-alpha1
MediaButtonReceiver
public
class
MediaButtonReceiver
extends BroadcastReceiver
java.lang.Object | ||
↳ | android.content.BroadcastReceiver | |
↳ | android.support.v4.media.session.MediaButtonReceiver |
A media button receiver receives and helps translate hardware media playback buttons, such as those found on wired and wireless headsets, into the appropriate callbacks in your app.
You can add this MediaButtonReceiver to your app by adding it directly to your AndroidManifest.xml:<receiver android:name="android.support.v4.media.session.MediaButtonReceiver" > <intent-filter> <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver>This class assumes you have a
Service
in your app that controls media playback via a
MediaSessionCompat
. Once a key event is received by MediaButtonReceiver, this class tries
to find a Service
that can handle ACTION_MEDIA_BUTTON
, and a
MediaBrowserServiceCompat
in turn. If an appropriate service is found, this class
forwards the key event to the service. If neither is available or more than one valid
service/media browser service is found, an IllegalStateException
will be thrown. Thus,
your app should have one of the following services to get a key event properly.
Service Handling ACTION_MEDIA_BUTTON
A service can receive a key event by including an intent filter that handlesACTION_MEDIA_BUTTON
:
<service android:name="com.example.android.MediaPlaybackService" > <intent-filter> <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </service>Events can then be handled in
onStartCommand(Intent, int, int)
by calling
handleIntent(MediaSessionCompat, Intent)
, passing in your current
MediaSessionCompat
:
private MediaSessionCompat mMediaSessionCompat = ...; public int onStartCommand(Intent intent, int flags, int startId) { MediaButtonReceiver.handleIntent(mMediaSessionCompat, intent); return super.onStartCommand(intent, flags, startId); }This ensures that the correct callbacks to
MediaSessionCompat.Callback
will be triggered
based on the incoming KeyEvent
.
Note: Once the service is started, it must start to run in the foreground.
MediaBrowserService
If you already have aMediaBrowserServiceCompat
in your app, MediaButtonReceiver will
deliver the received key events to the MediaBrowserServiceCompat
by default. You can
handle them in your MediaSessionCompat.Callback
.
Summary
Public constructors | |
---|---|
MediaButtonReceiver()
|
Public methods | |
---|---|
static
PendingIntent
|
buildMediaButtonPendingIntent(Context context, ComponentName mbrComponent, long action)
Creates a broadcast pending intent that will send a media button event. |
static
PendingIntent
|
buildMediaButtonPendingIntent(Context context, long action)
Creates a broadcast pending intent that will send a media button event. |
static
KeyEvent
|
handleIntent(MediaSessionCompat mediaSessionCompat, Intent intent)
Extracts any available |
void
|
onReceive(Context context, Intent intent)
|
Inherited methods | |
---|---|
![]()
android.content.BroadcastReceiver
|