Merge "Don't save the last media source for ephemeral user" into qt-dev
am: 4632be6d82
Change-Id: Ie843f469781f3683911b64a9cf14ac9fba7a56c0
diff --git a/service/src/com/android/car/CarMediaService.java b/service/src/com/android/car/CarMediaService.java
index f66df4b..1e85fde 100644
--- a/service/src/com/android/car/CarMediaService.java
+++ b/service/src/com/android/car/CarMediaService.java
@@ -203,7 +203,8 @@
mPackageUpdateFilter, null, null);
mIsPackageUpdateReceiverRegistered = true;
- mPrimaryMediaComponent = getLastMediaSource();
+ mPrimaryMediaComponent =
+ isCurrentUserEphemeral() ? getDefaultMediaSource() : getLastMediaSource();
mActiveUserMediaController = null;
String key = PLAYBACK_STATE_KEY + mCurrentUser;
boolean startPlayback =
@@ -223,6 +224,10 @@
mContext.startForegroundServiceAsUser(serviceStart, currentUser);
}
+ private boolean isCurrentUserEphemeral() {
+ return mUserManager.getUserInfo(mCurrentUser).isEphemeral();
+ }
+
@Override
public void release() {
mMediaSessionUpdater.unregisterCallbacks();
@@ -304,10 +309,9 @@
if (!unlocked) {
return;
}
- // No need to handle user0, non current foreground user, or ephemeral user.
+ // No need to handle user0, non current foreground user.
if (userHandle == UserHandle.USER_SYSTEM
- || userHandle != ActivityManager.getCurrentUser()
- || mUserManager.getUserInfo(userHandle).isEphemeral()) {
+ || userHandle != ActivityManager.getCurrentUser()) {
return;
}
if (mPendingInit) {
@@ -490,7 +494,9 @@
if (mSharedPrefs != null) {
if (mPrimaryMediaComponent != null && !TextUtils.isEmpty(
mPrimaryMediaComponent.flattenToString())) {
- saveLastMediaSource(mPrimaryMediaComponent);
+ if (!isCurrentUserEphemeral()) {
+ saveLastMediaSource(mPrimaryMediaComponent);
+ }
mRemovedMediaSourcePackage = null;
}
} else {
@@ -516,7 +522,9 @@
private MediaController.Callback mMediaControllerCallback = new MediaController.Callback() {
@Override
public void onPlaybackStateChanged(PlaybackState state) {
- savePlaybackState(state);
+ if (!isCurrentUserEphemeral()) {
+ savePlaybackState(state);
+ }
// Try to start playback if the new state allows the play action
maybeRestartPlayback(state);
}
@@ -644,7 +652,10 @@
}
}
}
+ return getDefaultMediaSource();
+ }
+ private ComponentName getDefaultMediaSource() {
String defaultMediaSource = mContext.getString(R.string.default_media_source);
ComponentName defaultComponent = ComponentName.unflattenFromString(defaultMediaSource);
if (isMediaService(defaultComponent)) {
@@ -700,12 +711,14 @@
for (MediaController controller : mediaControllers) {
if (matchPrimaryMediaSource(controller.getPackageName(), getClassName(controller))) {
mActiveUserMediaController = controller;
+ PlaybackState state = mActiveUserMediaController.getPlaybackState();
+ if (!isCurrentUserEphemeral()) {
+ savePlaybackState(state);
+ }
// Specify Handler to receive callbacks on, to avoid defaulting to the calling
// thread; this method can be called from the MediaSessionManager callback.
// Using the version of this method without passing a handler causes a
// RuntimeException for failing to create a Handler.
- PlaybackState state = mActiveUserMediaController.getPlaybackState();
- savePlaybackState(state);
mActiveUserMediaController.registerCallback(mMediaControllerCallback, mHandler);
maybeRestartPlayback(state);
return;