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

Commit 880b977a authored by Jaewan Kim's avatar Jaewan Kim Committed by Gerrit Code Review
Browse files

Merge "MediaSessionManager: Split abstract class Callback into interfaces"

parents 9418904e 40bc2ec7
Loading
Loading
Loading
Loading
+37 −51
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.bluetooth.avrcp;

import android.annotation.NonNull;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
@@ -32,6 +31,7 @@ import android.media.session.MediaSessionManager;
import android.media.session.PlaybackState;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;

@@ -138,7 +138,8 @@ public class MediaPlayerList {
                (MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE);
        mMediaSessionManager.addOnActiveSessionsChangedListener(
                mActiveSessionsChangedListener, null, new Handler(looper));
        mMediaSessionManager.setCallback(mButtonDispatchCallback, null);
        mMediaSessionManager.addOnMediaKeyEventSessionChangedListener(
                mContext.getMainExecutor(), mMediaKeyEventSessionChangedListener);
    }

    void init(AvrcpTargetService.ListCallback callback) {
@@ -201,7 +202,8 @@ public class MediaPlayerList {
        mActivePlayerId = NO_ACTIVE_PLAYER;

        mMediaSessionManager.removeOnActiveSessionsChangedListener(mActiveSessionsChangedListener);
        mMediaSessionManager.setCallback(null, null);
        mMediaSessionManager.removeOnMediaKeyEventSessionChangedListener(
                mMediaKeyEventSessionChangedListener);
        mMediaSessionManager = null;

        mAudioManager.unregisterAudioPlaybackCallback(mAudioPlaybackCallback);
@@ -742,61 +744,45 @@ public class MediaPlayerList {
        }
    };

    private final MediaSessionManager.Callback mButtonDispatchCallback =
            new MediaSessionManager.Callback() {
    private final MediaSessionManager.OnMediaKeyEventSessionChangedListener
            mMediaKeyEventSessionChangedListener =
            new MediaSessionManager.OnMediaKeyEventSessionChangedListener() {
                @Override
                public void onMediaKeyEventDispatched(KeyEvent event, MediaSession.Token token) {
                    // TODO (apanicke): Add logging for these
                public void onMediaKeyEventSessionChanged(String packageName,
                        MediaSession.Token token) {
                    if (mMediaSessionManager == null) {
                        Log.w(TAG, "onMediaKeyEventSessionChanged(): Unexpected callback "
                                + "from the MediaSessionManager, pkg" + packageName + ", token="
                                + token);
                        return;
                    }

                @Override
                public void onMediaKeyEventDispatched(KeyEvent event, ComponentName receiver) {
                    // TODO (apanicke): Add logging for these
                    if (TextUtils.isEmpty(packageName)) {
                        return;
                    }

                @Override
                public void onAddressedPlayerChanged(MediaSession.Token token) {
                    if (token != null) {
                        android.media.session.MediaController controller =
                                new android.media.session.MediaController(mContext, token);

                    if (mMediaSessionManager == null) {
                        Log.w(TAG, "onAddressedPlayerChanged(Token): Unexpected callback "
                                + "from the MediaSessionManager");
                        return;
                    }

                        if (!mMediaPlayerIds.containsKey(controller.getPackageName())) {
                            // Since we have a controller, we can try to to recover by adding the
                            // player and then setting it as active.
                        Log.w(TAG, "onAddressedPlayerChanged(Token): Addressed Player "
                            Log.w(TAG, "onMediaKeyEventSessionChanged(Token): Addressed Player "
                                    + "changed to a player we didn't have a session for");
                            addMediaPlayer(controller);
                        }

                    Log.i(TAG, "onAddressedPlayerChanged: token=" + controller.getPackageName());
                        Log.i(TAG, "onMediaKeyEventSessionChanged: token="
                                + controller.getPackageName());
                        setActivePlayer(mMediaPlayerIds.get(controller.getPackageName()));
                }

                @Override
                public void onAddressedPlayerChanged(ComponentName receiver) {
                    if (mMediaSessionManager == null) {
                        Log.w(TAG, "onAddressedPlayerChanged(Component): Unexpected callback "
                                + "from the MediaSessionManager");
                        return;
                    }

                    if (receiver == null) {
                        return;
                    }

                    if (!mMediaPlayerIds.containsKey(receiver.getPackageName())) {
                        e("onAddressedPlayerChanged(Component): Addressed Player "
                    } else {
                        if (!mMediaPlayerIds.containsKey(packageName)) {
                            e("onMediaKeyEventSessionChanged(PackageName): Media key event session "
                                    + "changed to a player we don't have a session for");
                            return;
                        }

                    Log.i(TAG, "onAddressedPlayerChanged: component=" + receiver.getPackageName());
                    setActivePlayer(mMediaPlayerIds.get(receiver.getPackageName()));
                        Log.i(TAG, "onMediaKeyEventSessionChanged: packageName=" + packageName);
                        setActivePlayer(mMediaPlayerIds.get(packageName));
                    }
                }
            };