Add bt battery level to QS icons

Test: visual
Change-Id: I690e496e3e88fd734d43ea2f25396772e922940c
Fixes: 63393322
This commit is contained in:
Jason Monk
2017-08-30 18:11:21 -04:00
parent 6a1dad9194
commit 3fd0b14fe6
5 changed files with 32 additions and 1 deletions

View File

@@ -184,7 +184,11 @@ public class QSDetailItems extends FrameLayout {
}
view.setVisibility(mItemsVisible ? VISIBLE : INVISIBLE);
final ImageView iv = (ImageView) view.findViewById(android.R.id.icon);
iv.setImageResource(item.icon);
if (item.iconDrawable != null) {
iv.setImageDrawable(item.iconDrawable);
} else {
iv.setImageResource(item.icon);
}
iv.getOverlay().clear();
if (item.overlay != null) {
item.overlay.setBounds(0, 0, mQsDetailIconOverlaySize, mQsDetailIconOverlaySize);
@@ -254,6 +258,7 @@ public class QSDetailItems extends FrameLayout {
public static class Item {
public int icon;
public Drawable iconDrawable;
public Drawable overlay;
public CharSequence line1;
public CharSequence line2;

View File

@@ -16,6 +16,8 @@
package com.android.systemui.qs.tiles;
import static com.android.settingslib.graph.BluetoothDeviceLayerDrawable.createLayerDrawable;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
@@ -32,8 +34,10 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settingslib.Utils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.graph.BluetoothDeviceLayerDrawable;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.R.drawable;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.plugins.qs.QSTile.BooleanState;
@@ -127,6 +131,15 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
if (connected) {
state.icon = ResourceIcon.get(R.drawable.ic_qs_bluetooth_connected);
state.label = mController.getLastDeviceName();
CachedBluetoothDevice lastDevice = mController.getLastDevice();
if (lastDevice != null) {
int batteryLevel = lastDevice.getBatteryLevel();
if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) {
BluetoothDeviceLayerDrawable drawable = createLayerDrawable(mContext,
R.drawable.ic_qs_bluetooth_connected, batteryLevel);
state.icon = new DrawableIcon(drawable);
}
}
state.contentDescription = mContext.getString(
R.string.accessibility_bluetooth_name, state.label);
} else if (state.isTransient) {
@@ -278,6 +291,8 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
item.icon = R.drawable.ic_qs_bluetooth_connected;
int batteryLevel = device.getBatteryLevel();
if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) {
item.iconDrawable = createLayerDrawable(mContext, item.icon,
batteryLevel);
item.line2 = mContext.getString(
R.string.quick_settings_connected_battery_level,
Utils.formatPercentage(batteryLevel));

View File

@@ -39,6 +39,7 @@ public interface BluetoothController extends CallbackController<Callback>, Dumpa
int getMaxConnectionState(CachedBluetoothDevice device);
int getBondState(CachedBluetoothDevice device);
CachedBluetoothDevice getLastDevice();
public interface Callback {
void onBluetoothStateChange(boolean enabled);

View File

@@ -120,6 +120,11 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
return getCachedState(device).mBondState;
}
@Override
public CachedBluetoothDevice getLastDevice() {
return mLastDevice;
}
@Override
public int getMaxConnectionState(CachedBluetoothDevice device) {
return getCachedState(device).mMaxConnectionState;

View File

@@ -93,4 +93,9 @@ public class FakeBluetoothController extends BaseLeakChecker<Callback> implement
public int getBondState(CachedBluetoothDevice device) {
return 0;
}
@Override
public CachedBluetoothDevice getLastDevice() {
return null;
}
}