Merge "Make retrieving remote control client go through binder interface"
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index e7a306b..ed6d87e 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -1757,6 +1757,26 @@
/**
* @hide
+ * Returns the current remote control client.
+ * @param rcClientId the counter value that matches the extra
+ * {@link AudioManager#EXTRA_REMOTE_CONTROL_CLIENT} in the
+ * {@link AudioManager#REMOTE_CONTROL_CLIENT_CHANGED} event
+ * @return the current IRemoteControlClient from which information to display on the remote
+ * control can be retrieved, or null if rcClientId doesn't match the current generation
+ * counter.
+ */
+ public IRemoteControlClient getRemoteControlClient(int rcClientId) {
+ IAudioService service = getService();
+ try {
+ return service.getRemoteControlClient(rcClientId);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Dead object in getRemoteControlClient "+e);
+ return null;
+ }
+ }
+
+ /**
+ * @hide
* Definitions of constants to be used in {@link android.media.IRemoteControlClient}.
*/
public final class RemoteControlParameters {
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index bf1585d..cb56bc6 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -2845,20 +2845,20 @@
}
}
- private final static Object mCurrentRcLock = new Object();
+ private final Object mCurrentRcLock = new Object();
/**
* The one remote control client to be polled for display information.
* This object is never null, but its reference might.
* Access protected by mCurrentRcLock.
*/
- private static SoftReference<IRemoteControlClient> mCurrentRcClientRef =
+ private SoftReference<IRemoteControlClient> mCurrentRcClientRef =
new SoftReference<IRemoteControlClient>(null);
/**
* A monotonically increasing generation counter for mCurrentRcClientRef.
* Only accessed with a lock on mCurrentRcLock.
*/
- private static int mCurrentRcClientGen = 0;
+ private int mCurrentRcClientGen = 0;
/**
* Returns the current remote control client.
@@ -2869,7 +2869,7 @@
* control can be retrieved, or null if rcClientId doesn't match the current generation
* counter.
*/
- public static IRemoteControlClient getRemoteControlClient(int rcClientId) {
+ public IRemoteControlClient getRemoteControlClient(int rcClientId) {
synchronized(mCurrentRcLock) {
if (rcClientId == mCurrentRcClientGen) {
return mCurrentRcClientRef.get();
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 9afe553..25b9a1b 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -93,6 +93,8 @@
void registerRemoteControlClient(in ComponentName eventReceiver,
in IRemoteControlClient rcClient, in String callingPackageName);
+ IRemoteControlClient getRemoteControlClient(in int rcClientId);
+
void notifyRemoteControlInformationChanged(in ComponentName eventReceiver);
void startBluetoothSco(IBinder cb);