diff options
author | Craig Mautner <cmautner@google.com> | 2013-10-30 10:29:38 -0700 |
---|---|---|
committer | Craig Mautner <cmautner@google.com> | 2013-10-30 10:33:01 -0700 |
commit | 83341929740cf56240ff883b92191b5a67349c40 (patch) | |
tree | 4ce4bf60200b3c0074ed1135059f29e98e79cebe /packages/Keyguard | |
parent | 66b753b06bb265d3f5b25244856f8d827a9dc5af (diff) | |
download | frameworks_base-83341929740cf56240ff883b92191b5a67349c40.zip frameworks_base-83341929740cf56240ff883b92191b5a67349c40.tar.gz frameworks_base-83341929740cf56240ff883b92191b5a67349c40.tar.bz2 |
Save and restore media metadata.
Do not lose media information when configuration changes. Also, do not
wipe out that saved information when the RemoteController is
reconstructed.
Fixes bug 11293859.
Change-Id: Id9e539367bfda2cc6833dc61c922c57ae45dd7b7
Diffstat (limited to 'packages/Keyguard')
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java | 54 |
1 files changed, 49 insertions, 5 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java index de26efb..defd356 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java @@ -101,7 +101,9 @@ public class KeyguardTransportControlView extends FrameLayout { new RemoteController.OnClientUpdateListener() { @Override public void onClientChange(boolean clearing) { - clearMetadata(); + if (clearing) { + clearMetadata(); + } } @Override @@ -203,10 +205,10 @@ public class KeyguardTransportControlView extends FrameLayout { = new KeyguardUpdateMonitorCallback() { public void onScreenTurnedOff(int why) { setEnableMarquee(false); - }; + } public void onScreenTurnedOn() { setEnableMarquee(true); - }; + } }; public KeyguardTransportControlView(Context context, AttributeSet attrs) { @@ -325,6 +327,33 @@ public class KeyguardTransportControlView extends FrameLayout { removeCallbacks(mUpdateSeekBars); } + @Override + protected Parcelable onSaveInstanceState() { + SavedState ss = new SavedState(super.onSaveInstanceState()); + ss.artist = mMetadata.artist; + ss.trackTitle = mMetadata.trackTitle; + ss.albumTitle = mMetadata.albumTitle; + ss.duration = mMetadata.duration; + ss.bitmap = mMetadata.bitmap; + return ss; + } + + @Override + protected void onRestoreInstanceState(Parcelable state) { + if (!(state instanceof SavedState)) { + super.onRestoreInstanceState(state); + return; + } + SavedState ss = (SavedState) state; + super.onRestoreInstanceState(ss.getSuperState()); + mMetadata.artist = ss.artist; + mMetadata.trackTitle = ss.trackTitle; + mMetadata.albumTitle = ss.albumTitle; + mMetadata.duration = ss.duration; + mMetadata.bitmap = ss.bitmap; + populateMetadata(); + } + void setBadgeIcon(Drawable bmp) { mBadge.setImageDrawable(bmp); @@ -580,6 +609,11 @@ public class KeyguardTransportControlView extends FrameLayout { static class SavedState extends BaseSavedState { boolean clientPresent; + String artist; + String trackTitle; + String albumTitle; + long duration; + Bitmap bitmap; SavedState(Parcelable superState) { super(superState); @@ -587,13 +621,23 @@ public class KeyguardTransportControlView extends FrameLayout { private SavedState(Parcel in) { super(in); - this.clientPresent = in.readInt() != 0; + clientPresent = in.readInt() != 0; + artist = in.readString(); + trackTitle = in.readString(); + albumTitle = in.readString(); + duration = in.readLong(); + bitmap = Bitmap.CREATOR.createFromParcel(in); } @Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); - out.writeInt(this.clientPresent ? 1 : 0); + out.writeInt(clientPresent ? 1 : 0); + out.writeString(artist); + out.writeString(trackTitle); + out.writeString(albumTitle); + out.writeLong(duration); + bitmap.writeToParcel(out, flags); } public static final Parcelable.Creator<SavedState> CREATOR |