Update CarConnectionSummary

Per UX guidance, it's desired to always show the "disconnected" string
as the connected summary and to have a short summary option that simply
shows the "connected" string without any additional information.

Bug: 204943159
Test: make RunSettingsLibRoboTests
ROBOTEST_FILTER=com.android.settingslib.bluetooth.CachedBluetoothDeviceTest

Change-Id: I7744ceec534177bb6da8cd784e4cb3888f921f6f
This commit is contained in:
Alex Stetson
2021-12-22 13:42:10 -08:00
parent 1376431399
commit 6339aed7a2
2 changed files with 49 additions and 13 deletions

View File

@@ -21,7 +21,6 @@ import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothCsipSetCoordinator;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHearingAid;
import android.bluetooth.BluetoothLeAudio;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothUuid;
import android.content.Context;
@@ -1131,9 +1130,18 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
}
/**
* @return resource for android auto string that describes the connection state of this device.
* See {@link #getCarConnectionSummary(boolean)}
*/
public String getCarConnectionSummary() {
return getCarConnectionSummary(false);
}
/**
* Returns android auto string that describes the connection state of this device.
*
* @param shortSummary {@code true} if need to return short version summary
*/
public String getCarConnectionSummary(boolean shortSummary) {
boolean profileConnected = false; // at least one profile is connected
boolean a2dpNotConnected = false; // A2DP is preferred but not connected
boolean hfpNotConnected = false; // HFP is preferred but not connected
@@ -1151,6 +1159,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
BluetoothUtils.getConnectionStateSummary(connectionStatus));
case BluetoothProfile.STATE_CONNECTED:
if (shortSummary) {
return mContext.getString(BluetoothUtils.getConnectionStateSummary(
connectionStatus), /* formatArgs= */ "");
}
profileConnected = true;
break;
@@ -1248,7 +1260,8 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
}
return getBondState() == BluetoothDevice.BOND_BONDING ?
mContext.getString(R.string.bluetooth_pairing) : null;
mContext.getString(R.string.bluetooth_pairing) :
mContext.getString(R.string.bluetooth_disconnected);
}
/**

View File

@@ -527,7 +527,7 @@ public class CachedBluetoothDeviceTest {
// Set PAN profile to be disconnected and test connection state summary
updateProfileStatus(mPanProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
// Test with battery level
mBatteryLevel = 10;
@@ -537,7 +537,7 @@ public class CachedBluetoothDeviceTest {
// Set PAN profile to be disconnected and test connection state summary
updateProfileStatus(mPanProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
// Test with BluetoothDevice.BATTERY_LEVEL_UNKNOWN battery level
mBatteryLevel = BluetoothDevice.BATTERY_LEVEL_UNKNOWN;
@@ -548,7 +548,7 @@ public class CachedBluetoothDeviceTest {
// Set PAN profile to be disconnected and test connection state summary
updateProfileStatus(mPanProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
}
@Test
@@ -579,7 +579,7 @@ public class CachedBluetoothDeviceTest {
// Disconnect all profiles and test connection state summary
updateProfileStatus(mPanProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
}
@Test
@@ -600,7 +600,7 @@ public class CachedBluetoothDeviceTest {
// Set A2DP profile to be disconnected and test connection state summary
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
// Test with BluetoothDevice.BATTERY_LEVEL_UNKNOWN battery level
mBatteryLevel = BluetoothDevice.BATTERY_LEVEL_UNKNOWN;
@@ -611,7 +611,7 @@ public class CachedBluetoothDeviceTest {
// Set A2DP profile to be disconnected and test connection state summary
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
}
@Test
@@ -632,7 +632,7 @@ public class CachedBluetoothDeviceTest {
// Set HFP profile to be disconnected and test connection state summary
updateProfileStatus(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
// Test with BluetoothDevice.BATTERY_LEVEL_UNKNOWN battery level
mBatteryLevel = BluetoothDevice.BATTERY_LEVEL_UNKNOWN;
@@ -643,7 +643,7 @@ public class CachedBluetoothDeviceTest {
// Set HFP profile to be disconnected and test connection state summary
updateProfileStatus(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
}
@Test
@@ -660,7 +660,7 @@ public class CachedBluetoothDeviceTest {
// Set Hearing Aid profile to be disconnected and test connection state summary
mCachedDevice.onActiveDeviceChanged(false, BluetoothProfile.HEARING_AID);
updateProfileStatus(mHearingAidProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
}
@Test
@@ -707,9 +707,32 @@ public class CachedBluetoothDeviceTest {
// Set A2DP and HFP profiles to be disconnected and test connection state summary
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_DISCONNECTED);
updateProfileStatus(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary()).isNull();
assertThat(mCachedDevice.getCarConnectionSummary()).isEqualTo("Disconnected");
}
@Test
public void getCarConnectionSummary_shortSummary_returnShortSummary() {
// Test without battery level
// Set A2DP profile to be connected and test connection state summary
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_CONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary(true /* shortSummary */))
.isEqualTo("Connected");
// Set device as Active for A2DP and test connection state summary
mCachedDevice.onActiveDeviceChanged(true, BluetoothProfile.A2DP);
assertThat(mCachedDevice.getCarConnectionSummary(true /* shortSummary */))
.isEqualTo("Connected");
// Test with battery level
mBatteryLevel = 10;
assertThat(mCachedDevice.getCarConnectionSummary(true /* shortSummary */))
.isEqualTo("Connected");
// Set A2DP profile to be disconnected and test connection state summary
updateProfileStatus(mA2dpProfile, BluetoothProfile.STATE_DISCONNECTED);
assertThat(mCachedDevice.getCarConnectionSummary(true /* shortSummary */))
.isEqualTo("Disconnected");
}
@Test
public void deviceName_testAliasNameAvailable() {