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

Commit 16f00964 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Identify cast mode properly in audio switch" into pi-dev

parents 0dc5bcdf 7be15cdd
Loading
Loading
Loading
Loading
+4 −13
Original line number Diff line number Diff line
@@ -16,14 +16,13 @@

package com.android.settings.sound;

import static android.media.AudioManager.STREAM_VOICE_CALL;
import static android.media.AudioManager.STREAM_MUSIC;
import static android.media.AudioSystem.DEVICE_OUT_REMOTE_SUBMIX;
import static android.media.AudioSystem.DEVICE_OUT_USB_HEADSET;
import static android.media.MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY;

import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaRouter;
import android.support.v7.preference.Preference;

import com.android.internal.util.ArrayUtils;
@@ -51,8 +50,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro
            return;
        }

        if (mAudioManager.isMusicActiveRemotely() || isCastDevice(mMediaRouter)) {
            // TODO(76455906): Workaround for cast mode, need a solid way to identify cast mode.
        if (isStreamFromOutputDevice(STREAM_MUSIC, DEVICE_OUT_REMOTE_SUBMIX)) {
            // In cast mode, disable switch entry.
            preference.setEnabled(false);
            preference.setSummary(mContext.getText(R.string.media_output_summary_unavailable));
@@ -93,7 +91,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro
        // Setup devices entries, select active connected device
        setupPreferenceEntries(mediaOutputs, mediaValues, activeDevice);

        if (isStreamFromOutputDevice(STREAM_VOICE_CALL, DEVICE_OUT_USB_HEADSET)) {
        if (isStreamFromOutputDevice(STREAM_MUSIC, DEVICE_OUT_USB_HEADSET)) {
            // If wired headset is plugged in and active, select to default device.
            mSelectedIndex = getDefaultDeviceIndex();
        }
@@ -108,11 +106,4 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro
            mProfileManager.getA2dpProfile().setActiveDevice(device);
        }
    }

    private static boolean isCastDevice(MediaRouter mediaRouter) {
        final MediaRouter.RouteInfo selected = mediaRouter.getSelectedRoute(
                ROUTE_TYPE_REMOTE_DISPLAY);
        return selected != null && selected.getPresentationDisplay() != null
                && selected.getPresentationDisplay().isValid();
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.sound;


import static android.media.AudioSystem.DEVICE_OUT_REMOTE_SUBMIX;
import static android.media.AudioSystem.DEVICE_OUT_USB_HEADSET;

import static com.google.common.truth.Truth.assertThat;
@@ -198,7 +199,7 @@ public class MediaOutputPreferenceControllerTest {
     */
    @Test
    public void updateState_mediaStreamIsCapturedByCast_shouldDisableAndSetDefaultSummary() {
        mShadowAudioManager.setMusicActiveRemotely(true);
        mShadowAudioManager.setStream(DEVICE_OUT_REMOTE_SUBMIX);

        mController.updateState(mPreference);