Move MediaBrowser API into updatable media
Bug: 119539966, Bug: 119538799
Test: build and boot,
atest CtsMediaTestCases:android.media.cts.MediaBrowserTest,
atest CtsMediaTestCases:android.media.cts.MediaBrowserServiceTest
Change-Id: I7afed77e61506a1b4ea57ac41eee62bfcda01a74
This commit is contained in:
@@ -519,8 +519,6 @@ java_defaults {
|
||||
"media/java/android/media/tv/ITvInputSessionCallback.aidl",
|
||||
"media/java/android/media/tv/ITvRemoteProvider.aidl",
|
||||
"media/java/android/media/tv/ITvRemoteServiceInput.aidl",
|
||||
"media/java/android/service/media/IMediaBrowserService.aidl",
|
||||
"media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl",
|
||||
"telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl",
|
||||
"telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl",
|
||||
"telecomm/java/com/android/internal/telecom/ICallScreeningAdapter.aidl",
|
||||
|
||||
@@ -35,6 +35,8 @@ filegroup {
|
||||
"apex/java/android/media/MediaMetadata.java",
|
||||
"apex/java/android/media/MediaParceledListSlice.java",
|
||||
"apex/java/android/media/VolumeProvider.java",
|
||||
"apex/java/android/media/browse/MediaBrowser.java",
|
||||
"apex/java/android/media/browse/MediaBrowserUtils.java",
|
||||
"apex/java/android/media/session/ControllerCallbackLink.java",
|
||||
"apex/java/android/media/session/ControllerLink.java",
|
||||
"apex/java/android/media/session/ISession.aidl",
|
||||
@@ -47,6 +49,9 @@ filegroup {
|
||||
"apex/java/android/media/session/PlaybackState.java",
|
||||
"apex/java/android/media/session/SessionCallbackLink.java",
|
||||
"apex/java/android/media/session/SessionLink.java",
|
||||
"apex/java/android/service/media/IMediaBrowserService.aidl",
|
||||
"apex/java/android/service/media/IMediaBrowserServiceCallbacks.aidl",
|
||||
"apex/java/android/service/media/MediaBrowserService.java",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -60,6 +65,8 @@ filegroup {
|
||||
"apex/java/android/media/session/ISessionCallback.aidl",
|
||||
"apex/java/android/media/session/ISessionController.aidl",
|
||||
"apex/java/android/media/session/ISessionControllerCallback.aidl",
|
||||
"apex/java/android/service/media/IMediaBrowserService.aidl",
|
||||
"apex/java/android/service/media/IMediaBrowserServiceCallbacks.aidl",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
@@ -284,8 +284,8 @@ public final class MediaBrowser {
|
||||
*/
|
||||
public @NonNull ComponentName getServiceComponent() {
|
||||
if (!isConnected()) {
|
||||
throw new IllegalStateException("getServiceComponent() called while not connected" +
|
||||
" (state=" + mState + ")");
|
||||
throw new IllegalStateException("getServiceComponent() called while not connected"
|
||||
+ " (state=" + mState + ")");
|
||||
}
|
||||
return mServiceComponent;
|
||||
}
|
||||
@@ -331,7 +331,7 @@ public final class MediaBrowser {
|
||||
*
|
||||
* @throws IllegalStateException if not connected.
|
||||
*/
|
||||
public @NonNull MediaSession.Token getSessionToken() {
|
||||
public @NonNull MediaSession.Token getSessionToken() {
|
||||
if (!isConnected()) {
|
||||
throw new IllegalStateException("getSessionToken() called while not connected (state="
|
||||
+ mState + ")");
|
||||
@@ -464,7 +464,7 @@ public final class MediaBrowser {
|
||||
cb.onError(mediaId);
|
||||
return;
|
||||
}
|
||||
cb.onItemLoaded((MediaItem)item);
|
||||
cb.onItemLoaded((MediaItem) item);
|
||||
}
|
||||
};
|
||||
try {
|
||||
@@ -575,7 +575,7 @@ public final class MediaBrowser {
|
||||
}
|
||||
}
|
||||
|
||||
private final void onServiceConnected(final IMediaBrowserServiceCallbacks callback,
|
||||
private void onServiceConnected(final IMediaBrowserServiceCallbacks callback,
|
||||
final String root, final MediaSession.Token session, final Bundle extra) {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
@@ -625,7 +625,7 @@ public final class MediaBrowser {
|
||||
});
|
||||
}
|
||||
|
||||
private final void onConnectionFailed(final IMediaBrowserServiceCallbacks callback) {
|
||||
private void onConnectionFailed(final IMediaBrowserServiceCallbacks callback) {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -652,7 +652,7 @@ public final class MediaBrowser {
|
||||
});
|
||||
}
|
||||
|
||||
private final void onLoadChildren(final IMediaBrowserServiceCallbacks callback,
|
||||
private void onLoadChildren(final IMediaBrowserServiceCallbacks callback,
|
||||
final String parentId, final MediaParceledListSlice list, final Bundle options) {
|
||||
mHandler.post(new Runnable() {
|
||||
@Override
|
||||
@@ -745,7 +745,7 @@ public final class MediaBrowser {
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef(flag=true, value = { FLAG_BROWSABLE, FLAG_PLAYABLE })
|
||||
@IntDef(flag = true, value = { FLAG_BROWSABLE, FLAG_PLAYABLE })
|
||||
public @interface Flags { }
|
||||
|
||||
/**
|
||||
@@ -886,7 +886,7 @@ public final class MediaBrowser {
|
||||
/**
|
||||
* Callbacks for subscription related events.
|
||||
*/
|
||||
public static abstract class SubscriptionCallback {
|
||||
public abstract static class SubscriptionCallback {
|
||||
Binder mToken;
|
||||
|
||||
public SubscriptionCallback() {
|
||||
@@ -947,7 +947,7 @@ public final class MediaBrowser {
|
||||
/**
|
||||
* Callback for receiving the result of {@link #getItem}.
|
||||
*/
|
||||
public static abstract class ItemCallback {
|
||||
public abstract static class ItemCallback {
|
||||
/**
|
||||
* Called when the item has been returned by the connected service.
|
||||
*
|
||||
@@ -1078,7 +1078,7 @@ public final class MediaBrowser {
|
||||
private static class ServiceCallbacks extends IMediaBrowserServiceCallbacks.Stub {
|
||||
private WeakReference<MediaBrowser> mMediaBrowser;
|
||||
|
||||
public ServiceCallbacks(MediaBrowser mediaBrowser) {
|
||||
ServiceCallbacks(MediaBrowser mediaBrowser) {
|
||||
mMediaBrowser = new WeakReference<MediaBrowser>(mediaBrowser);
|
||||
}
|
||||
|
||||
@@ -1125,7 +1125,7 @@ public final class MediaBrowser {
|
||||
private final List<SubscriptionCallback> mCallbacks;
|
||||
private final List<Bundle> mOptionsList;
|
||||
|
||||
public Subscription() {
|
||||
Subscription() {
|
||||
mCallbacks = new ArrayList<>();
|
||||
mOptionsList = new ArrayList<>();
|
||||
}
|
||||
@@ -22,6 +22,9 @@ import android.os.Bundle;
|
||||
* @hide
|
||||
*/
|
||||
public class MediaBrowserUtils {
|
||||
/**
|
||||
* Compares whether two bundles are the same.
|
||||
*/
|
||||
public static boolean areSameOptions(Bundle options1, Bundle options2) {
|
||||
if (options1 == options2) {
|
||||
return true;
|
||||
@@ -39,6 +42,9 @@ public class MediaBrowserUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returnes true if the page options has duplicated items.
|
||||
*/
|
||||
public static boolean hasDuplicatedItems(Bundle options1, Bundle options2) {
|
||||
int page1 = options1 == null ? -1 : options1.getInt(MediaBrowser.EXTRA_PAGE, -1);
|
||||
int page2 = options2 == null ? -1 : options2.getInt(MediaBrowser.EXTRA_PAGE, -1);
|
||||
@@ -2,9 +2,7 @@
|
||||
|
||||
package android.service.media;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.service.media.IMediaBrowserServiceCallbacks;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.ResultReceiver;
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
package android.service.media;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.MediaParceledListSlice;
|
||||
import android.media.session.MediaSession;
|
||||
import android.os.Bundle;
|
||||
@@ -98,7 +98,7 @@ public abstract class MediaBrowserService extends Service {
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef(flag=true, value = { RESULT_FLAG_OPTION_NOT_HANDLED,
|
||||
@IntDef(flag = true, value = { RESULT_FLAG_OPTION_NOT_HANDLED,
|
||||
RESULT_FLAG_ON_LOAD_ITEM_NOT_IMPLEMENTED })
|
||||
private @interface ResultFlags { }
|
||||
|
||||
@@ -291,7 +291,7 @@ public abstract class MediaBrowserService extends Service {
|
||||
final ConnectionRecord connection = mConnections.get(b);
|
||||
if (connection == null) {
|
||||
Log.w(TAG, "addSubscription for callback that isn't registered id="
|
||||
+ id);
|
||||
+ id);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -301,7 +301,8 @@ public abstract class MediaBrowserService extends Service {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSubscriptionDeprecated(String id, IMediaBrowserServiceCallbacks callbacks) {
|
||||
public void removeSubscriptionDeprecated(
|
||||
String id, IMediaBrowserServiceCallbacks callbacks) {
|
||||
// do-nothing
|
||||
}
|
||||
|
||||
@@ -487,7 +488,7 @@ public abstract class MediaBrowserService extends Service {
|
||||
@Override
|
||||
public void run() {
|
||||
Iterator<ConnectionRecord> iter = mConnections.values().iterator();
|
||||
while (iter.hasNext()){
|
||||
while (iter.hasNext()) {
|
||||
ConnectionRecord connection = iter.next();
|
||||
try {
|
||||
connection.callbacks.onConnect(connection.root.getRootId(), token,
|
||||
@@ -607,7 +608,7 @@ public abstract class MediaBrowserService extends Service {
|
||||
final PackageManager pm = getPackageManager();
|
||||
final String[] packages = pm.getPackagesForUid(uid);
|
||||
final int N = packages.length;
|
||||
for (int i=0; i<N; i++) {
|
||||
for (int i = 0; i < N; i++) {
|
||||
if (packages[i].equals(pkg)) {
|
||||
return true;
|
||||
}
|
||||
@@ -648,7 +649,7 @@ public abstract class MediaBrowserService extends Service {
|
||||
List<Pair<IBinder, Bundle>> callbackList = connection.subscriptions.get(id);
|
||||
if (callbackList != null) {
|
||||
Iterator<Pair<IBinder, Bundle>> iter = callbackList.iterator();
|
||||
while (iter.hasNext()){
|
||||
while (iter.hasNext()) {
|
||||
if (token == iter.next().first) {
|
||||
removed = true;
|
||||
iter.remove();
|
||||
@@ -819,8 +820,8 @@ public abstract class MediaBrowserService extends Service {
|
||||
*/
|
||||
public static final String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
|
||||
|
||||
final private String mRootId;
|
||||
final private Bundle mExtras;
|
||||
private final String mRootId;
|
||||
private final Bundle mExtras;
|
||||
|
||||
/**
|
||||
* Constructs a browser root.
|
||||
@@ -829,8 +830,8 @@ public abstract class MediaBrowserService extends Service {
|
||||
*/
|
||||
public BrowserRoot(@NonNull String rootId, @Nullable Bundle extras) {
|
||||
if (rootId == null) {
|
||||
throw new IllegalArgumentException("The root id in BrowserRoot cannot be null. " +
|
||||
"Use null for BrowserRoot instead.");
|
||||
throw new IllegalArgumentException("The root id in BrowserRoot cannot be null. "
|
||||
+ "Use null for BrowserRoot instead.");
|
||||
}
|
||||
mRootId = rootId;
|
||||
mExtras = extras;
|
||||
Reference in New Issue
Block a user