summaryrefslogtreecommitdiffstats
path: root/media/java
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2011-09-13 17:48:43 -0700
committerJean-Michel Trivi <jmtrivi@google.com>2011-09-13 19:27:20 -0700
commit6e920e6dac11c3ebf6c0c19402934834e9e491bf (patch)
tree2abb48550aaed544e9c997842e66ff8f20cbcd17 /media/java
parent92bda84b11ba2aec98036313784444d9f5aebc9a (diff)
downloadframeworks_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.java56
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,