Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98955b03 authored by Sungsoo Lim's avatar Sungsoo Lim Committed by Android (Google) Code Review
Browse files

Merge "Use MediaSession.Token instead of ISessionController"

parents 359263d1 af7d46c1
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 *
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
@@ -16,7 +17,7 @@

package android.media;

import android.media.session.ISessionController;
import android.media.session.MediaSession;

/**
 * AIDL for the MediaSessionService to report interesting events on remote playback
@@ -25,8 +26,8 @@ import android.media.session.ISessionController;
 * @hide
 */
oneway interface IRemoteVolumeController {
    void remoteVolumeChanged(in ISessionController session, int flags);
    void remoteVolumeChanged(in MediaSession.Token sessionToken, int flags);
    // sets the default session to use with the slider, replaces remoteSliderVisibility
    // on IVolumeController
    void updateRemoteController(in ISessionController session);
    void updateRemoteController(in MediaSession.Token sessionToken);
}
+13 −12
Original line number Diff line number Diff line
@@ -25,9 +25,9 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.media.IRemoteVolumeController;
import android.media.MediaMetadata;
import android.media.session.ISessionController;
import android.media.session.MediaController;
import android.media.session.MediaController.PlaybackInfo;
import android.media.session.MediaSession;
import android.media.session.MediaSession.QueueItem;
import android.media.session.MediaSession.Token;
import android.media.session.MediaSessionManager;
@@ -113,17 +113,17 @@ public class MediaSessions {
        r.controller.setVolumeTo(level, 0);
    }

    private void onRemoteVolumeChangedH(ISessionController session, int flags) {
        final MediaController controller = new MediaController(mContext, session);
    private void onRemoteVolumeChangedH(MediaSession.Token sessionToken, int flags) {
        final MediaController controller = new MediaController(mContext, sessionToken);
        if (D.BUG) Log.d(TAG, "remoteVolumeChangedH " + controller.getPackageName() + " "
                + Util.audioManagerFlagsToString(flags));
        final Token token = controller.getSessionToken();
        mCallbacks.onRemoteVolumeChanged(token, flags);
    }

    private void onUpdateRemoteControllerH(ISessionController session) {
        final MediaController controller = session != null ? new MediaController(mContext, session)
                : null;
    private void onUpdateRemoteControllerH(MediaSession.Token sessionToken) {
        final MediaController controller =
                sessionToken != null ? new MediaController(mContext, sessionToken) : null;
        final String pkg = controller != null ? controller.getPackageName() : null;
        if (D.BUG) Log.d(TAG, "updateRemoteControllerH " + pkg);
        // this may be our only indication that a remote session is changed, refresh
@@ -332,15 +332,16 @@ public class MediaSessions {

    private final IRemoteVolumeController mRvc = new IRemoteVolumeController.Stub() {
        @Override
        public void remoteVolumeChanged(ISessionController session, int flags)
        public void remoteVolumeChanged(MediaSession.Token sessionToken, int flags)
                throws RemoteException {
            mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0, session).sendToTarget();
            mHandler.obtainMessage(H.REMOTE_VOLUME_CHANGED, flags, 0,
                    sessionToken).sendToTarget();
        }

        @Override
        public void updateRemoteController(final ISessionController session)
        public void updateRemoteController(final MediaSession.Token sessionToken)
                throws RemoteException {
            mHandler.obtainMessage(H.UPDATE_REMOTE_CONTROLLER, session).sendToTarget();
            mHandler.obtainMessage(H.UPDATE_REMOTE_CONTROLLER, sessionToken).sendToTarget();
        }
    };

@@ -360,10 +361,10 @@ public class MediaSessions {
                    onActiveSessionsUpdatedH(mMgr.getActiveSessions(null));
                    break;
                case REMOTE_VOLUME_CHANGED:
                    onRemoteVolumeChangedH((ISessionController) msg.obj, msg.arg1);
                    onRemoteVolumeChangedH((MediaSession.Token) msg.obj, msg.arg1);
                    break;
                case UPDATE_REMOTE_CONTROLLER:
                    onUpdateRemoteControllerH((ISessionController) msg.obj);
                    onUpdateRemoteControllerH((MediaSession.Token) msg.obj);
                    break;
            }
        }
+11 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
    private final String mPackageName;
    private final String mTag;
    private final ControllerLink mController;
    private final MediaSession.Token mSessionToken;
    private final SessionLink mSession;
    private final SessionCb mSessionCb;
    private final MediaSessionService.ServiceImpl mService;
@@ -128,6 +129,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
        mPackageName = ownerPackageName;
        mTag = tag;
        mController = new ControllerLink(new ControllerStub());
        mSessionToken = new MediaSession.Token(mController);
        mSession = new SessionLink(new SessionStub());
        mSessionCb = new SessionCb(cb);
        mService = service;
@@ -156,6 +158,15 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
        return mController;
    }

    /**
     * Get the session token for creating {@link MediaController}.
     *
     * @return The session token.
     */
    public MediaSession.Token getSessionToken() {
        return mSessionToken;
    }

    /**
     * Get the info for this session.
     *
+5 −10
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@ import android.media.session.ICallback;
import android.media.session.IOnMediaKeyListener;
import android.media.session.IOnVolumeKeyLongPressListener;
import android.media.session.ISession2TokensListener;
import android.media.session.ISessionController;
import android.media.session.ISessionManager;
import android.media.session.MediaSession;
import android.media.session.MediaSessionManager;
@@ -290,9 +289,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
            return;
        }
        try {
            mRvc.remoteVolumeChanged(
                    ISessionController.Stub.asInterface(session.getControllerLink().getBinder()),
                    flags);
            mRvc.remoteVolumeChanged(session.getSessionToken(), flags);
        } catch (Exception e) {
            Log.wtf(TAG, "Error sending volume change to system UI.", e);
        }
@@ -618,7 +615,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
            int size = records.size();
            ArrayList<MediaSession.Token> tokens = new ArrayList<MediaSession.Token>();
            for (int i = 0; i < size; i++) {
                tokens.add(new MediaSession.Token(records.get(i).getControllerLink()));
                tokens.add(records.get(i).getSessionToken());
            }
            pushRemoteVolumeUpdateLocked(userId);
            for (int i = mSessionsListeners.size() - 1; i >= 0; i--) {
@@ -645,9 +642,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
                    return;
                }
                MediaSessionRecord record = user.mPriorityStack.getDefaultRemoteSession(userId);
                mRvc.updateRemoteController(record == null ? null
                        : ISessionController.Stub.asInterface(
                                record.getControllerLink().getBinder()));
                mRvc.updateRemoteController(record == null ? null : record.getSessionToken());
            } catch (RemoteException e) {
                Log.wtf(TAG, "Error sending default remote volume to sys ui.", e);
            }
@@ -864,7 +859,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
                MediaSessionRecord mediaButtonSession = getMediaButtonSessionLocked();
                if (mediaButtonSession != null) {
                    mCallback.onAddressedPlayerChangedToMediaSession(
                            new MediaSession.Token(mediaButtonSession.getControllerLink()));
                            mediaButtonSession.getSessionToken());
                } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
                    mCallback.onAddressedPlayerChangedToMediaButtonReceiver(
                            mCurrentFullUserRecord.mLastMediaButtonReceiver
@@ -1804,7 +1799,7 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
                if (mCurrentFullUserRecord.mCallback != null) {
                    try {
                        mCurrentFullUserRecord.mCallback.onMediaKeyEventDispatchedToMediaSession(
                                keyEvent, new MediaSession.Token(session.getControllerLink()));
                                keyEvent, session.getSessionToken());
                    } catch (RemoteException e) {
                        Log.w(TAG, "Failed to send callback", e);
                    }