diff options
| author | Jae Seo <jaeseo@google.com> | 2015-10-29 17:35:23 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-29 17:35:23 +0000 |
| commit | 2a6f86b4b2f7351c48669356a59a87ce51816245 (patch) | |
| tree | 8ac27aa9db7ef2b82c9e9e889fe2067d7c058c1f /v4 | |
| parent | e532c5a043f4b5f3530e4427c300244adcf7e2fd (diff) | |
| parent | 56264c1f9d3493fc24728b37e20c11dc066385e7 (diff) | |
| download | android_frameworks_support-2a6f86b4b2f7351c48669356a59a87ce51816245.tar.gz android_frameworks_support-2a6f86b4b2f7351c48669356a59a87ce51816245.tar.bz2 android_frameworks_support-2a6f86b4b2f7351c48669356a59a87ce51816245.zip | |
Merge "MediaRouter: Preserve custom data in metadata between Api21 and Compat" into mnc-ub-dev
Diffstat (limited to 'v4')
| -rw-r--r-- | v4/api21/android/support/v4/media/MediaMetadataCompatApi21.java | 9 | ||||
| -rw-r--r-- | v4/java/android/support/v4/media/MediaMetadataCompat.java | 63 |
2 files changed, 21 insertions, 51 deletions
diff --git a/v4/api21/android/support/v4/media/MediaMetadataCompatApi21.java b/v4/api21/android/support/v4/media/MediaMetadataCompatApi21.java index eddcf76944..fd51f783ce 100644 --- a/v4/api21/android/support/v4/media/MediaMetadataCompatApi21.java +++ b/v4/api21/android/support/v4/media/MediaMetadataCompatApi21.java @@ -19,6 +19,7 @@ package android.support.v4.media; import android.graphics.Bitmap; import android.media.MediaMetadata; import android.media.Rating; +import android.os.Parcel; import java.util.Set; @@ -43,6 +44,14 @@ class MediaMetadataCompatApi21 { return ((MediaMetadata) metadataObj).getText(key); } + public static void writeToParcel(Object metadataObj, Parcel dest, int flags) { + ((MediaMetadata) metadataObj).writeToParcel(dest, flags); + } + + public static Object createFromParcel(Parcel in) { + return MediaMetadata.CREATOR.createFromParcel(in); + } + public static class Builder { public static Object newInstance() { return new MediaMetadata.Builder(); diff --git a/v4/java/android/support/v4/media/MediaMetadataCompat.java b/v4/java/android/support/v4/media/MediaMetadataCompat.java index d6ebfa410a..f9bd3ae52f 100644 --- a/v4/java/android/support/v4/media/MediaMetadataCompat.java +++ b/v4/java/android/support/v4/media/MediaMetadataCompat.java @@ -510,32 +510,12 @@ public final class MediaMetadataCompat implements Parcelable { return null; } - Builder builder = new Builder(); - for (String key : MediaMetadataCompatApi21.keySet(metadataObj)) { - Integer type = METADATA_KEYS_TYPE.get(key); - if (type != null) { - switch (type) { - case METADATA_TYPE_BITMAP: - builder.putBitmap(key, - MediaMetadataCompatApi21.getBitmap(metadataObj, key)); - break; - case METADATA_TYPE_LONG: - builder.putLong(key, - MediaMetadataCompatApi21.getLong(metadataObj, key)); - break; - case METADATA_TYPE_RATING: - builder.putRating(key, RatingCompat.fromRating( - MediaMetadataCompatApi21.getRating(metadataObj, key))); - break; - case METADATA_TYPE_TEXT: - builder.putText(key, - MediaMetadataCompatApi21.getText(metadataObj, key)); - break; - } - } - } - MediaMetadataCompat metadata = builder.build(); - metadata.mMetadataObj = metadataObj; + Parcel p = Parcel.obtain(); + MediaMetadataCompatApi21.writeToParcel(metadataObj, p, 0); + p.setDataPosition(0); + MediaMetadataCompat metadata = MediaMetadataCompat.CREATOR.createFromParcel(p); + p.recycle(); + return metadata; } @@ -554,31 +534,12 @@ public final class MediaMetadataCompat implements Parcelable { return mMetadataObj; } - Object builderObj = MediaMetadataCompatApi21.Builder.newInstance(); - for (String key : keySet()) { - Integer type = METADATA_KEYS_TYPE.get(key); - if (type != null) { - switch (type) { - case METADATA_TYPE_BITMAP: - MediaMetadataCompatApi21.Builder.putBitmap(builderObj, key, - getBitmap(key)); - break; - case METADATA_TYPE_LONG: - MediaMetadataCompatApi21.Builder.putLong(builderObj, key, - getLong(key)); - break; - case METADATA_TYPE_RATING: - MediaMetadataCompatApi21.Builder.putRating(builderObj, key, - getRating(key).getRating()); - break; - case METADATA_TYPE_TEXT: - MediaMetadataCompatApi21.Builder.putText(builderObj, key, - getText(key)); - break; - } - } - } - mMetadataObj = MediaMetadataCompatApi21.Builder.build(builderObj); + Parcel p = Parcel.obtain(); + writeToParcel(p, 0); + p.setDataPosition(0); + mMetadataObj = MediaMetadataCompatApi21.createFromParcel(p); + p.recycle(); + return mMetadataObj; } |
