Merge "Add ring indicator for battery level" into main

This commit is contained in:
Haijie Hong
2024-07-09 08:44:48 +00:00
committed by Android (Google) Code Review
6 changed files with 78 additions and 13 deletions

View File

@@ -39,6 +39,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.VisibleForTesting;
@@ -46,6 +47,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.flags.Flags;
import com.android.settings.fuelgauge.BatteryMeterView;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -456,18 +458,24 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
com.android.settings.Utils.formatPercentage(batteryLevel));
batterySummaryView.setVisibility(View.VISIBLE);
showBatteryIcon(linearLayout, batteryLevel, lowBatteryLevel, charging);
showBatteryRing(linearLayout, batteryLevel);
} else {
if (deviceId == MAIN_DEVICE_ID) {
linearLayout.setVisibility(View.VISIBLE);
linearLayout.findViewById(R.id.bt_battery_icon).setVisibility(View.GONE);
int level = preloadedNativeBatteryLevel.get();
if (level != BluetoothDevice.BATTERY_LEVEL_UNKNOWN
&& level != BluetoothDevice.BATTERY_LEVEL_BLUETOOTH_OFF) {
batterySummaryView.setText(
com.android.settings.Utils.formatPercentage(level));
batterySummaryView.setVisibility(View.VISIBLE);
showBatteryRing(linearLayout, level);
} else {
batterySummaryView.setVisibility(View.GONE);
if (Flags.enableBluetoothDeviceDetailsPolish()) {
linearLayout.findViewById(R.id.battery_ring).setVisibility(View.GONE);
}
}
} else {
// Hide it if it doesn't have battery information
@@ -481,6 +489,7 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
com.android.settings.Utils.formatPercentage(batteryLevel));
batterySummaryView.setVisibility(View.VISIBLE);
showBatteryIcon(linearLayout, batteryLevel, lowBatteryLevel, charging);
showBatteryRing(linearLayout, batteryLevel);
} else {
batterySummaryView.setVisibility(View.GONE);
}
@@ -610,6 +619,14 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
imageView.setVisibility(View.VISIBLE);
}
private void showBatteryRing(LinearLayout linearLayout, int level) {
if (Flags.enableBluetoothDeviceDetailsPolish()) {
ProgressBar batteryProgress = linearLayout.findViewById(R.id.battery_ring);
batteryProgress.setProgress(level);
batteryProgress.setVisibility(View.VISIBLE);
}
}
private void updateDisconnectLayout() {
mLayoutPreference.findViewById(R.id.layout_left).setVisibility(View.GONE);
mLayoutPreference.findViewById(R.id.layout_right).setVisibility(View.GONE);
@@ -620,6 +637,9 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont
linearLayout.findViewById(R.id.header_title).setVisibility(View.GONE);
linearLayout.findViewById(R.id.bt_battery_summary).setVisibility(View.GONE);
linearLayout.findViewById(R.id.bt_battery_icon).setVisibility(View.GONE);
if (Flags.enableBluetoothDeviceDetailsPolish()) {
linearLayout.findViewById(R.id.battery_ring).setVisibility(View.GONE);
}
// Only show bluetooth icon
final BluetoothDevice bluetoothDevice = mCachedDevice.getDevice();