Remove MediaSessionEngine.CallbackStub
This CL also removes SessionCallbackLink.CallbackStub class
from the system API list.
Bug: 123500993
Test: make update-api -j; make -j;
atest CtsMediaTestCases:android.media.cts.MediaSessionTest;
atest CtsMediaTestCases:android.media.cts.MediaControllerTest;
Change-Id: I59b4d4ce058c53c82d816152039c51b109f0c245
This commit is contained in:
@@ -3664,7 +3664,7 @@ package android.media.session {
|
||||
}
|
||||
|
||||
public final class MediaSessionEngine implements java.lang.AutoCloseable {
|
||||
ctor public MediaSessionEngine(@NonNull android.content.Context, @NonNull android.media.session.SessionLink, @NonNull android.media.session.SessionCallbackLink, @NonNull android.media.session.MediaSessionEngine.CallbackStub);
|
||||
ctor public MediaSessionEngine(@NonNull android.content.Context, @NonNull android.media.session.SessionLink, @NonNull android.media.session.SessionCallbackLink);
|
||||
method public void close();
|
||||
method public String getCallingPackage();
|
||||
method @NonNull public android.media.session.MediaController getController();
|
||||
@@ -3689,33 +3689,6 @@ package android.media.session {
|
||||
method public void setSessionActivity(@Nullable android.app.PendingIntent);
|
||||
}
|
||||
|
||||
public static final class MediaSessionEngine.CallbackStub {
|
||||
ctor public MediaSessionEngine.CallbackStub();
|
||||
method public void onAdjustVolume(String, int, int, android.media.session.ControllerCallbackLink, int);
|
||||
method public void onCommand(String, int, int, android.media.session.ControllerCallbackLink, String, android.os.Bundle, android.os.ResultReceiver);
|
||||
method public void onCustomAction(String, int, int, android.media.session.ControllerCallbackLink, String, android.os.Bundle);
|
||||
method public void onFastForward(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onMediaButton(String, int, int, android.content.Intent, int, android.os.ResultReceiver);
|
||||
method public void onMediaButtonFromController(String, int, int, android.media.session.ControllerCallbackLink, android.content.Intent);
|
||||
method public void onNext(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onPause(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onPlay(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onPlayFromMediaId(String, int, int, android.media.session.ControllerCallbackLink, String, android.os.Bundle);
|
||||
method public void onPlayFromSearch(String, int, int, android.media.session.ControllerCallbackLink, String, android.os.Bundle);
|
||||
method public void onPlayFromUri(String, int, int, android.media.session.ControllerCallbackLink, android.net.Uri, android.os.Bundle);
|
||||
method public void onPrepare(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onPrepareFromMediaId(String, int, int, android.media.session.ControllerCallbackLink, String, android.os.Bundle);
|
||||
method public void onPrepareFromSearch(String, int, int, android.media.session.ControllerCallbackLink, String, android.os.Bundle);
|
||||
method public void onPrepareFromUri(String, int, int, android.media.session.ControllerCallbackLink, android.net.Uri, android.os.Bundle);
|
||||
method public void onPrevious(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onRate(String, int, int, android.media.session.ControllerCallbackLink, android.media.Rating);
|
||||
method public void onRewind(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
method public void onSeekTo(String, int, int, android.media.session.ControllerCallbackLink, long);
|
||||
method public void onSetVolumeTo(String, int, int, android.media.session.ControllerCallbackLink, int);
|
||||
method public void onSkipToTrack(String, int, int, android.media.session.ControllerCallbackLink, long);
|
||||
method public void onStop(String, int, int, android.media.session.ControllerCallbackLink);
|
||||
}
|
||||
|
||||
public static interface MediaSessionEngine.MediaButtonEventDelegate {
|
||||
method public boolean onMediaButtonIntent(android.content.Intent);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ package android.media.session;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.UnsupportedAppUsage;
|
||||
import android.app.Activity;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
@@ -44,7 +43,6 @@ import android.util.Pair;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -60,10 +58,7 @@ public final class MediaSessionEngine implements AutoCloseable {
|
||||
private final MediaSession.Token mSessionToken;
|
||||
private final MediaController mController;
|
||||
private final SessionLink mSessionLink;
|
||||
private final SessionCallbackLink mCbLink;
|
||||
|
||||
// Do not change the name of mCallbackWrapper. Support lib accesses this by using reflection.
|
||||
@UnsupportedAppUsage
|
||||
private CallbackMessageHandler mCallbackHandler;
|
||||
private VolumeProvider mVolumeProvider;
|
||||
private PlaybackState mPlaybackState;
|
||||
@@ -78,14 +73,12 @@ public final class MediaSessionEngine implements AutoCloseable {
|
||||
*
|
||||
* @param context The context to use to create the session.
|
||||
* @param sessionLink A session link for the binder of MediaSessionRecord
|
||||
* @param cbStub A callback link that handles incoming command to {@link MediaSession.Callback}.
|
||||
*/
|
||||
public MediaSessionEngine(@NonNull Context context, @NonNull SessionLink sessionLink,
|
||||
@NonNull SessionCallbackLink cbLink, @NonNull CallbackStub cbStub) {
|
||||
@NonNull SessionCallbackLink cbLink) {
|
||||
mSessionLink = sessionLink;
|
||||
mCbLink = cbLink;
|
||||
|
||||
cbStub.setSessionImpl(this);
|
||||
cbLink.setSessionEngine(this);
|
||||
mSessionToken = new MediaSession.Token(mSessionLink.getController());
|
||||
mController = new MediaController(context, mSessionToken);
|
||||
}
|
||||
@@ -479,97 +472,97 @@ public final class MediaSessionEngine implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
private void dispatchPrepare(RemoteUserInfo caller) {
|
||||
void dispatchPrepare(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PREPARE, null, null);
|
||||
}
|
||||
|
||||
private void dispatchPrepareFromMediaId(RemoteUserInfo caller, String mediaId, Bundle extras) {
|
||||
void dispatchPrepareFromMediaId(RemoteUserInfo caller, String mediaId, Bundle extras) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PREPARE_MEDIA_ID, mediaId, extras);
|
||||
}
|
||||
|
||||
private void dispatchPrepareFromSearch(RemoteUserInfo caller, String query, Bundle extras) {
|
||||
void dispatchPrepareFromSearch(RemoteUserInfo caller, String query, Bundle extras) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PREPARE_SEARCH, query, extras);
|
||||
}
|
||||
|
||||
private void dispatchPrepareFromUri(RemoteUserInfo caller, Uri uri, Bundle extras) {
|
||||
void dispatchPrepareFromUri(RemoteUserInfo caller, Uri uri, Bundle extras) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PREPARE_URI, uri, extras);
|
||||
}
|
||||
|
||||
private void dispatchPlay(RemoteUserInfo caller) {
|
||||
void dispatchPlay(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PLAY, null, null);
|
||||
}
|
||||
|
||||
private void dispatchPlayFromMediaId(RemoteUserInfo caller, String mediaId, Bundle extras) {
|
||||
void dispatchPlayFromMediaId(RemoteUserInfo caller, String mediaId, Bundle extras) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PLAY_MEDIA_ID, mediaId, extras);
|
||||
}
|
||||
|
||||
private void dispatchPlayFromSearch(RemoteUserInfo caller, String query, Bundle extras) {
|
||||
void dispatchPlayFromSearch(RemoteUserInfo caller, String query, Bundle extras) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PLAY_SEARCH, query, extras);
|
||||
}
|
||||
|
||||
private void dispatchPlayFromUri(RemoteUserInfo caller, Uri uri, Bundle extras) {
|
||||
void dispatchPlayFromUri(RemoteUserInfo caller, Uri uri, Bundle extras) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PLAY_URI, uri, extras);
|
||||
}
|
||||
|
||||
private void dispatchSkipToItem(RemoteUserInfo caller, long id) {
|
||||
void dispatchSkipToItem(RemoteUserInfo caller, long id) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_SKIP_TO_ITEM, id, null);
|
||||
}
|
||||
|
||||
private void dispatchPause(RemoteUserInfo caller) {
|
||||
void dispatchPause(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PAUSE, null, null);
|
||||
}
|
||||
|
||||
private void dispatchStop(RemoteUserInfo caller) {
|
||||
void dispatchStop(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_STOP, null, null);
|
||||
}
|
||||
|
||||
private void dispatchNext(RemoteUserInfo caller) {
|
||||
void dispatchNext(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_NEXT, null, null);
|
||||
}
|
||||
|
||||
private void dispatchPrevious(RemoteUserInfo caller) {
|
||||
void dispatchPrevious(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_PREVIOUS, null, null);
|
||||
}
|
||||
|
||||
private void dispatchFastForward(RemoteUserInfo caller) {
|
||||
void dispatchFastForward(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_FAST_FORWARD, null, null);
|
||||
}
|
||||
|
||||
private void dispatchRewind(RemoteUserInfo caller) {
|
||||
void dispatchRewind(RemoteUserInfo caller) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_REWIND, null, null);
|
||||
}
|
||||
|
||||
private void dispatchSeekTo(RemoteUserInfo caller, long pos) {
|
||||
void dispatchSeekTo(RemoteUserInfo caller, long pos) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_SEEK_TO, pos, null);
|
||||
}
|
||||
|
||||
private void dispatchRate(RemoteUserInfo caller, Rating rating) {
|
||||
void dispatchRate(RemoteUserInfo caller, Rating rating) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_RATE, rating, null);
|
||||
}
|
||||
|
||||
private void dispatchCustomAction(RemoteUserInfo caller, String action, Bundle args) {
|
||||
void dispatchCustomAction(RemoteUserInfo caller, String action, Bundle args) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_CUSTOM_ACTION, action, args);
|
||||
}
|
||||
|
||||
private void dispatchMediaButton(RemoteUserInfo caller, Intent mediaButtonIntent) {
|
||||
void dispatchMediaButton(RemoteUserInfo caller, Intent mediaButtonIntent) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_MEDIA_BUTTON, mediaButtonIntent, null);
|
||||
}
|
||||
|
||||
private void dispatchMediaButtonDelayed(RemoteUserInfo info, Intent mediaButtonIntent,
|
||||
void dispatchMediaButtonDelayed(RemoteUserInfo info, Intent mediaButtonIntent,
|
||||
long delay) {
|
||||
postToCallbackDelayed(info, CallbackMessageHandler.MSG_PLAY_PAUSE_KEY_DOUBLE_TAP_TIMEOUT,
|
||||
mediaButtonIntent, null, delay);
|
||||
}
|
||||
|
||||
private void dispatchAdjustVolume(RemoteUserInfo caller, int direction) {
|
||||
void dispatchAdjustVolume(RemoteUserInfo caller, int direction) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_ADJUST_VOLUME, direction, null);
|
||||
}
|
||||
|
||||
private void dispatchSetVolumeTo(RemoteUserInfo caller, int volume) {
|
||||
void dispatchSetVolumeTo(RemoteUserInfo caller, int volume) {
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_SET_VOLUME, volume, null);
|
||||
}
|
||||
|
||||
private void dispatchCommand(RemoteUserInfo caller, String command, Bundle args,
|
||||
void dispatchCommand(RemoteUserInfo caller, String command, Bundle args,
|
||||
ResultReceiver resultCb) {
|
||||
Command cmd = new Command(command, args, resultCb);
|
||||
postToCallback(caller, CallbackMessageHandler.MSG_COMMAND, cmd, null);
|
||||
@@ -979,259 +972,7 @@ public final class MediaSessionEngine implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final class CallbackStub extends SessionCallbackLink.CallbackStub {
|
||||
private WeakReference<MediaSessionEngine> mSessionImpl;
|
||||
|
||||
private static RemoteUserInfo createRemoteUserInfo(String packageName, int pid, int uid) {
|
||||
return new RemoteUserInfo(packageName, pid, uid);
|
||||
}
|
||||
|
||||
public CallbackStub() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommand(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String command, Bundle args, ResultReceiver cb) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchCommand(createRemoteUserInfo(packageName, pid, uid),
|
||||
command, args, cb);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaButton(String packageName, int pid, int uid, Intent mediaButtonIntent,
|
||||
int sequenceNumber, ResultReceiver cb) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
try {
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchMediaButton(
|
||||
createRemoteUserInfo(packageName, pid, uid), mediaButtonIntent);
|
||||
}
|
||||
} finally {
|
||||
if (cb != null) {
|
||||
cb.send(sequenceNumber, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaButtonFromController(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, Intent mediaButtonIntent) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchMediaButton(createRemoteUserInfo(packageName, pid, uid),
|
||||
mediaButtonIntent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepare(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepare(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareFromMediaId(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String mediaId,
|
||||
Bundle extras) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepareFromMediaId(
|
||||
createRemoteUserInfo(packageName, pid, uid), mediaId, extras);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareFromSearch(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String query,
|
||||
Bundle extras) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepareFromSearch(
|
||||
createRemoteUserInfo(packageName, pid, uid), query, extras);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrepareFromUri(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, Uri uri, Bundle extras) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepareFromUri(
|
||||
createRemoteUserInfo(packageName, pid, uid), uri, extras);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlay(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlay(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayFromMediaId(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String mediaId,
|
||||
Bundle extras) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlayFromMediaId(
|
||||
createRemoteUserInfo(packageName, pid, uid), mediaId, extras);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayFromSearch(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String query,
|
||||
Bundle extras) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlayFromSearch(
|
||||
createRemoteUserInfo(packageName, pid, uid), query, extras);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayFromUri(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, Uri uri, Bundle extras) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlayFromUri(
|
||||
createRemoteUserInfo(packageName, pid, uid), uri, extras);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSkipToTrack(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, long id) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchSkipToItem(
|
||||
createRemoteUserInfo(packageName, pid, uid), id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPause(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchStop(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchNext(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrevious(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrevious(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFastForward(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchFastForward(
|
||||
createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRewind(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchRewind(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSeekTo(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, long pos) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchSeekTo(
|
||||
createRemoteUserInfo(packageName, pid, uid), pos);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRate(String packageName, int pid, int uid, ControllerCallbackLink caller,
|
||||
Rating rating) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchRate(
|
||||
createRemoteUserInfo(packageName, pid, uid), rating);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCustomAction(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String action, Bundle args) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchCustomAction(
|
||||
createRemoteUserInfo(packageName, pid, uid), action, args);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAdjustVolume(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, int direction) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchAdjustVolume(
|
||||
createRemoteUserInfo(packageName, pid, uid), direction);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSetVolumeTo(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, int value) {
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchSetVolumeTo(
|
||||
createRemoteUserInfo(packageName, pid, uid), value);
|
||||
}
|
||||
}
|
||||
|
||||
void setSessionImpl(MediaSessionEngine sessionImpl) {
|
||||
mSessionImpl = new WeakReference<>(sessionImpl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* A single item that is part of the play queue. It contains a description
|
||||
* of the item and its id in the queue.
|
||||
*/
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.Rating;
|
||||
import android.media.session.MediaSessionManager.RemoteUserInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
@@ -35,6 +36,8 @@ import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ResultReceiver;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
/**
|
||||
* Handles incoming commands to {@link MediaSession.Callback}.
|
||||
* @hide
|
||||
@@ -42,16 +45,15 @@ import android.os.ResultReceiver;
|
||||
@SystemApi
|
||||
public final class SessionCallbackLink implements Parcelable {
|
||||
final Context mContext;
|
||||
final CallbackStub mCallbackStub;
|
||||
final ISessionCallback mISessionCallback;
|
||||
|
||||
/**
|
||||
* Constructor for stub (Callee)
|
||||
* @hide
|
||||
*/
|
||||
SessionCallbackLink(@NonNull Context context, @NonNull CallbackStub callbackStub) {
|
||||
public SessionCallbackLink(@NonNull Context context) {
|
||||
mContext = context;
|
||||
mCallbackStub = callbackStub;
|
||||
mISessionCallback = new CallbackStubProxy();
|
||||
mISessionCallback = new CallbackStub();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,10 +61,18 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
*/
|
||||
public SessionCallbackLink(IBinder binder) {
|
||||
mContext = null;
|
||||
mCallbackStub = null;
|
||||
mISessionCallback = ISessionCallback.Stub.asInterface(binder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set {@link MediaSessionEngine} which will be used by {@link CallbackStub}.
|
||||
*/
|
||||
void setSessionEngine(@Nullable MediaSessionEngine sessionImpl) {
|
||||
if (mISessionCallback instanceof CallbackStub) {
|
||||
((CallbackStub) mISessionCallback).mSessionImpl = new WeakReference<>(sessionImpl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify session that a controller sends a command.
|
||||
*
|
||||
@@ -540,139 +550,24 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Class for Stub implementation
|
||||
*/
|
||||
abstract static class CallbackStub {
|
||||
/** Stub method for ISessionCallback.notifyCommand */
|
||||
public void onCommand(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull String command,
|
||||
@Nullable Bundle args, @Nullable ResultReceiver cb) {
|
||||
private class CallbackStub extends ISessionCallback.Stub {
|
||||
private WeakReference<MediaSessionEngine> mSessionImpl;
|
||||
|
||||
private RemoteUserInfo createRemoteUserInfo(String packageName, int pid, int uid) {
|
||||
return new RemoteUserInfo(packageName, pid, uid);
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyMediaButton */
|
||||
public void onMediaButton(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull Intent mediaButtonIntent, int sequenceNumber,
|
||||
@Nullable ResultReceiver cb) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyMediaButtonFromController */
|
||||
public void onMediaButtonFromController(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull Intent mediaButtonIntent) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPrepare */
|
||||
public void onPrepare(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPrepareFromMediaId */
|
||||
public void onPrepareFromMediaId(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull String mediaId,
|
||||
@Nullable Bundle extras) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPrepareFromSearch */
|
||||
public void onPrepareFromSearch(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, String query, @Nullable Bundle extras) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPrepareFromUri */
|
||||
public void onPrepareFromUri(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull Uri uri, @Nullable Bundle extras) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPlay */
|
||||
public void onPlay(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPlayFromMediaId */
|
||||
public void onPlayFromMediaId(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull String mediaId,
|
||||
@Nullable Bundle extras) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPlayFromSearch */
|
||||
public void onPlayFromSearch(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, String query, @Nullable Bundle extras) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPlayFromUri */
|
||||
public void onPlayFromUri(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull Uri uri, @Nullable Bundle extras) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifySkipToTrack */
|
||||
public void onSkipToTrack(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, long id) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPause */
|
||||
public void onPause(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyStop */
|
||||
public void onStop(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyNext */
|
||||
public void onNext(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyPrevious */
|
||||
public void onPrevious(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyFastForward */
|
||||
public void onFastForward(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyRewind */
|
||||
public void onRewind(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifySeekTo */
|
||||
public void onSeekTo(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, long pos) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyRate */
|
||||
public void onRate(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull Rating rating) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyCustomAction */
|
||||
public void onCustomAction(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, @NonNull String action,
|
||||
@Nullable Bundle args) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifyAdjustVolume */
|
||||
public void onAdjustVolume(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, int direction) {
|
||||
}
|
||||
|
||||
/** Stub method for ISessionCallback.notifySetVolumeTo */
|
||||
public void onSetVolumeTo(@NonNull String packageName, int pid, int uid,
|
||||
@NonNull ControllerCallbackLink caller, int value) {
|
||||
}
|
||||
}
|
||||
|
||||
private class CallbackStubProxy extends ISessionCallback.Stub {
|
||||
@Override
|
||||
public void notifyCommand(String packageName, int pid, int uid,
|
||||
ControllerCallbackLink caller, String command, Bundle args, ResultReceiver cb) {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onCommand(packageName, pid, uid, caller, command, args, cb);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchCommand(createRemoteUserInfo(packageName, pid, uid),
|
||||
command, args, cb);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -684,9 +579,15 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onMediaButton(packageName, pid, uid, mediaButtonIntent,
|
||||
sequenceNumber, cb);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchMediaButton(
|
||||
createRemoteUserInfo(packageName, pid, uid), mediaButtonIntent);
|
||||
}
|
||||
} finally {
|
||||
if (cb != null) {
|
||||
cb.send(sequenceNumber, null);
|
||||
}
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
@@ -697,8 +598,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onMediaButtonFromController(packageName, pid, uid, caller,
|
||||
mediaButtonIntent);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchMediaButton(createRemoteUserInfo(packageName, pid, uid),
|
||||
mediaButtonIntent);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -710,7 +614,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPrepare(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepare(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -722,7 +629,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPrepareFromMediaId(packageName, pid, uid, caller, mediaId, extras);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepareFromMediaId(
|
||||
createRemoteUserInfo(packageName, pid, uid), mediaId, extras);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -734,7 +645,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPrepareFromSearch(packageName, pid, uid, caller, query, extras);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepareFromSearch(
|
||||
createRemoteUserInfo(packageName, pid, uid), query, extras);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -746,7 +661,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPrepareFromUri(packageName, pid, uid, caller, uri, extras);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrepareFromUri(
|
||||
createRemoteUserInfo(packageName, pid, uid), uri, extras);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -758,7 +677,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPlay(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlay(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -770,7 +692,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPlayFromMediaId(packageName, pid, uid, caller, mediaId, extras);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlayFromMediaId(
|
||||
createRemoteUserInfo(packageName, pid, uid), mediaId, extras);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -782,7 +708,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPlayFromSearch(packageName, pid, uid, caller, query, extras);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlayFromSearch(
|
||||
createRemoteUserInfo(packageName, pid, uid), query, extras);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -794,7 +724,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPlayFromUri(packageName, pid, uid, caller, uri, extras);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPlayFromUri(
|
||||
createRemoteUserInfo(packageName, pid, uid), uri, extras);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -806,7 +740,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onSkipToTrack(packageName, pid, uid, caller, id);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchSkipToItem(
|
||||
createRemoteUserInfo(packageName, pid, uid), id);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -818,7 +756,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPause(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPause(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -830,7 +771,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onStop(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchStop(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -842,7 +786,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onNext(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchNext(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -854,7 +801,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onPrevious(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchPrevious(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -866,7 +816,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onFastForward(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchFastForward(
|
||||
createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -878,7 +832,10 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onRewind(packageName, pid, uid, caller);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchRewind(createRemoteUserInfo(packageName, pid, uid));
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -890,7 +847,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onSeekTo(packageName, pid, uid, caller, pos);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchSeekTo(
|
||||
createRemoteUserInfo(packageName, pid, uid), pos);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -902,7 +863,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onRate(packageName, pid, uid, caller, rating);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchRate(
|
||||
createRemoteUserInfo(packageName, pid, uid), rating);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -913,7 +878,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onCustomAction(packageName, pid, uid, caller, action, args);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchCustomAction(
|
||||
createRemoteUserInfo(packageName, pid, uid), action, args);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -925,7 +894,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onAdjustVolume(packageName, pid, uid, caller, direction);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchAdjustVolume(
|
||||
createRemoteUserInfo(packageName, pid, uid), direction);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
@@ -937,7 +910,11 @@ public final class SessionCallbackLink implements Parcelable {
|
||||
ensureMediaControlPermission();
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mCallbackStub.onSetVolumeTo(packageName, pid, uid, caller, value);
|
||||
MediaSessionEngine sessionImpl = mSessionImpl.get();
|
||||
if (sessionImpl != null) {
|
||||
sessionImpl.dispatchSetVolumeTo(
|
||||
createRemoteUserInfo(packageName, pid, uid), value);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
|
||||
@@ -142,10 +142,9 @@ public final class MediaSession {
|
||||
MediaSessionManager manager = (MediaSessionManager) context
|
||||
.getSystemService(Context.MEDIA_SESSION_SERVICE);
|
||||
try {
|
||||
MediaSessionEngine.CallbackStub cbStub = new MediaSessionEngine.CallbackStub();
|
||||
SessionCallbackLink cbLink = new SessionCallbackLink(context, cbStub);
|
||||
SessionCallbackLink cbLink = new SessionCallbackLink(context);
|
||||
SessionLink sessionLink = manager.createSession(cbLink, tag);
|
||||
mImpl = new MediaSessionEngine(context, sessionLink, cbLink, cbStub);
|
||||
mImpl = new MediaSessionEngine(context, sessionLink, cbLink);
|
||||
mMaxBitmapSize = context.getResources().getDimensionPixelSize(
|
||||
android.R.dimen.config_mediaMetadataBitmapMaxSize);
|
||||
} catch (RuntimeException e) {
|
||||
|
||||
Reference in New Issue
Block a user