summaryrefslogtreecommitdiffstats
path: root/packages/Keyguard/src
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2013-10-30 10:29:38 -0700
committerCraig Mautner <cmautner@google.com>2013-10-30 10:33:01 -0700
commit83341929740cf56240ff883b92191b5a67349c40 (patch)
tree4ce4bf60200b3c0074ed1135059f29e98e79cebe /packages/Keyguard/src
parent66b753b06bb265d3f5b25244856f8d827a9dc5af (diff)
downloadframeworks_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/src')
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardTransportControlView.java54
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