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

Commit 012fbe9b authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "Update RemoteController on Session update"

parents 8723e107 c91468d6
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -2500,14 +2500,6 @@ public class AudioManager {
            return;
        }

        IAudioService service = getService();
        try {
            service.addMediaPlayerAndUpdateRemoteController(
                                    eventReceiver.getPackageName());
        } catch (RemoteException e) {
            Log.e(TAG, "Error in calling Audioservice interface " +
                        "addMediaPlayerAndUpdateRemoteController()" + e);
        }
        // construct a PendingIntent for the media button and register it
        Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
        mediaButtonIntent.addFlags(mediaButtonIntent.FLAG_RECEIVER_FOREGROUND);
@@ -2676,6 +2668,24 @@ public class AudioManager {
        rctlr.stopListeningToSessions();
    }

    /**
     * @hide
     */
    public void updateMediaPlayerList(String packageName, boolean toAdd) {
        IAudioService service = getService();
        try {
            if (toAdd) {
                Log.d(TAG, "updateMediaPlayerList: Add RCC " + packageName + " to List");
                service.addMediaPlayerAndUpdateRemoteController(packageName);
            } else {
                Log.d(TAG, "updateMediaPlayerList: Remove RCC " + packageName + " from List");
                service.removeMediaPlayerAndUpdateRemoteController(packageName);
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Exception while executing updateMediaPlayerList: " + e);
        }
    }

    /**
     * @hide
     * Registers a remote control display that will be sent information by remote control clients.
+36 −0
Original line number Diff line number Diff line
@@ -741,6 +741,8 @@ public class AudioService extends IAudioService.Stub {
     * @hide
     */
    public void addMediaPlayerAndUpdateRemoteController (String packageName) {
        Log.v(TAG, "addMediaPlayerAndUpdateRemoteController: size of existing list: " +
                                                                mMediaPlayers.size());
        boolean playerToAdd = true;
        if (mMediaPlayers.size() > 0) {
            final Iterator<MediaPlayerInfo> rccIterator = mMediaPlayers.iterator();
@@ -795,6 +797,40 @@ public class AudioService extends IAudioService.Stub {
        }
    }

    /**
     * @hide
     */
    public void removeMediaPlayerAndUpdateRemoteController (String packageName) {
        Log.v(TAG, "removeMediaPlayerAndUpdateRemoteController: size of existing list: " +
                                                                mMediaPlayers.size());
        boolean playerToRemove = false;
        int index = -1;
        if (mMediaPlayers.size() > 0) {
            final Iterator<MediaPlayerInfo> rccIterator = mMediaPlayers.iterator();
            while (rccIterator.hasNext()) {
                index++;
                final MediaPlayerInfo player = rccIterator.next();
                if (packageName.equals(player.getPackageName())) {
                    Log.v(TAG, "Player entry present remove and update RemoteController");
                    playerToRemove = true;
                    break;
                } else {
                    Log.v(TAG, "Player entry for " + player.getPackageName()+ " is not present");
                }
            }
        }
        if (playerToRemove) {
            Log.e(TAG, "Removing Player: " + packageName + " from index" + index);
            mMediaPlayers.remove(index);
        }
        Intent intent = new Intent(AudioManager.RCC_CHANGED_ACTION);
        intent.putExtra(AudioManager.EXTRA_CALLING_PACKAGE_NAME, packageName);
        intent.putExtra(AudioManager.EXTRA_FOCUS_CHANGED_VALUE, false);
        intent.putExtra(AudioManager.EXTRA_AVAILABLITY_CHANGED_VALUE, false);
        sendBroadcastToAll(intent);
        Log.v(TAG, "Updated List size: " + mMediaPlayers.size());
    }

    private void checkAllAliasStreamVolumes() {
        int numStreamTypes = AudioSystem.getNumStreamTypes();
        for (int streamType = 0; streamType < numStreamTypes; streamType++) {
+2 −0
Original line number Diff line number Diff line
@@ -217,4 +217,6 @@ interface IAudioService {
    void updateRemoteControllerOnExistingMediaPlayers();

    void addMediaPlayerAndUpdateRemoteController(String packageName);

    void removeMediaPlayerAndUpdateRemoteController(String packageName);
}
+10 −0
Original line number Diff line number Diff line
@@ -1089,6 +1089,8 @@ import java.util.List;
        synchronized (mInfoLock) {
            if (controller == null) {
                if (mCurrentSession != null) {
                    Log.v(TAG, "Updating current controller as null");
                    mAudioManager.updateMediaPlayerList(mCurrentSession.getPackageName(), false);
                    mCurrentSession.unregisterCallback(mSessionCb);
                    mCurrentSession = null;
                    sendMsg(mEventHandler, MSG_CLIENT_CHANGE, SENDMSG_REPLACE,
@@ -1098,13 +1100,21 @@ import java.util.List;
                    || !controller.getSessionToken()
                            .equals(mCurrentSession.getSessionToken())) {
                if (mCurrentSession != null) {
                    Log.v(TAG, "Updating current controller package as " +
                     controller.getPackageName() + " from " + mCurrentSession.getPackageName());
                    mCurrentSession.unregisterCallback(mSessionCb);
                } else {
                    Log.v(TAG, "Updating current controller package as " +
                      controller.getPackageName() + " from null");
                }

                sendMsg(mEventHandler, MSG_CLIENT_CHANGE, SENDMSG_REPLACE,
                        0 /* genId */, 0 /* clearing */, null /* obj */, 0 /* delay */);
                mCurrentSession = controller;
                mCurrentSession.registerCallback(mSessionCb, mEventHandler);

                mAudioManager.updateMediaPlayerList(mCurrentSession.getPackageName(), true);

                PlaybackState state = controller.getPlaybackState();
                sendMsg(mEventHandler, MSG_NEW_PLAYBACK_STATE, SENDMSG_REPLACE,
                        0 /* genId */, 0, state /* obj */, 0 /* delay */);