Merge "MediaSession2: Update Builder" into pi-dev
diff --git a/packages/MediaComponents/src/com/android/media/MediaLibraryService2Impl.java b/packages/MediaComponents/src/com/android/media/MediaLibraryService2Impl.java
index a21fda6..1cc9a77 100644
--- a/packages/MediaComponents/src/com/android/media/MediaLibraryService2Impl.java
+++ b/packages/MediaComponents/src/com/android/media/MediaLibraryService2Impl.java
@@ -24,6 +24,7 @@
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 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 @@
@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();
}
}
diff --git a/packages/MediaComponents/src/com/android/media/MediaSession2Impl.java b/packages/MediaComponents/src/com/android/media/MediaSession2Impl.java
index c407e5a..6aab84a 100644
--- a/packages/MediaComponents/src/com/android/media/MediaSession2Impl.java
+++ b/packages/MediaComponents/src/com/android/media/MediaSession2Impl.java
@@ -64,7 +64,6 @@
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 @@
@GuardedBy("mLock")
private MediaPlayerBase mPlayer;
@GuardedBy("mLock")
+ private MediaPlaylistController mMplc;
+ @GuardedBy("mLock")
private VolumeProvider2 mVolumeProvider;
@GuardedBy("mLock")
private PlaybackInfo mPlaybackInfo;
@@ -116,17 +117,18 @@
/**
* 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 @@
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 @@
}
@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 @@
String mId;
Executor mCallbackExecutor;
C mCallback;
+ MediaPlaylistController mMplc;
VolumeProvider2 mVolumeProvider;
PendingIntent mSessionActivity;
@@ -1307,17 +1311,25 @@
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 @@
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();
}
}
}