Loading media/java/android/media/MediaLibraryService2.java +40 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.media.MediaSession2.ControllerInfo; import android.media.update.ApiLoader; import android.media.update.MediaLibraryService2Provider.LibraryRootProvider; import android.media.update.MediaLibraryService2Provider.MediaLibrarySessionProvider; import android.media.update.MediaSession2Provider; import android.media.update.MediaSessionService2Provider; import android.os.Bundle; Loading Loading @@ -63,7 +62,8 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { public static final String SERVICE_INTERFACE = "android.media.MediaLibraryService2"; /** * Session for the media library service. * Session for the {@link MediaLibraryService2}. Build this object with * {@link MediaLibrarySessionBuilder} and return in {@link #onCreateSession(String)}. */ public static class MediaLibrarySession extends MediaSession2 { private final MediaLibrarySessionProvider mProvider; Loading Loading @@ -101,6 +101,9 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { } } /** * Callback for the {@link MediaLibrarySession}. */ public static class MediaLibrarySessionCallback extends MediaSession2.SessionCallback { public MediaLibrarySessionCallback(Context context) { Loading Loading @@ -200,6 +203,8 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { /** * Builder for {@link MediaLibrarySession}. */ // Override all methods just to show them with the type instead of generics in Javadoc. // This workarounds javadoc issue described in the MediaSession2.BuilderBase. public class MediaLibrarySessionBuilder extends BuilderBase<MediaLibrarySession, MediaLibrarySessionBuilder, MediaLibrarySessionCallback> { public MediaLibrarySessionBuilder( Loading @@ -210,6 +215,38 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { context, (MediaLibrarySessionBuilder) instance, player, callbackExecutor, callback)); } @Override public MediaLibrarySessionBuilder setVolumeProvider( @Nullable VolumeProvider2 volumeProvider) { return super.setVolumeProvider(volumeProvider); } @Override public MediaLibrarySessionBuilder setRatingType(int type) { return super.setRatingType(type); } @Override public MediaLibrarySessionBuilder setSessionActivity(@Nullable PendingIntent pi) { return super.setSessionActivity(pi); } @Override public MediaLibrarySessionBuilder setId(String id) { return super.setId(id); } @Override public MediaLibrarySessionBuilder setSessionCallback( @NonNull Executor executor, @NonNull MediaLibrarySessionCallback callback) { return super.setSessionCallback(executor, callback); } @Override public MediaLibrarySession build() { return super.build(); } } @Override Loading @@ -229,7 +266,7 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { * This method will be called on the main thread. * * @param sessionId session id written in the AndroidManifest.xml. * @return a new browser session * @return a new library session * @see MediaLibrarySessionBuilder * @see #getSession() * @throws RuntimeException if returned session is invalid Loading media/java/android/media/MediaSession2.java +53 −10 Original line number Diff line number Diff line Loading @@ -580,8 +580,20 @@ public class MediaSession2 implements AutoCloseable { }; /** * Base builder class for MediaSession2 and its subclass. * * Base builder class for MediaSession2 and its subclass. Any change in this class should be * also applied to the subclasses {@link MediaSession2.Builder} and * {@link MediaLibraryService2.MediaLibrarySessionBuilder}. * <p> * APIs here should be package private, but should have documentations for developers. * Otherwise, javadoc will generate documentation with the generic types such as follows. * <pre>U extends BuilderBase<T, U, C> setSessionCallback(Executor executor, C callback)</pre> * <p> * This class is hidden to prevent from generating test stub, which fails with * 'unexpected bound' because it tries to auto generate stub class as follows. * <pre>abstract static class BuilderBase< * T extends android.media.MediaSession2, * U extends android.media.MediaSession2.BuilderBase< * T, U, C extends android.media.MediaSession2.SessionCallback>, C></pre> * @hide */ static abstract class BuilderBase Loading @@ -601,7 +613,7 @@ public class MediaSession2 implements AutoCloseable { * * @param volumeProvider The provider that will handle volume changes. Can be {@code null}. */ public U setVolumeProvider(@Nullable VolumeProvider2 volumeProvider) { U setVolumeProvider(@Nullable VolumeProvider2 volumeProvider) { mProvider.setVolumeProvider_impl(volumeProvider); return (U) this; } Loading @@ -619,7 +631,7 @@ public class MediaSession2 implements AutoCloseable { * <li>{@link Rating2#RATING_THUMB_UP_DOWN}</li> * </ul> */ public U setRatingType(@Rating2.Style int type) { U setRatingType(@Rating2.Style int type) { mProvider.setRatingType_impl(type); return (U) this; } Loading @@ -631,7 +643,7 @@ public class MediaSession2 implements AutoCloseable { * * @param pi The intent to launch to show UI for this session. */ public U setSessionActivity(@Nullable PendingIntent pi) { U setSessionActivity(@Nullable PendingIntent pi) { mProvider.setSessionActivity_impl(pi); return (U) this; } Loading @@ -646,7 +658,7 @@ public class MediaSession2 implements AutoCloseable { * @throws IllegalArgumentException if id is {@code null} * @return */ public U setId(@NonNull String id) { U setId(@NonNull String id) { mProvider.setId_impl(id); return (U) this; } Loading @@ -658,7 +670,7 @@ public class MediaSession2 implements AutoCloseable { * @param callback session callback. * @return */ public U setSessionCallback(@NonNull @CallbackExecutor Executor executor, U setSessionCallback(@NonNull @CallbackExecutor Executor executor, @NonNull C callback) { mProvider.setSessionCallback_impl(executor, callback); return (U) this; Loading @@ -671,7 +683,7 @@ public class MediaSession2 implements AutoCloseable { * @throws IllegalStateException if the session with the same id is already exists for the * package. */ public T build() { T build() { return mProvider.build_impl(); } } Loading @@ -682,13 +694,44 @@ public class MediaSession2 implements AutoCloseable { * Any incoming event from the {@link MediaController2} will be handled on the thread * that created session with the {@link Builder#build()}. */ // TODO(jaewan): Add setRatingType() // TODO(jaewan): Add setSessionActivity() // Override all methods just to show them with the type instead of generics in Javadoc. // This workarounds javadoc issue described in the MediaSession2.BuilderBase. public static final class Builder extends BuilderBase<MediaSession2, Builder, SessionCallback> { public Builder(Context context, @NonNull MediaPlayerInterface player) { super((instance) -> ApiLoader.getProvider(context).createMediaSession2Builder( context, (Builder) instance, player)); } @Override public Builder setVolumeProvider(@Nullable VolumeProvider2 volumeProvider) { return super.setVolumeProvider(volumeProvider); } @Override public Builder setRatingType(@Rating2.Style int type) { return super.setRatingType(type); } @Override public Builder setSessionActivity(@Nullable PendingIntent pi) { return super.setSessionActivity(pi); } @Override public Builder setId(@NonNull String id) { return super.setId(id); } @Override public Builder setSessionCallback(@NonNull Executor executor, @Nullable SessionCallback callback) { return super.setSessionCallback(executor, callback); } @Override public MediaSession2 build() { return super.build(); } } /** Loading Loading
media/java/android/media/MediaLibraryService2.java +40 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.media.MediaSession2.ControllerInfo; import android.media.update.ApiLoader; import android.media.update.MediaLibraryService2Provider.LibraryRootProvider; import android.media.update.MediaLibraryService2Provider.MediaLibrarySessionProvider; import android.media.update.MediaSession2Provider; import android.media.update.MediaSessionService2Provider; import android.os.Bundle; Loading Loading @@ -63,7 +62,8 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { public static final String SERVICE_INTERFACE = "android.media.MediaLibraryService2"; /** * Session for the media library service. * Session for the {@link MediaLibraryService2}. Build this object with * {@link MediaLibrarySessionBuilder} and return in {@link #onCreateSession(String)}. */ public static class MediaLibrarySession extends MediaSession2 { private final MediaLibrarySessionProvider mProvider; Loading Loading @@ -101,6 +101,9 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { } } /** * Callback for the {@link MediaLibrarySession}. */ public static class MediaLibrarySessionCallback extends MediaSession2.SessionCallback { public MediaLibrarySessionCallback(Context context) { Loading Loading @@ -200,6 +203,8 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { /** * Builder for {@link MediaLibrarySession}. */ // Override all methods just to show them with the type instead of generics in Javadoc. // This workarounds javadoc issue described in the MediaSession2.BuilderBase. public class MediaLibrarySessionBuilder extends BuilderBase<MediaLibrarySession, MediaLibrarySessionBuilder, MediaLibrarySessionCallback> { public MediaLibrarySessionBuilder( Loading @@ -210,6 +215,38 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { context, (MediaLibrarySessionBuilder) instance, player, callbackExecutor, callback)); } @Override public MediaLibrarySessionBuilder setVolumeProvider( @Nullable VolumeProvider2 volumeProvider) { return super.setVolumeProvider(volumeProvider); } @Override public MediaLibrarySessionBuilder setRatingType(int type) { return super.setRatingType(type); } @Override public MediaLibrarySessionBuilder setSessionActivity(@Nullable PendingIntent pi) { return super.setSessionActivity(pi); } @Override public MediaLibrarySessionBuilder setId(String id) { return super.setId(id); } @Override public MediaLibrarySessionBuilder setSessionCallback( @NonNull Executor executor, @NonNull MediaLibrarySessionCallback callback) { return super.setSessionCallback(executor, callback); } @Override public MediaLibrarySession build() { return super.build(); } } @Override Loading @@ -229,7 +266,7 @@ public abstract class MediaLibraryService2 extends MediaSessionService2 { * This method will be called on the main thread. * * @param sessionId session id written in the AndroidManifest.xml. * @return a new browser session * @return a new library session * @see MediaLibrarySessionBuilder * @see #getSession() * @throws RuntimeException if returned session is invalid Loading
media/java/android/media/MediaSession2.java +53 −10 Original line number Diff line number Diff line Loading @@ -580,8 +580,20 @@ public class MediaSession2 implements AutoCloseable { }; /** * Base builder class for MediaSession2 and its subclass. * * Base builder class for MediaSession2 and its subclass. Any change in this class should be * also applied to the subclasses {@link MediaSession2.Builder} and * {@link MediaLibraryService2.MediaLibrarySessionBuilder}. * <p> * APIs here should be package private, but should have documentations for developers. * Otherwise, javadoc will generate documentation with the generic types such as follows. * <pre>U extends BuilderBase<T, U, C> setSessionCallback(Executor executor, C callback)</pre> * <p> * This class is hidden to prevent from generating test stub, which fails with * 'unexpected bound' because it tries to auto generate stub class as follows. * <pre>abstract static class BuilderBase< * T extends android.media.MediaSession2, * U extends android.media.MediaSession2.BuilderBase< * T, U, C extends android.media.MediaSession2.SessionCallback>, C></pre> * @hide */ static abstract class BuilderBase Loading @@ -601,7 +613,7 @@ public class MediaSession2 implements AutoCloseable { * * @param volumeProvider The provider that will handle volume changes. Can be {@code null}. */ public U setVolumeProvider(@Nullable VolumeProvider2 volumeProvider) { U setVolumeProvider(@Nullable VolumeProvider2 volumeProvider) { mProvider.setVolumeProvider_impl(volumeProvider); return (U) this; } Loading @@ -619,7 +631,7 @@ public class MediaSession2 implements AutoCloseable { * <li>{@link Rating2#RATING_THUMB_UP_DOWN}</li> * </ul> */ public U setRatingType(@Rating2.Style int type) { U setRatingType(@Rating2.Style int type) { mProvider.setRatingType_impl(type); return (U) this; } Loading @@ -631,7 +643,7 @@ public class MediaSession2 implements AutoCloseable { * * @param pi The intent to launch to show UI for this session. */ public U setSessionActivity(@Nullable PendingIntent pi) { U setSessionActivity(@Nullable PendingIntent pi) { mProvider.setSessionActivity_impl(pi); return (U) this; } Loading @@ -646,7 +658,7 @@ public class MediaSession2 implements AutoCloseable { * @throws IllegalArgumentException if id is {@code null} * @return */ public U setId(@NonNull String id) { U setId(@NonNull String id) { mProvider.setId_impl(id); return (U) this; } Loading @@ -658,7 +670,7 @@ public class MediaSession2 implements AutoCloseable { * @param callback session callback. * @return */ public U setSessionCallback(@NonNull @CallbackExecutor Executor executor, U setSessionCallback(@NonNull @CallbackExecutor Executor executor, @NonNull C callback) { mProvider.setSessionCallback_impl(executor, callback); return (U) this; Loading @@ -671,7 +683,7 @@ public class MediaSession2 implements AutoCloseable { * @throws IllegalStateException if the session with the same id is already exists for the * package. */ public T build() { T build() { return mProvider.build_impl(); } } Loading @@ -682,13 +694,44 @@ public class MediaSession2 implements AutoCloseable { * Any incoming event from the {@link MediaController2} will be handled on the thread * that created session with the {@link Builder#build()}. */ // TODO(jaewan): Add setRatingType() // TODO(jaewan): Add setSessionActivity() // Override all methods just to show them with the type instead of generics in Javadoc. // This workarounds javadoc issue described in the MediaSession2.BuilderBase. public static final class Builder extends BuilderBase<MediaSession2, Builder, SessionCallback> { public Builder(Context context, @NonNull MediaPlayerInterface player) { super((instance) -> ApiLoader.getProvider(context).createMediaSession2Builder( context, (Builder) instance, player)); } @Override public Builder setVolumeProvider(@Nullable VolumeProvider2 volumeProvider) { return super.setVolumeProvider(volumeProvider); } @Override public Builder setRatingType(@Rating2.Style int type) { return super.setRatingType(type); } @Override public Builder setSessionActivity(@Nullable PendingIntent pi) { return super.setSessionActivity(pi); } @Override public Builder setId(@NonNull String id) { return super.setId(id); } @Override public Builder setSessionCallback(@NonNull Executor executor, @Nullable SessionCallback callback) { return super.setSessionCallback(executor, callback); } @Override public MediaSession2 build() { return super.build(); } } /** Loading