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>
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 handles
ACTION_MEDIA_BUTTON
:
<service android:name="com.example.android.MediaPlaybackService" > <intent-filter> <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </service>
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); }
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 | |
---|---|
From
class
android.content.BroadcastReceiver
| |
From
class
java.lang.Object
|
Public constructors
Public methods
buildMediaButtonPendingIntent
PendingIntent buildMediaButtonPendingIntent (Context context, ComponentName mbrComponent, long action)
Creates a broadcast pending intent that will send a media button event. The action
will be translated to the appropriate KeyEvent
, and sent to the provided media
button receiver via the pending intent. The action
should be one of the following:
ACTION_PLAY
ACTION_PAUSE
ACTION_SKIP_TO_NEXT
ACTION_SKIP_TO_PREVIOUS
ACTION_STOP
ACTION_FAST_FORWARD
ACTION_REWIND
ACTION_PLAY_PAUSE
Parameters | |
---|---|
context |
Context : The context of the application. |
mbrComponent |
ComponentName : The full component name of a media button receiver where you want to send
this intent. |
action |
long : The action to be sent via the pending intent. |
Returns | |
---|---|
PendingIntent |
Created pending intent, or null if the given component name is null or the
action is unsupported/invalid.
|
buildMediaButtonPendingIntent
PendingIntent buildMediaButtonPendingIntent (Context context, long action)
Creates a broadcast pending intent that will send a media button event. The action
will be translated to the appropriate KeyEvent
, and it will be sent to the
registered media button receiver in the given context. The action
should be one of
the following:
ACTION_PLAY
ACTION_PAUSE
ACTION_SKIP_TO_NEXT
ACTION_SKIP_TO_PREVIOUS
ACTION_STOP
ACTION_FAST_FORWARD
ACTION_REWIND
ACTION_PLAY_PAUSE
Parameters | |
---|---|
context |
Context : The context of the application. |
action |
long : The action to be sent via the pending intent. |
Returns | |
---|---|
PendingIntent |
Created pending intent, or null if cannot find a unique registered media button
receiver or if the action is unsupported/invalid.
|
handleIntent
KeyEvent handleIntent (MediaSessionCompat mediaSessionCompat, Intent intent)
Extracts any available KeyEvent
from an ACTION_MEDIA_BUTTON
intent, passing it onto the MediaSessionCompat
using
dispatchMediaButtonEvent(KeyEvent)
, which in turn
will trigger callbacks to the MediaSessionCompat.Callback
registered via
setCallback(MediaSessionCompat.Callback)
.
Parameters | |
---|---|
mediaSessionCompat |
MediaSessionCompat : A MediaSessionCompat that has a
MediaSessionCompat.Callback set. |
intent |
Intent : The intent to parse. |
onReceive
void onReceive (Context context, Intent intent)
Parameters | |
---|---|
context |
Context |
intent |
Intent |
Interfaces
Classes
- MediaButtonReceiver
- MediaControllerCompat
- MediaControllerCompat.Callback
- MediaControllerCompat.PlaybackInfo
- MediaControllerCompat.TransportControls
- MediaSessionCompat
- MediaSessionCompat.Callback
- MediaSessionCompat.QueueItem
- MediaSessionCompat.Token
- ParcelableVolumeInfo
- PlaybackStateCompat
- PlaybackStateCompat.Builder
- PlaybackStateCompat.CustomAction
- PlaybackStateCompat.CustomAction.Builder