diff options
| author | 2020-03-06 18:04:15 -0800 | |
|---|---|---|
| committer | 2020-03-06 18:04:15 -0800 | |
| commit | ded588641b13ba9b19dbdb447f89f35d6b946031 (patch) | |
| tree | 4b4fbb34711cfd73f9d75ac534208b575f5ab9c4 | |
| parent | 980e0e1286e6eb289147e89cb0d47140e5de1f53 (diff) | |
Add error code for BluetoothDevice#getBatteryLevel to represent
Bluetooth is off
Bug: 147428695
Test: Manual
Change-Id: I07c2fa49954632da6aa6a93706883e4cdfd32fa6
3 files changed, 32 insertions, 20 deletions
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 838a3b95da24..57a9ae137653 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -230,6 +230,13 @@ public final class BluetoothDevice implements Parcelable { public static final int BATTERY_LEVEL_UNKNOWN = -1; /** + * Used as an error value for {@link #getBatteryLevel()} to represent bluetooth is off + * + * @hide + */ + public static final int BATTERY_LEVEL_BLUETOOTH_OFF = -100; + + /** * Used as a Parcelable {@link BluetoothDevice} extra field in every intent * broadcast by this class. It contains the {@link BluetoothDevice} that * the intent applies to. @@ -1115,9 +1122,9 @@ public final class BluetoothDevice implements Parcelable { /** * Get the most recent identified battery level of this Bluetooth device * - * @return Battery level in percents from 0 to 100, or {@link #BATTERY_LEVEL_UNKNOWN} if - * Bluetooth is disabled, or device is disconnected, or does not have any battery reporting - * service, or return value is invalid + * @return Battery level in percents from 0 to 100, {@link #BATTERY_LEVEL_BLUETOOTH_OFF} if + * Bluetooth is disabled or {@link #BATTERY_LEVEL_UNKNOWN} if device is disconnected, or does + * not have any battery reporting service, or return value is invalid * @hide */ @SystemApi @@ -1126,7 +1133,7 @@ public final class BluetoothDevice implements Parcelable { final IBluetooth service = sService; if (service == null) { Log.e(TAG, "Bluetooth disabled. Cannot get remote device battery level"); - return BATTERY_LEVEL_UNKNOWN; + return BATTERY_LEVEL_BLUETOOTH_OFF; } try { return service.getBatteryLevel(this); @@ -1705,7 +1712,9 @@ public final class BluetoothDevice implements Parcelable { /** * Sets whether the message access is allowed to this device. * - * @param value is the value we are setting the message access permission to + * @param value Can be {@link #ACCESS_UNKNOWN} if the device is unbonded, + * {@link #ACCESS_ALLOWED} if the permission is being granted, or {@link #ACCESS_REJECTED} if + * the permission is not being granted. * @return Whether the value has been successfully set. * @hide */ @@ -1752,8 +1761,9 @@ public final class BluetoothDevice implements Parcelable { /** * Sets whether the Sim access is allowed to this device. * - * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link - * #ACCESS_REJECTED}. + * @param value Can be {@link #ACCESS_UNKNOWN} if the device is unbonded, + * {@link #ACCESS_ALLOWED} if the permission is being granted, or {@link #ACCESS_REJECTED} if + * the permission is not being granted. * @return Whether the value has been successfully set. * @hide */ diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java index 69e2044ad232..bb9d42ecd77c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java @@ -417,7 +417,9 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> /** * Get battery level from remote device - * @return battery level in percentage [0-100], or {@link BluetoothDevice#BATTERY_LEVEL_UNKNOWN} + * @return battery level in percentage [0-100], + * {@link BluetoothDevice#BATTERY_LEVEL_BLUETOOTH_OFF}, or + * {@link BluetoothDevice#BATTERY_LEVEL_UNKNOWN} */ public int getBatteryLevel() { return mDevice.getBatteryLevel(); @@ -862,12 +864,12 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> } String batteryLevelPercentageString = null; - // Android framework should only set mBatteryLevel to valid range [0-100] or - // BluetoothDevice.BATTERY_LEVEL_UNKNOWN, any other value should be a framework bug. - // Thus assume here that if value is not BluetoothDevice.BATTERY_LEVEL_UNKNOWN, it must - // be valid + // Android framework should only set mBatteryLevel to valid range [0-100], + // BluetoothDevice.BATTERY_LEVEL_BLUETOOTH_OFF, or BluetoothDevice.BATTERY_LEVEL_UNKNOWN, + // any other value should be a framework bug. Thus assume here that if value is greater + // than BluetoothDevice.BATTERY_LEVEL_UNKNOWN, it must be valid final int batteryLevel = getBatteryLevel(); - if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { + if (batteryLevel > BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { // TODO: name com.android.settingslib.bluetooth.Utils something different batteryLevelPercentageString = com.android.settingslib.Utils.formatPercentage(batteryLevel); @@ -970,12 +972,12 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> } String batteryLevelPercentageString = null; - // Android framework should only set mBatteryLevel to valid range [0-100] or - // BluetoothDevice.BATTERY_LEVEL_UNKNOWN, any other value should be a framework bug. - // Thus assume here that if value is not BluetoothDevice.BATTERY_LEVEL_UNKNOWN, it must - // be valid + // Android framework should only set mBatteryLevel to valid range [0-100], + // BluetoothDevice.BATTERY_LEVEL_BLUETOOTH_OFF, or BluetoothDevice.BATTERY_LEVEL_UNKNOWN, + // any other value should be a framework bug. Thus assume here that if value is greater + // than BluetoothDevice.BATTERY_LEVEL_UNKNOWN, it must be valid final int batteryLevel = getBatteryLevel(); - if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { + if (batteryLevel > BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { // TODO: name com.android.settingslib.bluetooth.Utils something different batteryLevelPercentageString = com.android.settingslib.Utils.formatPercentage(batteryLevel); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java index 9282a2e3b312..907cc98ab2eb 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java @@ -199,7 +199,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> { CachedBluetoothDevice lastDevice = connectedDevices.get(0); final int batteryLevel = lastDevice.getBatteryLevel(); - if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { + if (batteryLevel > BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { return mContext.getString( R.string.quick_settings_bluetooth_secondary_label_battery_level, Utils.formatPercentage(batteryLevel)); @@ -392,7 +392,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> { if (state == BluetoothProfile.STATE_CONNECTED) { item.iconResId = R.drawable.ic_bluetooth_connected; int batteryLevel = device.getBatteryLevel(); - if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { + if (batteryLevel > BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { item.icon = new BluetoothBatteryTileIcon(batteryLevel,1 /* iconScale */); item.line2 = mContext.getString( R.string.quick_settings_connected_battery_level, |