summaryrefslogtreecommitdiffstats
path: root/media/java/android/media/session/MediaController.java
diff options
context:
space:
mode:
Diffstat (limited to 'media/java/android/media/session/MediaController.java')
-rw-r--r--media/java/android/media/session/MediaController.java62
1 files changed, 51 insertions, 11 deletions
diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java
index 89c61c8..382579c 100644
--- a/media/java/android/media/session/MediaController.java
+++ b/media/java/android/media/session/MediaController.java
@@ -18,6 +18,8 @@ package android.media.session;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.PendingIntent;
+import android.content.Context;
import android.content.pm.ParceledListSlice;
import android.media.AudioAttributes;
import android.media.AudioManager;
@@ -65,12 +67,14 @@ public final class MediaController {
private final ISessionController mSessionBinder;
private final MediaSession.Token mToken;
+ private final Context mContext;
private final CallbackStub mCbStub = new CallbackStub(this);
private final ArrayList<MessageHandler> mCallbacks = new ArrayList<MessageHandler>();
private final Object mLock = new Object();
private boolean mCbRegistered = false;
- private MediaSessionInfo mInfo;
+ private String mPackageName;
+ private String mTag;
private final TransportControls mTransportControls;
@@ -80,22 +84,27 @@ public final class MediaController {
*
* @hide
*/
- public MediaController(ISessionController sessionBinder) {
+ public MediaController(Context context, ISessionController sessionBinder) {
if (sessionBinder == null) {
throw new IllegalArgumentException("Session token cannot be null");
}
+ if (context == null) {
+ throw new IllegalArgumentException("Context cannot be null");
+ }
mSessionBinder = sessionBinder;
mTransportControls = new TransportControls();
mToken = new MediaSession.Token(sessionBinder);
+ mContext = context;
}
/**
* Create a new MediaController from a session's token.
*
+ * @param context The caller's context.
* @param token The token for the session.
*/
- public MediaController(@NonNull MediaSession.Token token) {
- this(token.getBinder());
+ public MediaController(@NonNull Context context, @NonNull MediaSession.Token token) {
+ this(context, token.getBinder());
}
/**
@@ -241,6 +250,21 @@ public final class MediaController {
}
/**
+ * Get an intent for launching UI associated with this session if one
+ * exists.
+ *
+ * @return A {@link PendingIntent} to launch UI or null.
+ */
+ public @Nullable PendingIntent getLaunchActivity() {
+ try {
+ return mSessionBinder.getLaunchPendingIntent();
+ } catch (RemoteException e) {
+ Log.wtf(TAG, "Error calling getPendingIntent.", e);
+ }
+ return null;
+ }
+
+ /**
* Get the token for the session this is connected to.
*
* @return The token for the connected session.
@@ -355,20 +379,36 @@ public final class MediaController {
}
/**
- * Get the info for the session this controller is connected to.
+ * Get the session owner's package name.
+ *
+ * @return The package name of of the session owner.
+ */
+ public String getPackageName() {
+ if (mPackageName == null) {
+ try {
+ mPackageName = mSessionBinder.getPackageName();
+ } catch (RemoteException e) {
+ Log.d(TAG, "Dead object in getPackageName.", e);
+ }
+ }
+ return mPackageName;
+ }
+
+ /**
+ * Get the session's tag for debugging purposes.
*
- * @return The session info for the connected session.
+ * @return The session's tag.
* @hide
*/
- public MediaSessionInfo getSessionInfo() {
- if (mInfo == null) {
+ public String getTag() {
+ if (mTag == null) {
try {
- mInfo = mSessionBinder.getSessionInfo();
+ mTag = mSessionBinder.getTag();
} catch (RemoteException e) {
- Log.e(TAG, "Error in getSessionInfo.", e);
+ Log.d(TAG, "Dead object in getTag.", e);
}
}
- return mInfo;
+ return mTag;
}
/*