diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2011-09-13 17:48:43 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2011-09-13 19:27:20 -0700 |
commit | 6e920e6dac11c3ebf6c0c19402934834e9e491bf (patch) | |
tree | 2abb48550aaed544e9c997842e66ff8f20cbcd17 /media/java | |
parent | 92bda84b11ba2aec98036313784444d9f5aebc9a (diff) | |
download | frameworks_base-6e920e6dac11c3ebf6c0c19402934834e9e491bf.zip frameworks_base-6e920e6dac11c3ebf6c0c19402934834e9e491bf.tar.gz frameworks_base-6e920e6dac11c3ebf6c0c19402934834e9e491bf.tar.bz2 |
Bug 5300223 RemoteControlClient uses PendingIntent
API change so RemoteControlClient is given a PendingIntent in
its constructor, which will be used for receiving media button
events from remote controls.
Leave the old constructors (but hidden) to not break
current functionality until the AudioManager and AudioService
implementations have been updated.
Change-Id: Ifa12c8036c948931adc386a827dce2936788e1cd
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/RemoteControlClient.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/media/java/android/media/RemoteControlClient.java b/media/java/android/media/RemoteControlClient.java index daa25e0..f66f1b0 100644 --- a/media/java/android/media/RemoteControlClient.java +++ b/media/java/android/media/RemoteControlClient.java @@ -16,7 +16,9 @@ package android.media; +import android.app.PendingIntent; import android.content.ComponentName; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; @@ -203,6 +205,8 @@ public class RemoteControlClient public final static int FLAG_INFORMATION_REQUEST_ALBUM_ART = 1 << 3; /** + * @hide + * TODO remove after modifying known (internal) media apps using this API * Class constructor. * @param mediaButtonEventReceiver The receiver for the media button events. It needs to have * been registered with {@link AudioManager#registerMediaButtonEventReceiver(ComponentName)} @@ -226,6 +230,8 @@ public class RemoteControlClient } /** + * @hide + * TODO remove after modifying known (internal) media apps using this API * Class constructor for a remote control client whose internal event handling * happens on a user-provided Looper. * @param mediaButtonEventReceiver The receiver for the media button events. It needs to have @@ -242,6 +248,56 @@ public class RemoteControlClient mEventHandler = new EventHandler(this, looper); } + /** + * Class constructor. + * @param mediaButtonIntent The intent that will be sent for the media button events sent + * by remote controls. + * This intent needs to have been constructed with the {@link Intent#ACTION_MEDIA_BUTTON} + * action, and have a component that will handle the intent (set with + * {@link Intent#setComponent(ComponentName)}) registered with + * {@link AudioManager#registerMediaButtonEventReceiver(ComponentName)} + * before this new RemoteControlClient can itself be registered with + * {@link AudioManager#registerRemoteControlClient(RemoteControlClient)}. + * @see AudioManager#registerMediaButtonEventReceiver(ComponentName) + * @see AudioManager#registerRemoteControlClient(RemoteControlClient) + */ + public RemoteControlClient(PendingIntent mediaButtonIntent) { + // TODO implement using PendingIntent instead of ComponentName + mRcEventReceiver = null; + + Looper looper; + if ((looper = Looper.myLooper()) != null) { + mEventHandler = new EventHandler(this, looper); + } else if ((looper = Looper.getMainLooper()) != null) { + mEventHandler = new EventHandler(this, looper); + } else { + mEventHandler = null; + Log.e(TAG, "RemoteControlClient() couldn't find main application thread"); + } + } + + /** + * Class constructor for a remote control client whose internal event handling + * happens on a user-provided Looper. + * @param mediaButtonIntent The intent that will be sent for the media button events sent + * by remote controls. + * This intent needs to have been constructed with the {@link Intent#ACTION_MEDIA_BUTTON} + * action, and have a component that will handle the intent (set with + * {@link Intent#setComponent(ComponentName)}) registered with + * {@link AudioManager#registerMediaButtonEventReceiver(ComponentName)} + * before this new RemoteControlClient can itself be registered with + * {@link AudioManager#registerRemoteControlClient(RemoteControlClient)}. + * @param looper The Looper running the event loop. + * @see AudioManager#registerMediaButtonEventReceiver(ComponentName) + * @see AudioManager#registerRemoteControlClient(RemoteControlClient) + */ + public RemoteControlClient(PendingIntent mediaButtonIntent, Looper looper) { + // TODO implement using PendingIntent instead of ComponentName + mRcEventReceiver = null; + + mEventHandler = new EventHandler(this, looper); + } + private static final int[] METADATA_KEYS_TYPE_STRING = { MediaMetadataRetriever.METADATA_KEY_ALBUM, MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, |