diff options
author | Yao Chen <yaochen@google.com> | 2014-07-23 20:25:08 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-23 18:56:15 +0000 |
commit | f805afc4d76ce6f141b50c37b97493335e302a6f (patch) | |
tree | c2eeac5a7de2ca7f62ebd4a468364f97be3a7a0d | |
parent | 80bc75a71ea9f428462ce2810a6f22b1c09c2701 (diff) | |
parent | 7e21fe8be9d374d31e75cdc2c9a11f977ba1faa0 (diff) | |
download | frameworks_base-f805afc4d76ce6f141b50c37b97493335e302a6f.zip frameworks_base-f805afc4d76ce6f141b50c37b97493335e302a6f.tar.gz frameworks_base-f805afc4d76ce6f141b50c37b97493335e302a6f.tar.bz2 |
Merge "various fixes in MediaBrowserItem and MediaBrowserService" into lmp-dev
-rw-r--r-- | api/current.txt | 14 | ||||
-rw-r--r-- | media/java/android/media/browse/MediaBrowserItem.java | 120 | ||||
-rw-r--r-- | media/java/android/media/browse/MediaBrowserService.java | 47 |
3 files changed, 107 insertions, 74 deletions
diff --git a/api/current.txt b/api/current.txt index dd36206..b9f018a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -16202,7 +16202,7 @@ package android.media.browse { method public int describeContents(); method public android.os.Bundle getExtras(); method public int getFlags(); - method public int getIconResId(); + method public int getIconResourceId(); method public android.net.Uri getIconUri(); method public java.lang.CharSequence getSummary(); method public java.lang.CharSequence getTitle(); @@ -16219,7 +16219,7 @@ package android.media.browse { ctor public MediaBrowserItem.Builder(android.net.Uri, int, java.lang.CharSequence); method public android.media.browse.MediaBrowserItem build(); method public android.media.browse.MediaBrowserItem.Builder setExtras(android.os.Bundle); - method public android.media.browse.MediaBrowserItem.Builder setIconResId(int); + method public android.media.browse.MediaBrowserItem.Builder setIconResourceId(int); method public android.media.browse.MediaBrowserItem.Builder setIconUri(android.net.Uri); method public android.media.browse.MediaBrowserItem.Builder setSummary(java.lang.CharSequence); } @@ -16230,15 +16230,17 @@ package android.media.browse { method public android.media.session.MediaSession.Token getSessionToken(); method public void notifyChildrenChanged(android.net.Uri); method public android.os.IBinder onBind(android.content.Intent); - method protected abstract android.media.browse.MediaBrowserService.BrowserRoot onGetRoot(java.lang.String, int, android.os.Bundle); - method protected abstract android.graphics.Bitmap onGetThumbnail(android.net.Uri, int, int); - method protected abstract java.util.List<android.media.browse.MediaBrowserItem> onLoadChildren(android.net.Uri); + method public abstract android.media.browse.MediaBrowserService.BrowserRoot onGetRoot(java.lang.String, int, android.os.Bundle); + method public abstract android.graphics.Bitmap onGetThumbnail(android.net.Uri, int, int); + method public abstract java.util.List<android.media.browse.MediaBrowserItem> onLoadChildren(android.net.Uri); method public void setSessionToken(android.media.session.MediaSession.Token); field public static final java.lang.String SERVICE_ACTION = "android.media.browse.MediaBrowserService"; } - public static class MediaBrowserService.BrowserRoot { + public static final class MediaBrowserService.BrowserRoot { ctor public MediaBrowserService.BrowserRoot(android.net.Uri, android.os.Bundle); + method public android.os.Bundle getExtras(); + method public android.net.Uri getRootUri(); } } diff --git a/media/java/android/media/browse/MediaBrowserItem.java b/media/java/android/media/browse/MediaBrowserItem.java index 38e765f..d0a0342 100644 --- a/media/java/android/media/browse/MediaBrowserItem.java +++ b/media/java/android/media/browse/MediaBrowserItem.java @@ -16,6 +16,7 @@ package android.media.browse; +import android.annotation.DrawableRes; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -32,11 +33,11 @@ import java.lang.annotation.RetentionPolicy; */ public final class MediaBrowserItem implements Parcelable { private final Uri mUri; - private final Uri mIconUri; - private final int mIconResId; private final int mFlags; private final CharSequence mTitle; private final CharSequence mSummary; + private final Uri mIconUri; + private final int mIconResourceId; private final Bundle mExtras; /** @hide */ @@ -61,8 +62,8 @@ public final class MediaBrowserItem implements Parcelable { /** * Initialize a MediaBrowserItem object. */ - private MediaBrowserItem(@NonNull Uri uri, @Nullable Uri iconUri, int iconResId, int flags, - @NonNull CharSequence title, CharSequence summary, Bundle extras) { + private MediaBrowserItem(@NonNull Uri uri, int flags, @NonNull CharSequence title, + CharSequence summary, @Nullable Uri iconUri, int iconResourceId, Bundle extras) { if (uri == null) { throw new IllegalArgumentException("uri can not be null"); } @@ -70,11 +71,11 @@ public final class MediaBrowserItem implements Parcelable { throw new IllegalArgumentException("title can not be null"); } mUri = uri; - mIconUri = iconUri; - mIconResId = iconResId; mFlags = flags; mTitle = title; mSummary = summary; + mIconUri = iconUri; + mIconResourceId = iconResourceId; mExtras = extras; } @@ -83,8 +84,6 @@ public final class MediaBrowserItem implements Parcelable { */ private MediaBrowserItem(Parcel in) { mUri = Uri.CREATOR.createFromParcel(in); - mIconUri = Uri.CREATOR.createFromParcel(in); - mIconResId = in.readInt(); mFlags = in.readInt(); mTitle = in.readCharSequence(); if (in.readInt() != 0) { @@ -93,6 +92,12 @@ public final class MediaBrowserItem implements Parcelable { mSummary = null; } if (in.readInt() != 0) { + mIconUri = Uri.CREATOR.createFromParcel(in); + } else { + mIconUri = null; + } + mIconResourceId = in.readInt(); + if (in.readInt() != 0) { mExtras = Bundle.CREATOR.createFromParcel(in); } else { mExtras = null; @@ -107,8 +112,6 @@ public final class MediaBrowserItem implements Parcelable { @Override public void writeToParcel(Parcel out, int flags) { mUri.writeToParcel(out, flags); - mIconUri.writeToParcel(out, flags); - out.writeInt(mIconResId); out.writeInt(mFlags); out.writeCharSequence(mTitle); if (mSummary != null) { @@ -117,6 +120,13 @@ public final class MediaBrowserItem implements Parcelable { } else { out.writeInt(0); } + if (mIconUri != null) { + out.writeInt(1); + mIconUri.writeToParcel(out, flags); + } else { + out.writeInt(0); + } + out.writeInt(mIconResourceId); if (mExtras != null) { out.writeInt(1); mExtras.writeToParcel(out, flags); @@ -127,16 +137,16 @@ public final class MediaBrowserItem implements Parcelable { public static final Parcelable.Creator<MediaBrowserItem> CREATOR = new Parcelable.Creator<MediaBrowserItem>() { - @Override - public MediaBrowserItem createFromParcel(Parcel in) { - return new MediaBrowserItem(in); - } + @Override + public MediaBrowserItem createFromParcel(Parcel in) { + return new MediaBrowserItem(in); + } - @Override - public MediaBrowserItem[] newArray(int size) { - return new MediaBrowserItem[size]; - } - }; + @Override + public MediaBrowserItem[] newArray(int size) { + return new MediaBrowserItem[size]; + } + }; /** * Gets the Uri of the item. @@ -146,20 +156,6 @@ public final class MediaBrowserItem implements Parcelable { } /** - * Gets the Uri of the icon. - */ - public @Nullable Uri getIconUri() { - return mIconUri; - } - - /** - * Gets the resource id of the icon. - */ - public int getIconResId() { - return mIconResId; - } - - /** * Gets the flags of the item. */ public @Flags int getFlags() { @@ -203,6 +199,20 @@ public final class MediaBrowserItem implements Parcelable { } /** + * Gets the Uri of the icon. + */ + public @Nullable Uri getIconUri() { + return mIconUri; + } + + /** + * Gets the resource id of the icon. + */ + public @DrawableRes int getIconResourceId() { + return mIconResourceId; + } + + /** * Gets additional service-specified extras about the * item or its content, or null if none. */ @@ -217,9 +227,9 @@ public final class MediaBrowserItem implements Parcelable { private final Uri mUri; private final int mFlags; private final CharSequence mTitle; - private Uri mIconUri; - private int mIconResId; private CharSequence mSummary; + private Uri mIconUri; + private int mIconResourceId; private Bundle mExtras; /** @@ -238,10 +248,18 @@ public final class MediaBrowserItem implements Parcelable { } /** + * Sets summary of the item, or null if none. + */ + public @NonNull Builder setSummary(@Nullable CharSequence summary) { + mSummary = summary; + return this; + } + + /** * Sets the uri of the icon. * <p> - * If both {@link #setIconUri(Uri)} and {@link #setIconResId(int)} are called, - * the resource id will be used to load the icon. + * Either {@link #setIconUri(Uri)} or {@link #setIconResourceId(int)} should be called. + * If both are specified, the resource id will be used to load the icon. * </p> */ public @NonNull Builder setIconUri(@Nullable Uri iconUri) { @@ -251,35 +269,31 @@ public final class MediaBrowserItem implements Parcelable { /** * Sets the resource id of the icon. + * <p> + * Either {@link #setIconUri(Uri)} or {@link #setIconResourceId(int)} should be specified. + * If both are specified, the resource id will be used to load the icon. + * </p> */ - public @NonNull Builder setIconResId(int resId) { - mIconResId = resId; + public @NonNull Builder setIconResourceId(@DrawableRes int ResourceId) { + mIconResourceId = ResourceId; return this; } /** - * Sets summary of the item, or null if none. + * Sets additional service-specified extras about the + * item or its content. */ - public @NonNull Builder setSummary(@Nullable CharSequence summary) { - mSummary = summary; - return this; - } - - /** - * Sets additional service-specified extras about the - * item or its content, or null if none. - */ public @NonNull Builder setExtras(@Nullable Bundle extras) { mExtras = extras; return this; } /** - * Builds the item. - */ + * Builds the item. + */ public @NonNull MediaBrowserItem build() { - return new MediaBrowserItem(mUri, mIconUri, mIconResId, - mFlags, mTitle, mSummary, mExtras); + return new MediaBrowserItem(mUri, mFlags, mTitle, mSummary, mIconUri, + mIconResourceId, mExtras); } } } diff --git a/media/java/android/media/browse/MediaBrowserService.java b/media/java/android/media/browse/MediaBrowserService.java index 57befe7..95a133f 100644 --- a/media/java/android/media/browse/MediaBrowserService.java +++ b/media/java/android/media/browse/MediaBrowserService.java @@ -256,7 +256,7 @@ public abstract class MediaBrowserService extends Service { * for browsing, or null if none. The contents of this bundle may affect * the information returned when browsing. */ - protected abstract @Nullable BrowserRoot onGetRoot(@NonNull String clientPackageName, + public abstract @Nullable BrowserRoot onGetRoot(@NonNull String clientPackageName, int clientUid, @Nullable Bundle rootHints); /** @@ -266,7 +266,7 @@ public abstract class MediaBrowserService extends Service { * children are to be queried. * @return The list of children, or null if the uri is invalid. */ - protected abstract @Nullable List<MediaBrowserItem> onLoadChildren(@NonNull Uri parentUri); + public abstract @Nullable List<MediaBrowserItem> onLoadChildren(@NonNull Uri parentUri); /** * Called to get the thumbnail of a particular media item. @@ -278,7 +278,7 @@ public abstract class MediaBrowserService extends Service { * @return The file descriptor of the thumbnail, which may then be loaded * using a bitmap factory, or null if the item does not have a thumbnail. */ - protected abstract @Nullable Bitmap onGetThumbnail(@NonNull Uri uri, int width, int height); + public abstract @Nullable Bitmap onGetThumbnail(@NonNull Uri uri, int width, int height); /** * Call to set the media session. @@ -311,20 +311,21 @@ public abstract class MediaBrowserService extends Service { * @param parentUri The uri of the parent media item whose * children changed. */ - public void notifyChildrenChanged(@NonNull Uri parentUri) { + public void notifyChildrenChanged(@NonNull final Uri parentUri) { if (parentUri == null) { throw new IllegalArgumentException("parentUri cannot be null in notifyChildrenChanged"); } - for (IBinder binder : mConnections.keySet()) { - ConnectionRecord connection = mConnections.get(binder); - Set<Uri> uris = connection.subscriptions; - for (Uri uri : uris) { - if (uri.equals(parentUri)) { - performLoadChildren(uri, connection); - break; + mHandler.post(new Runnable() { + @Override + public void run() { + for (IBinder binder : mConnections.keySet()) { + ConnectionRecord connection = mConnections.get(binder); + if (connection.subscriptions.contains(parentUri)) { + performLoadChildren(parentUri, connection); + } } } - } + }); } /** @@ -380,9 +381,19 @@ public abstract class MediaBrowserService extends Service { } } - public static class BrowserRoot { + /** + * Contains information that the browser service needs to send to the client + * when first connected. + */ + public static final class BrowserRoot { final private Uri mUri; final private Bundle mExtras; + + /** + * Constructs a browser root. + * @param uri The root Uri for browsing. + * @param extras Any extras about the browser service. + */ public BrowserRoot(@NonNull Uri uri, @Nullable Bundle extras) { if (uri == null) { throw new IllegalArgumentException("The root uri in BrowserRoot cannot be null. " + @@ -392,11 +403,17 @@ public abstract class MediaBrowserService extends Service { mExtras = extras; } - Uri getRootUri() { + /** + * Gets the root uri for browsing. + */ + public Uri getRootUri() { return mUri; } - Bundle getExtras() { + /** + * Gets any extras about the brwoser service. + */ + public Bundle getExtras() { return mExtras; } } |