Merge "[Rohan] Two battery level, but no charging status in Rohan Setting" into sc-dev am: 0174c4bad0

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14515925

Change-Id: Ie28332bef31c7671d6b794c7d82c8958f788d66a
This commit is contained in:
TreeHugger Robot
2021-05-14 10:02:29 +00:00
committed by Automerger Merge Worker

View File

@@ -274,37 +274,43 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
showBatteryPredictionIfNecessary(linearLayout, deviceId, batteryLevel);
}
final TextView batterySummaryView = linearLayout.findViewById(R.id.bt_battery_summary);
if (batteryLevel != BluetoothUtils.META_INT_ERROR) {
linearLayout.setVisibility(View.VISIBLE);
batterySummaryView.setText(com.android.settings.Utils.formatPercentage(batteryLevel));
batterySummaryView.setVisibility(View.VISIBLE);
int lowBatteryLevel = BluetoothUtils.getIntMetaData(bluetoothDevice, lowBatteryMetaKey);
if (lowBatteryLevel == BluetoothUtils.META_INT_ERROR) {
if (batteryMetaKey == BluetoothDevice.METADATA_UNTETHERED_CASE_BATTERY) {
lowBatteryLevel = CASE_LOW_BATTERY_LEVEL;
} else {
lowBatteryLevel = LOW_BATTERY_LEVEL;
}
}
showBatteryIcon(linearLayout, batteryLevel, lowBatteryLevel, charging);
} else {
if (deviceId == MAIN_DEVICE_ID) {
if (isUntetheredHeadset(bluetoothDevice)) {
if (batteryLevel != BluetoothUtils.META_INT_ERROR) {
linearLayout.setVisibility(View.VISIBLE);
linearLayout.findViewById(R.id.bt_battery_icon).setVisibility(View.GONE);
int level = bluetoothDevice.getBatteryLevel();
if (level != BluetoothDevice.BATTERY_LEVEL_UNKNOWN
&& level != BluetoothDevice.BATTERY_LEVEL_BLUETOOTH_OFF) {
batterySummaryView.setText(com.android.settings.Utils.formatPercentage(level));
batterySummaryView.setVisibility(View.VISIBLE);
} else {
batterySummaryView.setVisibility(View.GONE);
batterySummaryView.setText(
com.android.settings.Utils.formatPercentage(batteryLevel));
batterySummaryView.setVisibility(View.VISIBLE);
int lowBatteryLevel = BluetoothUtils.getIntMetaData(bluetoothDevice,
lowBatteryMetaKey);
if (lowBatteryLevel == BluetoothUtils.META_INT_ERROR) {
if (batteryMetaKey == BluetoothDevice.METADATA_UNTETHERED_CASE_BATTERY) {
lowBatteryLevel = CASE_LOW_BATTERY_LEVEL;
} else {
lowBatteryLevel = LOW_BATTERY_LEVEL;
}
}
showBatteryIcon(linearLayout, batteryLevel, lowBatteryLevel, charging);
} else {
// Hide it if it doesn't have battery information
linearLayout.setVisibility(View.GONE);
if (deviceId == MAIN_DEVICE_ID) {
linearLayout.setVisibility(View.VISIBLE);
linearLayout.findViewById(R.id.bt_battery_icon).setVisibility(View.GONE);
int level = bluetoothDevice.getBatteryLevel();
if (level != BluetoothDevice.BATTERY_LEVEL_UNKNOWN
&& level != BluetoothDevice.BATTERY_LEVEL_BLUETOOTH_OFF) {
batterySummaryView.setText(
com.android.settings.Utils.formatPercentage(level));
batterySummaryView.setVisibility(View.VISIBLE);
} else {
batterySummaryView.setVisibility(View.GONE);
}
} else {
// Hide it if it doesn't have battery information
linearLayout.setVisibility(View.GONE);
}
}
} else {
batterySummaryView.setVisibility(View.GONE);
}
final TextView textView = linearLayout.findViewById(R.id.header_title);
if (deviceId == MAIN_DEVICE_ID) {
textView.setVisibility(View.GONE);
@@ -314,6 +320,14 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
}
}
private boolean isUntetheredHeadset(BluetoothDevice bluetoothDevice) {
return BluetoothUtils.getBooleanMetaData(bluetoothDevice,
BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET)
|| TextUtils.equals(BluetoothUtils.getStringMetaData(bluetoothDevice,
BluetoothDevice.METADATA_DEVICE_TYPE),
BluetoothDevice.DEVICE_TYPE_UNTETHERED_HEADSET);
}
private void showBatteryPredictionIfNecessary(LinearLayout linearLayout, int batteryId,
int batteryLevel) {
ThreadUtils.postOnBackgroundThread(() -> {