summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYao Chen <yaochen@google.com>2014-07-23 20:25:08 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-23 18:56:15 +0000
commitf805afc4d76ce6f141b50c37b97493335e302a6f (patch)
treec2eeac5a7de2ca7f62ebd4a468364f97be3a7a0d
parent80bc75a71ea9f428462ce2810a6f22b1c09c2701 (diff)
parent7e21fe8be9d374d31e75cdc2c9a11f977ba1faa0 (diff)
downloadframeworks_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.txt14
-rw-r--r--media/java/android/media/browse/MediaBrowserItem.java120
-rw-r--r--media/java/android/media/browse/MediaBrowserService.java47
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;
}
}