Merge "Disable the spatializer options for device categories" into main
This commit is contained in:
@@ -109,6 +109,7 @@ public class BluetoothDetailsAudioDeviceTypeController extends BluetoothDetailsC
|
|||||||
mAudioManager.setBluetoothAudioDeviceCategory(mCachedDevice.getAddress(),
|
mAudioManager.setBluetoothAudioDeviceCategory(mCachedDevice.getAddress(),
|
||||||
mCachedDevice.getDevice().getType() == DEVICE_TYPE_LE,
|
mCachedDevice.getDevice().getType() == DEVICE_TYPE_LE,
|
||||||
Integer.parseInt(value));
|
Integer.parseInt(value));
|
||||||
|
mCachedDevice.onAudioDeviceCategoryChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -53,9 +53,7 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
PreferenceCategory mProfilesContainer;
|
PreferenceCategory mProfilesContainer;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
AudioDeviceAttributes mAudioDevice;
|
AudioDeviceAttributes mAudioDevice = null;
|
||||||
|
|
||||||
private boolean mIsAvailable;
|
|
||||||
|
|
||||||
public BluetoothDetailsSpatialAudioController(
|
public BluetoothDetailsSpatialAudioController(
|
||||||
Context context,
|
Context context,
|
||||||
@@ -65,13 +63,11 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
super(context, fragment, device, lifecycle);
|
super(context, fragment, device, lifecycle);
|
||||||
AudioManager audioManager = context.getSystemService(AudioManager.class);
|
AudioManager audioManager = context.getSystemService(AudioManager.class);
|
||||||
mSpatializer = audioManager.getSpatializer();
|
mSpatializer = audioManager.getSpatializer();
|
||||||
getAvailableDevice();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
return mIsAvailable;
|
return mSpatializer.getImmersiveAudioLevel() != SPATIALIZER_IMMERSIVE_LEVEL_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -79,15 +75,11 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
SwitchPreference switchPreference = (SwitchPreference) preference;
|
SwitchPreference switchPreference = (SwitchPreference) preference;
|
||||||
String key = switchPreference.getKey();
|
String key = switchPreference.getKey();
|
||||||
if (TextUtils.equals(key, KEY_SPATIAL_AUDIO)) {
|
if (TextUtils.equals(key, KEY_SPATIAL_AUDIO)) {
|
||||||
if (switchPreference.isChecked()) {
|
updateSpatializerEnabled(switchPreference.isChecked());
|
||||||
mSpatializer.addCompatibleAudioDevice(mAudioDevice);
|
refreshSpatialAudioEnabled(switchPreference);
|
||||||
} else {
|
|
||||||
mSpatializer.removeCompatibleAudioDevice(mAudioDevice);
|
|
||||||
}
|
|
||||||
refresh();
|
|
||||||
return true;
|
return true;
|
||||||
} else if (TextUtils.equals(key, KEY_HEAD_TRACKING)) {
|
} else if (TextUtils.equals(key, KEY_HEAD_TRACKING)) {
|
||||||
mSpatializer.setHeadTrackerEnabled(switchPreference.isChecked(), mAudioDevice);
|
updateSpatializerHeadTracking(switchPreference.isChecked());
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
Log.w(TAG, "invalid key name.");
|
Log.w(TAG, "invalid key name.");
|
||||||
@@ -95,6 +87,26 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateSpatializerEnabled(boolean enabled) {
|
||||||
|
if (mAudioDevice == null) {
|
||||||
|
Log.w(TAG, "cannot update spatializer enabled for null audio device.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (enabled) {
|
||||||
|
mSpatializer.addCompatibleAudioDevice(mAudioDevice);
|
||||||
|
} else {
|
||||||
|
mSpatializer.removeCompatibleAudioDevice(mAudioDevice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateSpatializerHeadTracking(boolean enabled) {
|
||||||
|
if (mAudioDevice == null) {
|
||||||
|
Log.w(TAG, "cannot update spatializer head tracking for null audio device.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mSpatializer.setHeadTrackerEnabled(enabled, mAudioDevice);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPreferenceKey() {
|
public String getPreferenceKey() {
|
||||||
return KEY_SPATIAL_AUDIO_GROUP;
|
return KEY_SPATIAL_AUDIO_GROUP;
|
||||||
@@ -109,15 +121,30 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
@Override
|
@Override
|
||||||
protected void refresh() {
|
protected void refresh() {
|
||||||
if (mAudioDevice == null) {
|
if (mAudioDevice == null) {
|
||||||
return;
|
getAvailableDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitchPreference spatialAudioPref = mProfilesContainer.findPreference(KEY_SPATIAL_AUDIO);
|
SwitchPreference spatialAudioPref = mProfilesContainer.findPreference(KEY_SPATIAL_AUDIO);
|
||||||
if (spatialAudioPref == null) {
|
if (spatialAudioPref == null && mAudioDevice != null) {
|
||||||
spatialAudioPref = createSpatialAudioPreference(mProfilesContainer.getContext());
|
spatialAudioPref = createSpatialAudioPreference(mProfilesContainer.getContext());
|
||||||
mProfilesContainer.addPreference(spatialAudioPref);
|
mProfilesContainer.addPreference(spatialAudioPref);
|
||||||
|
} else if (mAudioDevice == null || !mSpatializer.isAvailableForDevice(mAudioDevice)) {
|
||||||
|
if (spatialAudioPref != null) {
|
||||||
|
mProfilesContainer.removePreference(spatialAudioPref);
|
||||||
|
}
|
||||||
|
final SwitchPreference headTrackingPref =
|
||||||
|
mProfilesContainer.findPreference(KEY_HEAD_TRACKING);
|
||||||
|
if (headTrackingPref != null) {
|
||||||
|
mProfilesContainer.removePreference(headTrackingPref);
|
||||||
|
}
|
||||||
|
mAudioDevice = null;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshSpatialAudioEnabled(spatialAudioPref);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshSpatialAudioEnabled(SwitchPreference spatialAudioPref) {
|
||||||
boolean isSpatialAudioOn = mSpatializer.getCompatibleAudioDevices().contains(mAudioDevice);
|
boolean isSpatialAudioOn = mSpatializer.getCompatibleAudioDevices().contains(mAudioDevice);
|
||||||
Log.d(TAG, "refresh() isSpatialAudioOn : " + isSpatialAudioOn);
|
Log.d(TAG, "refresh() isSpatialAudioOn : " + isSpatialAudioOn);
|
||||||
spatialAudioPref.setChecked(isSpatialAudioOn);
|
spatialAudioPref.setChecked(isSpatialAudioOn);
|
||||||
@@ -127,9 +154,13 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
headTrackingPref = createHeadTrackingPreference(mProfilesContainer.getContext());
|
headTrackingPref = createHeadTrackingPreference(mProfilesContainer.getContext());
|
||||||
mProfilesContainer.addPreference(headTrackingPref);
|
mProfilesContainer.addPreference(headTrackingPref);
|
||||||
}
|
}
|
||||||
|
refreshHeadTracking(spatialAudioPref, headTrackingPref);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshHeadTracking(SwitchPreference spatialAudioPref,
|
||||||
|
SwitchPreference headTrackingPref) {
|
||||||
boolean isHeadTrackingAvailable =
|
boolean isHeadTrackingAvailable =
|
||||||
isSpatialAudioOn && mSpatializer.hasHeadTracker(mAudioDevice);
|
spatialAudioPref.isChecked() && mSpatializer.hasHeadTracker(mAudioDevice);
|
||||||
Log.d(TAG, "refresh() has head tracker : " + mSpatializer.hasHeadTracker(mAudioDevice));
|
Log.d(TAG, "refresh() has head tracker : " + mSpatializer.hasHeadTracker(mAudioDevice));
|
||||||
headTrackingPref.setVisible(isHeadTrackingAvailable);
|
headTrackingPref.setVisible(isHeadTrackingAvailable);
|
||||||
if (isHeadTrackingAvailable) {
|
if (isHeadTrackingAvailable) {
|
||||||
@@ -158,14 +189,6 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void getAvailableDevice() {
|
private void getAvailableDevice() {
|
||||||
if (mSpatializer.getImmersiveAudioLevel() == SPATIALIZER_IMMERSIVE_LEVEL_NONE) {
|
|
||||||
mIsAvailable = false;
|
|
||||||
mAudioDevice = null;
|
|
||||||
Log.d(TAG, "getAvailableDevice() ignored: spatializer not supported");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
AudioDeviceAttributes a2dpDevice = new AudioDeviceAttributes(
|
AudioDeviceAttributes a2dpDevice = new AudioDeviceAttributes(
|
||||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||||
AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
|
AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
|
||||||
@@ -187,7 +210,6 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
AudioDeviceInfo.TYPE_HEARING_AID,
|
AudioDeviceInfo.TYPE_HEARING_AID,
|
||||||
mCachedDevice.getAddress());
|
mCachedDevice.getAddress());
|
||||||
|
|
||||||
mIsAvailable = true;
|
|
||||||
if (mSpatializer.isAvailableForDevice(bleHeadsetDevice)) {
|
if (mSpatializer.isAvailableForDevice(bleHeadsetDevice)) {
|
||||||
mAudioDevice = bleHeadsetDevice;
|
mAudioDevice = bleHeadsetDevice;
|
||||||
} else if (mSpatializer.isAvailableForDevice(bleSpeakerDevice)) {
|
} else if (mSpatializer.isAvailableForDevice(bleSpeakerDevice)) {
|
||||||
@@ -196,20 +218,20 @@ public class BluetoothDetailsSpatialAudioController extends BluetoothDetailsCont
|
|||||||
mAudioDevice = bleBroadcastDevice;
|
mAudioDevice = bleBroadcastDevice;
|
||||||
} else if (mSpatializer.isAvailableForDevice(a2dpDevice)) {
|
} else if (mSpatializer.isAvailableForDevice(a2dpDevice)) {
|
||||||
mAudioDevice = a2dpDevice;
|
mAudioDevice = a2dpDevice;
|
||||||
} else {
|
} else if (mSpatializer.isAvailableForDevice(hearingAidDevice)) {
|
||||||
mIsAvailable = mSpatializer.isAvailableForDevice(hearingAidDevice);
|
|
||||||
mAudioDevice = hearingAidDevice;
|
mAudioDevice = hearingAidDevice;
|
||||||
|
} else {
|
||||||
|
mAudioDevice = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG, "getAvailableDevice() device : "
|
Log.d(TAG, "getAvailableDevice() device : "
|
||||||
+ mCachedDevice.getDevice().getAnonymizedAddress()
|
+ mCachedDevice.getDevice().getAnonymizedAddress()
|
||||||
+ ", type : " + mAudioDevice.getType()
|
+ ", is available : " + (mAudioDevice != null)
|
||||||
+ ", is available : " + mIsAvailable);
|
+ ", type : " + (mAudioDevice == null ? "no type" : mAudioDevice.getType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setAvailableDevice(AudioDeviceAttributes audioDevice) {
|
void setAvailableDevice(AudioDeviceAttributes audioDevice) {
|
||||||
mAudioDevice = audioDevice;
|
mAudioDevice = audioDevice;
|
||||||
mIsAvailable = mSpatializer.isAvailableForDevice(audioDevice);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package com.android.settings.bluetooth;
|
package com.android.settings.bluetooth;
|
||||||
|
|
||||||
|
import static android.media.Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL;
|
||||||
|
import static android.media.Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -62,6 +65,8 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
@Mock
|
@Mock
|
||||||
private BluetoothDevice mBluetoothDevice;
|
private BluetoothDevice mBluetoothDevice;
|
||||||
|
|
||||||
|
private AudioDeviceAttributes mAvailableDevice;
|
||||||
|
|
||||||
private BluetoothDetailsSpatialAudioController mController;
|
private BluetoothDetailsSpatialAudioController mController;
|
||||||
private SwitchPreference mSpatialAudioPref;
|
private SwitchPreference mSpatialAudioPref;
|
||||||
private SwitchPreference mHeadTrackingPref;
|
private SwitchPreference mHeadTrackingPref;
|
||||||
@@ -86,94 +91,32 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
|
|
||||||
when(mProfilesContainer.findPreference(KEY_SPATIAL_AUDIO)).thenReturn(mSpatialAudioPref);
|
when(mProfilesContainer.findPreference(KEY_SPATIAL_AUDIO)).thenReturn(mSpatialAudioPref);
|
||||||
when(mProfilesContainer.findPreference(KEY_HEAD_TRACKING)).thenReturn(mHeadTrackingPref);
|
when(mProfilesContainer.findPreference(KEY_HEAD_TRACKING)).thenReturn(mHeadTrackingPref);
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
mAvailableDevice = new AudioDeviceAttributes(
|
||||||
public void isAvailable_spatialAudioSupportA2dpDevice_returnsTrue() {
|
|
||||||
AudioDeviceAttributes a2dpDevice = new AudioDeviceAttributes(
|
|
||||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
AudioDeviceAttributes.ROLE_OUTPUT,
|
||||||
AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
|
AudioDeviceInfo.TYPE_BLUETOOTH_A2DP,
|
||||||
MAC_ADDRESS);
|
MAC_ADDRESS);
|
||||||
when(mSpatializer.isAvailableForDevice(a2dpDevice)).thenReturn(true);
|
|
||||||
|
|
||||||
mController.setAvailableDevice(a2dpDevice);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
|
||||||
assertThat(mController.mAudioDevice.getType())
|
|
||||||
.isEqualTo(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_spatialAudioSupportBleHeadsetDevice_returnsTrue() {
|
public void isAvailable_forSpatializerWithLevelNone_returnsFalse() {
|
||||||
AudioDeviceAttributes bleHeadsetDevice = new AudioDeviceAttributes(
|
when(mSpatializer.getImmersiveAudioLevel()).thenReturn(SPATIALIZER_IMMERSIVE_LEVEL_NONE);
|
||||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
|
||||||
AudioDeviceInfo.TYPE_BLE_HEADSET,
|
|
||||||
MAC_ADDRESS);
|
|
||||||
when(mSpatializer.isAvailableForDevice(bleHeadsetDevice)).thenReturn(true);
|
|
||||||
|
|
||||||
mController.setAvailableDevice(bleHeadsetDevice);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
|
||||||
assertThat(mController.mAudioDevice.getType())
|
|
||||||
.isEqualTo(AudioDeviceInfo.TYPE_BLE_HEADSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_spatialAudioSupportBleSpeakerDevice_returnsTrue() {
|
|
||||||
AudioDeviceAttributes bleSpeakerDevice = new AudioDeviceAttributes(
|
|
||||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
|
||||||
AudioDeviceInfo.TYPE_BLE_SPEAKER,
|
|
||||||
MAC_ADDRESS);
|
|
||||||
when(mSpatializer.isAvailableForDevice(bleSpeakerDevice)).thenReturn(true);
|
|
||||||
|
|
||||||
mController.setAvailableDevice(bleSpeakerDevice);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
|
||||||
assertThat(mController.mAudioDevice.getType())
|
|
||||||
.isEqualTo(AudioDeviceInfo.TYPE_BLE_SPEAKER);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_spatialAudioSupportBleBroadcastDevice_returnsTrue() {
|
|
||||||
AudioDeviceAttributes bleBroadcastDevice = new AudioDeviceAttributes(
|
|
||||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
|
||||||
AudioDeviceInfo.TYPE_BLE_BROADCAST,
|
|
||||||
MAC_ADDRESS);
|
|
||||||
when(mSpatializer.isAvailableForDevice(bleBroadcastDevice)).thenReturn(true);
|
|
||||||
|
|
||||||
mController.setAvailableDevice(bleBroadcastDevice);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
|
||||||
assertThat(mController.mAudioDevice.getType())
|
|
||||||
.isEqualTo(AudioDeviceInfo.TYPE_BLE_BROADCAST);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_spatialAudioSupportHearingAidDevice_returnsTrue() {
|
|
||||||
AudioDeviceAttributes hearingAidDevice = new AudioDeviceAttributes(
|
|
||||||
AudioDeviceAttributes.ROLE_OUTPUT,
|
|
||||||
AudioDeviceInfo.TYPE_HEARING_AID,
|
|
||||||
MAC_ADDRESS);
|
|
||||||
when(mSpatializer.isAvailableForDevice(hearingAidDevice)).thenReturn(true);
|
|
||||||
|
|
||||||
mController.setAvailableDevice(hearingAidDevice);
|
|
||||||
|
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
|
||||||
assertThat(mController.mAudioDevice.getType())
|
|
||||||
.isEqualTo(AudioDeviceInfo.TYPE_HEARING_AID);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void isAvailable_spatialAudioNotSupported_returnsFalse() {
|
|
||||||
assertThat(mController.isAvailable()).isFalse();
|
assertThat(mController.isAvailable()).isFalse();
|
||||||
assertThat(mController.mAudioDevice.getType())
|
}
|
||||||
.isEqualTo(AudioDeviceInfo.TYPE_HEARING_AID);
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_forSpatializerWithLevelNotNone_returnsTrue() {
|
||||||
|
when(mSpatializer.getImmersiveAudioLevel()).thenReturn(
|
||||||
|
SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL);
|
||||||
|
assertThat(mController.isAvailable()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void refresh_spatialAudioIsTurnedOn_checksSpatialAudioPreference() {
|
public void refresh_spatialAudioIsTurnedOn_checksSpatialAudioPreference() {
|
||||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||||
|
when(mSpatializer.isAvailableForDevice(mController.mAudioDevice)).thenReturn(true);
|
||||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||||
|
|
||||||
mController.refresh();
|
mController.refresh();
|
||||||
@@ -207,13 +150,14 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
public void
|
public void
|
||||||
refresh_spatialAudioOnAndHeadTrackingIsNotAvailable_hidesHeadTrackingPreference() {
|
refresh_spatialAudioOnAndHeadTrackingIsNotAvailable_hidesHeadTrackingPreference() {
|
||||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||||
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(false);
|
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(false);
|
||||||
|
|
||||||
mController.refresh();
|
mController.refresh();
|
||||||
|
|
||||||
assertThat(mHeadTrackingPref.isVisible()).isFalse();
|
verify(mProfilesContainer).removePreference(mHeadTrackingPref);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -223,14 +167,16 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
|
|
||||||
mController.refresh();
|
mController.refresh();
|
||||||
|
|
||||||
assertThat(mHeadTrackingPref.isVisible()).isFalse();
|
verify(mProfilesContainer).removePreference(mHeadTrackingPref);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void refresh_headTrackingIsTurnedOn_checksHeadTrackingPreference() {
|
public void refresh_headTrackingIsTurnedOn_checksHeadTrackingPreference() {
|
||||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||||
|
when(mSpatializer.isAvailableForDevice(mController.mAudioDevice)).thenReturn(true);
|
||||||
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(true);
|
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(true);
|
||||||
when(mSpatializer.isHeadTrackerEnabled(mController.mAudioDevice)).thenReturn(true);
|
when(mSpatializer.isHeadTrackerEnabled(mController.mAudioDevice)).thenReturn(true);
|
||||||
|
|
||||||
@@ -242,8 +188,10 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
@Test
|
@Test
|
||||||
public void refresh_headTrackingIsTurnedOff_unchecksHeadTrackingPreference() {
|
public void refresh_headTrackingIsTurnedOff_unchecksHeadTrackingPreference() {
|
||||||
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
List<AudioDeviceAttributes> compatibleAudioDevices = new ArrayList<>();
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
compatibleAudioDevices.add(mController.mAudioDevice);
|
compatibleAudioDevices.add(mController.mAudioDevice);
|
||||||
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
when(mSpatializer.getCompatibleAudioDevices()).thenReturn(compatibleAudioDevices);
|
||||||
|
when(mSpatializer.isAvailableForDevice(mController.mAudioDevice)).thenReturn(true);
|
||||||
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(true);
|
when(mSpatializer.hasHeadTracker(mController.mAudioDevice)).thenReturn(true);
|
||||||
when(mSpatializer.isHeadTrackerEnabled(mController.mAudioDevice)).thenReturn(false);
|
when(mSpatializer.isHeadTrackerEnabled(mController.mAudioDevice)).thenReturn(false);
|
||||||
|
|
||||||
@@ -254,6 +202,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void turnedOnSpatialAudio_invokesAddCompatibleAudioDevice() {
|
public void turnedOnSpatialAudio_invokesAddCompatibleAudioDevice() {
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
mSpatialAudioPref.setChecked(true);
|
mSpatialAudioPref.setChecked(true);
|
||||||
mController.onPreferenceClick(mSpatialAudioPref);
|
mController.onPreferenceClick(mSpatialAudioPref);
|
||||||
verify(mSpatializer).addCompatibleAudioDevice(mController.mAudioDevice);
|
verify(mSpatializer).addCompatibleAudioDevice(mController.mAudioDevice);
|
||||||
@@ -261,6 +210,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void turnedOffSpatialAudio_invokesRemoveCompatibleAudioDevice() {
|
public void turnedOffSpatialAudio_invokesRemoveCompatibleAudioDevice() {
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
mSpatialAudioPref.setChecked(false);
|
mSpatialAudioPref.setChecked(false);
|
||||||
mController.onPreferenceClick(mSpatialAudioPref);
|
mController.onPreferenceClick(mSpatialAudioPref);
|
||||||
verify(mSpatializer).removeCompatibleAudioDevice(mController.mAudioDevice);
|
verify(mSpatializer).removeCompatibleAudioDevice(mController.mAudioDevice);
|
||||||
@@ -268,6 +218,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void turnedOnHeadTracking_invokesSetHeadTrackerEnabled_setsTrue() {
|
public void turnedOnHeadTracking_invokesSetHeadTrackerEnabled_setsTrue() {
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
mHeadTrackingPref.setChecked(true);
|
mHeadTrackingPref.setChecked(true);
|
||||||
mController.onPreferenceClick(mHeadTrackingPref);
|
mController.onPreferenceClick(mHeadTrackingPref);
|
||||||
verify(mSpatializer).setHeadTrackerEnabled(true, mController.mAudioDevice);
|
verify(mSpatializer).setHeadTrackerEnabled(true, mController.mAudioDevice);
|
||||||
@@ -275,6 +226,7 @@ public class BluetoothDetailsSpatialAudioControllerTest extends BluetoothDetails
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void turnedOffHeadTracking_invokesSetHeadTrackerEnabled_setsFalse() {
|
public void turnedOffHeadTracking_invokesSetHeadTrackerEnabled_setsFalse() {
|
||||||
|
mController.setAvailableDevice(mAvailableDevice);
|
||||||
mHeadTrackingPref.setChecked(false);
|
mHeadTrackingPref.setChecked(false);
|
||||||
mController.onPreferenceClick(mHeadTrackingPref);
|
mController.onPreferenceClick(mHeadTrackingPref);
|
||||||
verify(mSpatializer).setHeadTrackerEnabled(false, mController.mAudioDevice);
|
verify(mSpatializer).setHeadTrackerEnabled(false, mController.mAudioDevice);
|
||||||
|
Reference in New Issue
Block a user