Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bb5626f authored by Jaewan Kim's avatar Jaewan Kim
Browse files

MediaSession2: Public APIs for MediaBrowser2 and MediaLibraryService2

Test: Run MediaComponents tests once
Change-Id: I34987fdd681c1b9889ae064b4ba8003ce61181ef
parent da594992
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -61,6 +61,31 @@ public class MediaBrowser2Impl extends MediaController2Impl implements MediaBrow
        }
    }

    @Override
    public void subscribe_impl(String parentId, Bundle options) {
        // TODO(jaewan): Implement
    }

    @Override
    public void unsubscribe_impl(String parentId, Bundle options) {
        // TODO(jaewan): Implement
    }

    @Override
    public void getItem_impl(String mediaId) {
        // TODO(jaewan): Implement
    }

    @Override
    public void getChildren_impl(String parentId, int page, int pageSize, Bundle options) {
        // TODO(jaewan): Implement
    }

    @Override
    public void search_impl(String query, int page, int pageSize, Bundle extras) {
        // TODO(jaewan): Implement
    }

    public void onGetRootResult(
            final Bundle rootHints, final String rootMediaId, final Bundle rootExtra) {
        getCallbackExecutor().execute(() -> {
+35 −0
Original line number Diff line number Diff line
@@ -16,12 +16,20 @@

package com.android.media;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.MediaLibraryService2;
import android.media.MediaLibraryService2.MediaLibrarySession;
import android.media.MediaLibraryService2.MediaLibrarySessionCallback;
import android.media.MediaPlayerBase;
import android.media.MediaSession2;
import android.media.MediaSession2.ControllerInfo;
import android.media.MediaSession2.SessionCallback;
import android.media.MediaSessionService2;
import android.media.VolumeProvider;
import android.media.update.MediaLibraryService2Provider;
import android.os.Bundle;

public class MediaLibraryService2Impl extends MediaSessionService2Impl implements
        MediaLibraryService2Provider {
@@ -51,4 +59,31 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement
        serviceIntent.setAction(MediaLibraryService2.SERVICE_INTERFACE);
        return serviceIntent;
    }

    public static class MediaLibrarySessionImpl extends MediaSession2Impl
            implements MediaLibrarySessionProvider {
        private final MediaLibrarySession mInstance;
        private final MediaLibrarySessionCallback mCallback;

        public MediaLibrarySessionImpl(MediaLibrarySession instance, Context context,
                MediaPlayerBase player, String id,
                MediaLibrarySessionCallback callback, VolumeProvider volumeProvider, int ratingType,
                PendingIntent sessionActivity) {
            super(instance, context, player, id, callback, volumeProvider, ratingType,
                    sessionActivity);
            mInstance = instance;
            mCallback = callback;
        }

        @Override
        public void notifyChildrenChanged_impl(ControllerInfo controller, String parentId,
                Bundle options) {
            // TODO(jaewan): Implements
        }

        @Override
        public void notifyChildrenChanged_impl(String parentId, Bundle options) {
            // TODO(jaewan): Implements
        }
    }
}
+8 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.media;

import android.Manifest.permission;
import android.app.PendingIntent;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -73,10 +74,15 @@ public class MediaSession2Impl implements MediaSession2Provider {
     * @param player
     * @param id
     * @param callback
     * @param volumeProvider
     * @param ratingType
     * @param sessionActivity
     */
    public MediaSession2Impl(MediaSession2 instance, Context context, MediaPlayerBase player,
            String id, SessionCallback callback) {
            String id, SessionCallback callback, VolumeProvider volumeProvider, int ratingType,
            PendingIntent sessionActivity) {
        mInstance = instance;
        // TODO(jaewan): Keep other params.

        // Argument checks are done by builder already.
        // Initialize finals first.
+1 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.media.MediaController2Impl.CALLBACK_FLAG_PLAYBACK;
import android.content.Context;
import android.media.IMediaSession2;
import android.media.IMediaSession2Callback;
import android.media.MediaLibraryService2.BrowserRoot;
import android.media.MediaLibraryService2.MediaLibrarySessionCallback;
import android.media.MediaSession2;
import android.media.MediaSession2.Command;
@@ -36,7 +37,6 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.service.media.MediaBrowserService.BrowserRoot;
import android.support.annotation.GuardedBy;
import android.util.ArrayMap;
import android.util.Log;
+15 −2
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ import android.media.MediaBrowser2;
import android.media.MediaBrowser2.BrowserCallback;
import android.media.MediaController2;
import android.media.MediaLibraryService2;
import android.media.MediaLibraryService2.MediaLibrarySession;
import android.media.MediaLibraryService2.MediaLibrarySessionCallback;
import android.media.MediaPlayerBase;
import android.media.MediaSession2;
import android.media.MediaSession2.ControllerInfo;
@@ -35,6 +37,7 @@ import android.media.VolumeProvider;
import android.media.update.MediaBrowser2Provider;
import android.media.update.MediaControlView2Provider;
import android.media.update.MediaController2Provider;
import android.media.update.MediaLibraryService2Provider.MediaLibrarySessionProvider;
import android.media.update.MediaSession2Provider;
import android.media.update.MediaSessionService2Provider;
import android.media.update.VideoView2Provider;
@@ -48,6 +51,7 @@ import android.widget.VideoView2;
import com.android.media.MediaBrowser2Impl;
import com.android.media.MediaController2Impl;
import com.android.media.MediaLibraryService2Impl;
import com.android.media.MediaLibraryService2Impl.MediaLibrarySessionImpl;
import com.android.media.MediaSession2Impl;
import com.android.media.MediaSessionService2Impl;
import com.android.widget.MediaControlView2Impl;
@@ -80,8 +84,8 @@ public class ApiFactory implements StaticProvider {
            MediaPlayerBase player, String id, SessionCallback callback,
            VolumeProvider volumeProvider, int ratingType,
            PendingIntent sessionActivity) {
        // TOOD(jaewan): Keep and handles extra parameters
        return new MediaSession2Impl(instance, context, player, id, callback);
        return new MediaSession2Impl(instance, context, player, id, callback,
                volumeProvider, ratingType, sessionActivity);
    }

    @Override
@@ -104,6 +108,15 @@ public class ApiFactory implements StaticProvider {
        return new MediaLibraryService2Impl(instance);
    }

    @Override
    public MediaLibrarySessionProvider createMediaLibraryService2MediaLibrarySession(
            MediaLibrarySession instance, Context context, MediaPlayerBase player, String id,
            MediaLibrarySessionCallback callback, VolumeProvider volumeProvider, int ratingType,
            PendingIntent sessionActivity) {
        return new MediaLibrarySessionImpl(instance, context, player, id, callback, volumeProvider,
                ratingType, sessionActivity);
    }

    @Override
    public MediaControlView2Provider createMediaControlView2(
            MediaControlView2 instance, ViewProvider superProvider) {
Loading