Identify cast mode properly in audio switch
- Use STREAM_MUSIC to idetify cast mode - Use STREAM_MUSIC to detect wired headset Bug: 78141750 Test: make RunSettingsRoboTests ROBOTEST_FILTER="MediaOutputPreferenceControllerTest" -j40 Change-Id: I92273d41d3debfc3d6327c4ca09143a2dd9b1cb6
This commit is contained in:
@@ -16,14 +16,13 @@
|
|||||||
|
|
||||||
package com.android.settings.sound;
|
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.AudioSystem.DEVICE_OUT_USB_HEADSET;
|
||||||
import static android.media.MediaRouter.ROUTE_TYPE_REMOTE_DISPLAY;
|
|
||||||
|
|
||||||
import android.bluetooth.BluetoothDevice;
|
import android.bluetooth.BluetoothDevice;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.MediaRouter;
|
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
|
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
@@ -51,8 +50,7 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mAudioManager.isMusicActiveRemotely() || isCastDevice(mMediaRouter)) {
|
if (isStreamFromOutputDevice(STREAM_MUSIC, DEVICE_OUT_REMOTE_SUBMIX)) {
|
||||||
// TODO(76455906): Workaround for cast mode, need a solid way to identify cast mode.
|
|
||||||
// In cast mode, disable switch entry.
|
// In cast mode, disable switch entry.
|
||||||
preference.setEnabled(false);
|
preference.setEnabled(false);
|
||||||
preference.setSummary(mContext.getText(R.string.media_output_summary_unavailable));
|
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
|
// Setup devices entries, select active connected device
|
||||||
setupPreferenceEntries(mediaOutputs, mediaValues, activeDevice);
|
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.
|
// If wired headset is plugged in and active, select to default device.
|
||||||
mSelectedIndex = getDefaultDeviceIndex();
|
mSelectedIndex = getDefaultDeviceIndex();
|
||||||
}
|
}
|
||||||
@@ -108,11 +106,4 @@ public class MediaOutputPreferenceController extends AudioSwitchPreferenceContro
|
|||||||
mProfileManager.getA2dpProfile().setActiveDevice(device);
|
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.sound;
|
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 android.media.AudioSystem.DEVICE_OUT_USB_HEADSET;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@@ -198,7 +199,7 @@ public class MediaOutputPreferenceControllerTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void updateState_mediaStreamIsCapturedByCast_shouldDisableAndSetDefaultSummary() {
|
public void updateState_mediaStreamIsCapturedByCast_shouldDisableAndSetDefaultSummary() {
|
||||||
mShadowAudioManager.setMusicActiveRemotely(true);
|
mShadowAudioManager.setStream(DEVICE_OUT_REMOTE_SUBMIX);
|
||||||
|
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user