Add build rule for updatable media 1.0 APIs
Bug: 119539849, Bug: 119539141
Test: build and boot,
atest CtsMediaTestCases:android.media.cts.MediaSessionTest,
atest CtsMediaTestCases:android.media.cts.MediaControllerTest
Change-Id: Iaf07842de5aa00da5987b993b77960efa9a602bf
This commit is contained in:
@@ -50,6 +50,7 @@ java_defaults {
|
||||
|
||||
":framework-javastream-protos",
|
||||
// TODO: Remove this after introduce corresponding srcs under media/java/
|
||||
":media1-srcs",
|
||||
":mediasession2-srcs",
|
||||
|
||||
"core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl",
|
||||
@@ -503,11 +504,7 @@ java_defaults {
|
||||
"media/java/android/media/session/ICallback.aidl",
|
||||
"media/java/android/media/session/IOnMediaKeyListener.aidl",
|
||||
"media/java/android/media/session/IOnVolumeKeyLongPressListener.aidl",
|
||||
"media/java/android/media/session/ISession.aidl",
|
||||
"media/java/android/media/session/ISession2TokensListener.aidl",
|
||||
"media/java/android/media/session/ISessionCallback.aidl",
|
||||
"media/java/android/media/session/ISessionController.aidl",
|
||||
"media/java/android/media/session/ISessionControllerCallback.aidl",
|
||||
"media/java/android/media/session/ISessionManager.aidl",
|
||||
"media/java/android/media/soundtrigger/ISoundTriggerDetectionService.aidl",
|
||||
"media/java/android/media/soundtrigger/ISoundTriggerDetectionServiceClient.aidl",
|
||||
@@ -1271,6 +1268,7 @@ stubs_defaults {
|
||||
":non_openjdk_javadoc_files",
|
||||
":android_icu4j_src_files_for_docs",
|
||||
":conscrypt_public_api_files",
|
||||
":media1-stubs-srcs",
|
||||
":mediasession2-stubs-srcs",
|
||||
":mediaplayer2-srcs",
|
||||
"test-mock/src/**/*.java",
|
||||
@@ -1334,6 +1332,7 @@ stubs_defaults {
|
||||
":non_openjdk_javadoc_files",
|
||||
":android_icu4j_src_files_for_docs",
|
||||
":conscrypt_public_api_files",
|
||||
":media1-stubs-srcs",
|
||||
":mediasession2-stubs-srcs",
|
||||
":mediaplayer2-srcs",
|
||||
],
|
||||
@@ -1790,6 +1789,7 @@ filegroup {
|
||||
"core/java/android/annotation/RequiresPermission.java",
|
||||
"core/java/android/annotation/SdkConstant.java",
|
||||
"core/java/android/annotation/StringDef.java",
|
||||
"core/java/android/annotation/SystemApi.java",
|
||||
"core/java/android/annotation/TestApi.java",
|
||||
"core/java/android/annotation/UnsupportedAppUsage.java",
|
||||
"core/java/com/android/internal/annotations/GuardedBy.java",
|
||||
|
||||
@@ -1,17 +1,65 @@
|
||||
java_library {
|
||||
name: "media1",
|
||||
name: "updatable-media",
|
||||
|
||||
srcs: [
|
||||
":media1-srcs",
|
||||
":mediasession2-srcs",
|
||||
":mediaplayer2-srcs",
|
||||
":framework-media-annotation-srcs",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
"mediaplayer2-protos",
|
||||
],
|
||||
|
||||
aidl: {
|
||||
export_include_dirs: [
|
||||
"apex/java",
|
||||
],
|
||||
|
||||
include_dirs: [
|
||||
"frameworks/base/core/java",
|
||||
"frameworks/base/media/java",
|
||||
],
|
||||
},
|
||||
|
||||
installable: true,
|
||||
|
||||
// Make sure that the implementaion only relies on SDK or system APIs.
|
||||
sdk_version: "system_current",
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "media1-srcs",
|
||||
srcs: [
|
||||
"java/android/media/session/MediaSessionProviderService.java",
|
||||
"apex/java/android/media/MediaMetadata.java",
|
||||
"apex/java/android/media/MediaParceledListSlice.java",
|
||||
"apex/java/android/media/VolumeProvider.java",
|
||||
"apex/java/android/media/session/ControllerCallbackLink.java",
|
||||
"apex/java/android/media/session/ControllerLink.java",
|
||||
"apex/java/android/media/session/ISession.aidl",
|
||||
"apex/java/android/media/session/ISessionCallback.aidl",
|
||||
"apex/java/android/media/session/ISessionController.aidl",
|
||||
"apex/java/android/media/session/ISessionControllerCallback.aidl",
|
||||
"apex/java/android/media/session/MediaController.java",
|
||||
"apex/java/android/media/session/MediaSessionEngine.java",
|
||||
"apex/java/android/media/session/MediaSessionProviderService.java",
|
||||
"apex/java/android/media/session/PlaybackState.java",
|
||||
"apex/java/android/media/session/SessionCallbackLink.java",
|
||||
"apex/java/android/media/session/SessionLink.java",
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "media1-stubs-srcs",
|
||||
srcs: [
|
||||
":media1-srcs",
|
||||
],
|
||||
exclude_srcs: [
|
||||
"apex/java/android/media/session/ISession.aidl",
|
||||
"apex/java/android/media/session/ISessionCallback.aidl",
|
||||
"apex/java/android/media/session/ISessionController.aidl",
|
||||
"apex/java/android/media/session/ISessionControllerCallback.aidl",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -46,35 +94,6 @@ filegroup {
|
||||
],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "updatable-media",
|
||||
|
||||
srcs: [
|
||||
":mediasession2-srcs",
|
||||
":mediaplayer2-srcs",
|
||||
":framework-media-annotation-srcs",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
"mediaplayer2-protos",
|
||||
],
|
||||
|
||||
aidl: {
|
||||
export_include_dirs: [
|
||||
"apex/java",
|
||||
],
|
||||
|
||||
include_dirs: [
|
||||
"frameworks/base/core/java",
|
||||
],
|
||||
},
|
||||
|
||||
installable: true,
|
||||
|
||||
// Make sure that the implementaion only relies on SDK or system APIs.
|
||||
sdk_version: "system_current",
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mediaplayer2-srcs",
|
||||
srcs: [
|
||||
|
||||
@@ -250,16 +250,16 @@ public final class MediaMetadata implements Parcelable {
|
||||
* second line for media described by this metadata this should be preferred
|
||||
* to other fields if present.
|
||||
*/
|
||||
public static final String METADATA_KEY_DISPLAY_SUBTITLE
|
||||
= "android.media.metadata.DISPLAY_SUBTITLE";
|
||||
public static final String METADATA_KEY_DISPLAY_SUBTITLE =
|
||||
"android.media.metadata.DISPLAY_SUBTITLE";
|
||||
|
||||
/**
|
||||
* A description that is suitable for display to the user. When displaying
|
||||
* more information for media described by this metadata this should be
|
||||
* preferred to other fields if present.
|
||||
*/
|
||||
public static final String METADATA_KEY_DISPLAY_DESCRIPTION
|
||||
= "android.media.metadata.DISPLAY_DESCRIPTION";
|
||||
public static final String METADATA_KEY_DISPLAY_DESCRIPTION =
|
||||
"android.media.metadata.DISPLAY_DESCRIPTION";
|
||||
|
||||
/**
|
||||
* An icon or thumbnail that is suitable for display to the user. When
|
||||
@@ -270,8 +270,8 @@ public final class MediaMetadata implements Parcelable {
|
||||
* if it is too large. For higher resolution artwork
|
||||
* {@link #METADATA_KEY_DISPLAY_ICON_URI} should be used instead.
|
||||
*/
|
||||
public static final String METADATA_KEY_DISPLAY_ICON
|
||||
= "android.media.metadata.DISPLAY_ICON";
|
||||
public static final String METADATA_KEY_DISPLAY_ICON =
|
||||
"android.media.metadata.DISPLAY_ICON";
|
||||
|
||||
/**
|
||||
* A Uri formatted String for an icon or thumbnail that is suitable for
|
||||
@@ -285,8 +285,8 @@ public final class MediaMetadata implements Parcelable {
|
||||
* {@link ContentResolver#EXTRA_SIZE} for retrieving scaled artwork through
|
||||
* {@link ContentResolver#openTypedAssetFileDescriptor(Uri, String, Bundle)}.
|
||||
*/
|
||||
public static final String METADATA_KEY_DISPLAY_ICON_URI
|
||||
= "android.media.metadata.DISPLAY_ICON_URI";
|
||||
public static final String METADATA_KEY_DISPLAY_ICON_URI =
|
||||
"android.media.metadata.DISPLAY_ICON_URI";
|
||||
|
||||
/**
|
||||
* A String key for identifying the content. This value is specific to the
|
||||
@@ -320,8 +320,8 @@ public final class MediaMetadata implements Parcelable {
|
||||
* <li>{@link MediaDescription#BT_FOLDER_TYPE_YEARS}</li>
|
||||
* </ul>
|
||||
*/
|
||||
public static final String METADATA_KEY_BT_FOLDER_TYPE
|
||||
= "android.media.metadata.BT_FOLDER_TYPE";
|
||||
public static final String METADATA_KEY_BT_FOLDER_TYPE =
|
||||
"android.media.metadata.BT_FOLDER_TYPE";
|
||||
|
||||
private static final @TextKey String[] PREFERRED_DESCRIPTION_ORDER = {
|
||||
METADATA_KEY_TITLE,
|
||||
@@ -158,7 +158,10 @@ public abstract class VolumeProvider {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static abstract class Callback {
|
||||
public abstract static class Callback {
|
||||
/**
|
||||
* Called when volume changed.
|
||||
*/
|
||||
public abstract void onVolumeChanged(VolumeProvider volumeProvider);
|
||||
}
|
||||
}
|
||||
@@ -206,6 +206,7 @@ public final class MediaController {
|
||||
} catch (RuntimeException e) {
|
||||
Log.wtf(TAG, "Error calling adjustVolumeBy", e);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case KeyEvent.ACTION_UP: {
|
||||
@@ -319,7 +320,7 @@ public final class MediaController {
|
||||
*
|
||||
* @return The current set of flags for the session.
|
||||
*/
|
||||
public @MediaSession.SessionFlags long getFlags() {
|
||||
public long getFlags() {
|
||||
try {
|
||||
return mSessionBinder.getFlags();
|
||||
} catch (RuntimeException e) {
|
||||
@@ -582,7 +583,7 @@ public final class MediaController {
|
||||
return null;
|
||||
}
|
||||
|
||||
private final void postMessage(int what, Object obj, Bundle data) {
|
||||
private void postMessage(int what, Object obj, Bundle data) {
|
||||
synchronized (mLock) {
|
||||
for (int i = mCallbacks.size() - 1; i >= 0; i--) {
|
||||
mCallbacks.get(i).post(what, obj, data);
|
||||
@@ -594,7 +595,7 @@ public final class MediaController {
|
||||
* Callback for receiving updates from the session. A Callback can be
|
||||
* registered using {@link #registerCallback}.
|
||||
*/
|
||||
public static abstract class Callback {
|
||||
public abstract static class Callback {
|
||||
/**
|
||||
* Override to handle the session being destroyed. The session is no
|
||||
* longer valid after this call and calls to it will be ignored.
|
||||
@@ -1191,11 +1192,11 @@ public final class MediaController {
|
||||
}
|
||||
}
|
||||
|
||||
private final static class MessageHandler extends Handler {
|
||||
private static final class MessageHandler extends Handler {
|
||||
private final MediaController.Callback mCallback;
|
||||
private boolean mRegistered = false;
|
||||
|
||||
public MessageHandler(Looper looper, MediaController.Callback cb) {
|
||||
MessageHandler(Looper looper, MediaController.Callback cb) {
|
||||
super(looper);
|
||||
mCallback = cb;
|
||||
}
|
||||
@@ -53,7 +53,7 @@ import java.util.Objects;
|
||||
*/
|
||||
@SystemApi
|
||||
public final class MediaSessionEngine implements AutoCloseable {
|
||||
private static final String TAG = MediaSession.TAG;
|
||||
private static final String TAG = "MediaSession";
|
||||
|
||||
private final Object mLock = new Object();
|
||||
private final int mMaxBitmapSize;
|
||||
@@ -172,7 +172,7 @@ public final class MediaSessionEngine implements AutoCloseable {
|
||||
*
|
||||
* @param flags The flags to set for this session.
|
||||
*/
|
||||
public void setFlags(@MediaSession.SessionFlags int flags) {
|
||||
public void setFlags(int flags) {
|
||||
try {
|
||||
mSessionLink.setFlags(flags);
|
||||
} catch (RuntimeException e) {
|
||||
@@ -409,7 +409,7 @@ public final class MediaSessionEngine implements AutoCloseable {
|
||||
* <li>{@link Rating#RATING_THUMB_UP_DOWN}</li>
|
||||
* </ul>
|
||||
*/
|
||||
public void setRatingType(@Rating.Style int type) {
|
||||
public void setRatingType(int type) {
|
||||
try {
|
||||
mSessionLink.setRatingType(type);
|
||||
} catch (RuntimeException e) {
|
||||
@@ -41,7 +41,7 @@ public final class PlaybackState implements Parcelable {
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@LongDef(flag=true, value={ACTION_STOP, ACTION_PAUSE, ACTION_PLAY, ACTION_REWIND,
|
||||
@LongDef(flag = true, value = {ACTION_STOP, ACTION_PAUSE, ACTION_PLAY, ACTION_REWIND,
|
||||
ACTION_SKIP_TO_PREVIOUS, ACTION_SKIP_TO_NEXT, ACTION_FAST_FORWARD, ACTION_SET_RATING,
|
||||
ACTION_SEEK_TO, ACTION_PLAY_PAUSE, ACTION_PLAY_FROM_MEDIA_ID, ACTION_PLAY_FROM_SEARCH,
|
||||
ACTION_SKIP_TO_QUEUE_ITEM, ACTION_PLAY_FROM_URI, ACTION_PREPARE,
|
||||
@@ -191,42 +191,42 @@ public final class PlaybackState implements Parcelable {
|
||||
* @see Builder#setState(int, long, float)
|
||||
* @see Builder#setState(int, long, float, long)
|
||||
*/
|
||||
public final static int STATE_NONE = 0;
|
||||
public static final int STATE_NONE = 0;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently stopped.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_STOPPED = 1;
|
||||
public static final int STATE_STOPPED = 1;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently paused.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_PAUSED = 2;
|
||||
public static final int STATE_PAUSED = 2;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently playing.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_PLAYING = 3;
|
||||
public static final int STATE_PLAYING = 3;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently fast forwarding.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_FAST_FORWARDING = 4;
|
||||
public static final int STATE_FAST_FORWARDING = 4;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently rewinding.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_REWINDING = 5;
|
||||
public static final int STATE_REWINDING = 5;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently buffering and will begin playing
|
||||
@@ -234,7 +234,7 @@ public final class PlaybackState implements Parcelable {
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_BUFFERING = 6;
|
||||
public static final int STATE_BUFFERING = 6;
|
||||
|
||||
/**
|
||||
* State indicating this item is currently in an error state. The error
|
||||
@@ -242,7 +242,7 @@ public final class PlaybackState implements Parcelable {
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_ERROR = 7;
|
||||
public static final int STATE_ERROR = 7;
|
||||
|
||||
/**
|
||||
* State indicating the class doing playback is currently connecting to a
|
||||
@@ -252,21 +252,21 @@ public final class PlaybackState implements Parcelable {
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_CONNECTING = 8;
|
||||
public static final int STATE_CONNECTING = 8;
|
||||
|
||||
/**
|
||||
* State indicating the player is currently skipping to the previous item.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_SKIPPING_TO_PREVIOUS = 9;
|
||||
public static final int STATE_SKIPPING_TO_PREVIOUS = 9;
|
||||
|
||||
/**
|
||||
* State indicating the player is currently skipping to the next item.
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_SKIPPING_TO_NEXT = 10;
|
||||
public static final int STATE_SKIPPING_TO_NEXT = 10;
|
||||
|
||||
/**
|
||||
* State indicating the player is currently skipping to a specific item in
|
||||
@@ -274,12 +274,12 @@ public final class PlaybackState implements Parcelable {
|
||||
*
|
||||
* @see Builder#setState
|
||||
*/
|
||||
public final static int STATE_SKIPPING_TO_QUEUE_ITEM = 11;
|
||||
public static final int STATE_SKIPPING_TO_QUEUE_ITEM = 11;
|
||||
|
||||
/**
|
||||
* Use this value for the position to indicate the position is not known.
|
||||
*/
|
||||
public final static long PLAYBACK_POSITION_UNKNOWN = -1;
|
||||
public static final long PLAYBACK_POSITION_UNKNOWN = -1;
|
||||
|
||||
private final int mState;
|
||||
private final long mPosition;
|
||||
@@ -534,19 +534,19 @@ public final class PlaybackState implements Parcelable {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<PlaybackState.CustomAction> CREATOR
|
||||
= new Parcelable.Creator<PlaybackState.CustomAction>() {
|
||||
public static final Parcelable.Creator<PlaybackState.CustomAction> CREATOR =
|
||||
new Parcelable.Creator<PlaybackState.CustomAction>() {
|
||||
|
||||
@Override
|
||||
public PlaybackState.CustomAction createFromParcel(Parcel p) {
|
||||
return new PlaybackState.CustomAction(p);
|
||||
}
|
||||
@Override
|
||||
public PlaybackState.CustomAction createFromParcel(Parcel p) {
|
||||
return new PlaybackState.CustomAction(p);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlaybackState.CustomAction[] newArray(int size) {
|
||||
return new PlaybackState.CustomAction[size];
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public PlaybackState.CustomAction[] newArray(int size) {
|
||||
return new PlaybackState.CustomAction[size];
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the action of the {@link CustomAction}.
|
||||
@@ -588,10 +588,7 @@ public final class PlaybackState implements Parcelable {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Action:" +
|
||||
"mName='" + mName +
|
||||
", mIcon=" + mIcon +
|
||||
", mExtras=" + mExtras;
|
||||
return "Action:" + "mName='" + mName + ", mIcon=" + mIcon + ", mExtras=" + mExtras;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -23,8 +23,6 @@ import android.app.PendingIntent;
|
||||
import android.media.AudioAttributes;
|
||||
import android.media.MediaMetadata;
|
||||
import android.media.MediaParceledListSlice;
|
||||
import android.media.Rating;
|
||||
import android.media.VolumeProvider;
|
||||
import android.media.session.MediaSession.QueueItem;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
@@ -234,7 +232,7 @@ public final class SessionLink implements Parcelable {
|
||||
*
|
||||
* @param type the rating type.
|
||||
*/
|
||||
void setRatingType(@Rating.Style int type) {
|
||||
void setRatingType(int type) {
|
||||
try {
|
||||
mISession.setRatingType(type);
|
||||
} catch (RemoteException e) {
|
||||
@@ -261,7 +259,7 @@ public final class SessionLink implements Parcelable {
|
||||
* @param control the volume control type
|
||||
* @param max the max volume
|
||||
*/
|
||||
void setPlaybackToRemote(@VolumeProvider.ControlType int control, int max) {
|
||||
void setPlaybackToRemote(int control, int max) {
|
||||
try {
|
||||
mISession.setPlaybackToRemote(control, max);
|
||||
} catch (RemoteException e) {
|
||||
Reference in New Issue
Block a user