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

Commit e5a7b36e authored by Hyundo Moon's avatar Hyundo Moon
Browse files

MediaSession2: Update Builder

This CL updates following APIs of session builder:
 - setPlayer
 - setPlaylistController
 - setVolumeController

Bug: 74093082
Test: runtest-MediaComponents
Change-Id: I55d76400a6e18427955d4b5f9d5451007633e40c
parent 149eb6af
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.media.MediaLibraryService2.MediaLibrarySession;
import android.media.MediaLibraryService2.MediaLibrarySession.Builder;
import android.media.MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback;
import android.media.MediaPlayerBase;
import android.media.MediaPlaylistController;
import android.media.MediaSession2;
import android.media.MediaSession2.ControllerInfo;
import android.media.MediaSessionService2;
@@ -67,10 +68,12 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement
    public static class MediaLibrarySessionImpl extends MediaSession2Impl
            implements MediaLibrarySessionProvider {
        public MediaLibrarySessionImpl(Context context,
                MediaPlayerBase player, String id, VolumeProvider2 volumeProvider,
                MediaPlayerBase player, String id, MediaPlaylistController mplc,
                VolumeProvider2 volumeProvider,
                PendingIntent sessionActivity, Executor callbackExecutor,
                MediaLibrarySessionCallback callback) {
            super(context, player, id, volumeProvider, sessionActivity, callbackExecutor, callback);
            super(context, player, id, mplc, volumeProvider, sessionActivity, callbackExecutor,
                    callback);
            // Don't put any extra initialization here. Here's the reason.
            // System service will recognize this session inside of the super constructor and would
            // connect to this session assuming that initialization is finished. However, if any
@@ -138,8 +141,8 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement

        @Override
        public MediaLibrarySession build_impl() {
            return new MediaLibrarySessionImpl(mContext, mPlayer, mId, mVolumeProvider,
                    mSessionActivity, mCallbackExecutor, mCallback).getInstance();
            return new MediaLibrarySessionImpl(mContext, mPlayer, mId, mMplc,
                    mVolumeProvider, mSessionActivity, mCallbackExecutor, mCallback).getInstance();
        }
    }

+23 −11
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ import android.os.ResultReceiver;
import android.support.annotation.GuardedBy;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;

import java.lang.ref.WeakReference;
@@ -108,6 +107,8 @@ public class MediaSession2Impl implements MediaSession2Provider {
    @GuardedBy("mLock")
    private MediaPlayerBase mPlayer;
    @GuardedBy("mLock")
    private MediaPlaylistController mMplc;
    @GuardedBy("mLock")
    private VolumeProvider2 mVolumeProvider;
    @GuardedBy("mLock")
    private PlaybackInfo mPlaybackInfo;
@@ -116,17 +117,18 @@ public class MediaSession2Impl implements MediaSession2Provider {

    /**
     * Can be only called by the {@link Builder#build()}.
     *
     * @param context
     * @param player
     * @param id
     * @param mplc
     * @param volumeProvider
     * @param sessionActivity
     * @param callbackExecutor
     * @param callback
     */
    public MediaSession2Impl(Context context, MediaPlayerBase player, String id,
            VolumeProvider2 volumeProvider, PendingIntent sessionActivity,
            MediaPlaylistController mplc, VolumeProvider2 volumeProvider,
            PendingIntent sessionActivity,
            Executor callbackExecutor, SessionCallback callback) {
        // TODO(jaewan): Keep other params.
        mInstance = createInstance();
@@ -140,6 +142,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
        mSessionActivity = sessionActivity;
        mSessionStub = new MediaSession2Stub(this);
        mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        mMplc = mplc;

        // Infer type from the id and package name.
        String libraryService = getServiceName(context, MediaLibraryService2.SERVICE_INTERFACE, id);
@@ -203,13 +206,13 @@ public class MediaSession2Impl implements MediaSession2Provider {
    }

    @Override
    public void updatePlayer_impl(MediaPlayerBase player, MediaPlaylistController mpcl,
    public void updatePlayer_impl(MediaPlayerBase player, MediaPlaylistController mplc,
            VolumeProvider2 volumeProvider) throws IllegalArgumentException {
        ensureCallingThread();
        if (player == null) {
            throw new IllegalArgumentException("player shouldn't be null");
        }
        // TODO(jaewan): Handle mpcl
        mMplc = mplc;
        setPlayer(player, volumeProvider);
    }

@@ -1287,6 +1290,7 @@ public class MediaSession2Impl implements MediaSession2Provider {
        String mId;
        Executor mCallbackExecutor;
        C mCallback;
        MediaPlaylistController mMplc;
        VolumeProvider2 mVolumeProvider;
        PendingIntent mSessionActivity;

@@ -1307,17 +1311,25 @@ public class MediaSession2Impl implements MediaSession2Provider {
            mId = "";
        }

        public void setPlayer_impl(MediaPlayerBase player, MediaPlaylistController mplc,
                VolumeProvider2 volumeProvider) {
            // TODO: Use MediaPlaylistController
        public void setPlayer_impl(MediaPlayerBase player) {
            if (player == null) {
                throw new IllegalArgumentException("player shouldn't be null");
            }
            mPlayer = player;
            mVolumeProvider = volumeProvider;
        }

        @Override
        public void setPlaylistController_impl(MediaPlaylistController mplc) {
            if (mplc == null) {
                throw new IllegalArgumentException("mplc shouldn't be null");
            }
            mMplc = mplc;
        }

        public void setVolumeProvider_impl(VolumeProvider2 volumeProvider) {
            if (volumeProvider == null) {
                throw new IllegalArgumentException("volumeProvider shouldn't be null");
            }
            mVolumeProvider = volumeProvider;
        }

@@ -1360,8 +1372,8 @@ public class MediaSession2Impl implements MediaSession2Provider {
                mCallback = new SessionCallback(mContext) {};
            }

            return new MediaSession2Impl(mContext, mPlayer, mId, mVolumeProvider,
                    mSessionActivity, mCallbackExecutor, mCallback).getInstance();
            return new MediaSession2Impl(mContext, mPlayer, mId, mMplc,
                    mVolumeProvider, mSessionActivity, mCallbackExecutor, mCallback).getInstance();
        }
    }
}