Merge "Update the bluetooth battery icon" into oc-mr1-dev am: 04ba0f5067

am: e01900d9c5

Change-Id: I7560f9100b4778d72ad5e395b58d720aeb25438b
This commit is contained in:
Lei Yu
2017-09-15 11:15:08 +00:00
committed by android-build-merger
3 changed files with 27 additions and 14 deletions

View File

@@ -51,8 +51,9 @@ public class BluetoothDetailsHeaderController extends BluetoothDetailsController
} }
protected void setHeaderProperties() { protected void setHeaderProperties() {
final Pair<Drawable, String> pair = Utils.getBtClassDrawableWithDescription final Pair<Drawable, String> pair = Utils.getBtClassDrawableWithDescription(
(mContext, mCachedDevice); mContext, mCachedDevice,
mContext.getResources().getFraction(R.fraction.bt_battery_scale_fraction, 1, 1));
String summaryText = mCachedDevice.getConnectionSummary(); String summaryText = mCachedDevice.getConnectionSummary();
mHeaderController.setLabel(mCachedDevice.getName()); mHeaderController.setLabel(mCachedDevice.getName());
mHeaderController.setIcon(pair.first); mHeaderController.setIcon(pair.first);

View File

@@ -156,28 +156,36 @@ public final class Utils {
static Pair<Drawable, String> getBtClassDrawableWithDescription(Context context, static Pair<Drawable, String> getBtClassDrawableWithDescription(Context context,
CachedBluetoothDevice cachedDevice) { CachedBluetoothDevice cachedDevice) {
return getBtClassDrawableWithDescription(context, cachedDevice, 1 /* iconScale */);
}
static Pair<Drawable, String> getBtClassDrawableWithDescription(Context context,
CachedBluetoothDevice cachedDevice, float iconScale) {
BluetoothClass btClass = cachedDevice.getBtClass(); BluetoothClass btClass = cachedDevice.getBtClass();
final int level = cachedDevice.getBatteryLevel(); final int level = cachedDevice.getBatteryLevel();
if (btClass != null) { if (btClass != null) {
switch (btClass.getMajorDeviceClass()) { switch (btClass.getMajorDeviceClass()) {
case BluetoothClass.Device.Major.COMPUTER: case BluetoothClass.Device.Major.COMPUTER:
return new Pair<>(getBluetoothDrawable(context, R.drawable.ic_bt_laptop, level), return new Pair<>(getBluetoothDrawable(context, R.drawable.ic_bt_laptop, level,
iconScale),
context.getString(R.string.bluetooth_talkback_computer)); context.getString(R.string.bluetooth_talkback_computer));
case BluetoothClass.Device.Major.PHONE: case BluetoothClass.Device.Major.PHONE:
return new Pair<>( return new Pair<>(
getBluetoothDrawable(context, R.drawable.ic_bt_cellphone, level), getBluetoothDrawable(context, R.drawable.ic_bt_cellphone, level,
iconScale),
context.getString(R.string.bluetooth_talkback_phone)); context.getString(R.string.bluetooth_talkback_phone));
case BluetoothClass.Device.Major.PERIPHERAL: case BluetoothClass.Device.Major.PERIPHERAL:
return new Pair<>( return new Pair<>(
getBluetoothDrawable(context, HidProfile.getHidClassDrawable(btClass), getBluetoothDrawable(context, HidProfile.getHidClassDrawable(btClass),
level), level, iconScale),
context.getString(R.string.bluetooth_talkback_input_peripheral)); context.getString(R.string.bluetooth_talkback_input_peripheral));
case BluetoothClass.Device.Major.IMAGING: case BluetoothClass.Device.Major.IMAGING:
return new Pair<>( return new Pair<>(
getBluetoothDrawable(context, R.drawable.ic_settings_print, level), getBluetoothDrawable(context, R.drawable.ic_settings_print, level,
iconScale),
context.getString(R.string.bluetooth_talkback_imaging)); context.getString(R.string.bluetooth_talkback_imaging));
default: default:
@@ -189,30 +197,34 @@ public final class Utils {
for (LocalBluetoothProfile profile : profiles) { for (LocalBluetoothProfile profile : profiles) {
int resId = profile.getDrawableResource(btClass); int resId = profile.getDrawableResource(btClass);
if (resId != 0) { if (resId != 0) {
return new Pair<>(getBluetoothDrawable(context, resId, level), null); return new Pair<>(getBluetoothDrawable(context, resId, level, iconScale), null);
} }
} }
if (btClass != null) { if (btClass != null) {
if (btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) { if (btClass.doesClassMatch(BluetoothClass.PROFILE_HEADSET)) {
return new Pair<>( return new Pair<>(
getBluetoothDrawable(context, R.drawable.ic_bt_headset_hfp, level), getBluetoothDrawable(context, R.drawable.ic_bt_headset_hfp, level,
iconScale),
context.getString(R.string.bluetooth_talkback_headset)); context.getString(R.string.bluetooth_talkback_headset));
} }
if (btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) { if (btClass.doesClassMatch(BluetoothClass.PROFILE_A2DP)) {
return new Pair<>( return new Pair<>(
getBluetoothDrawable(context, R.drawable.ic_bt_headphones_a2dp, level), getBluetoothDrawable(context, R.drawable.ic_bt_headphones_a2dp, level,
iconScale),
context.getString(R.string.bluetooth_talkback_headphone)); context.getString(R.string.bluetooth_talkback_headphone));
} }
} }
return new Pair<>(getBluetoothDrawable(context, R.drawable.ic_settings_bluetooth, level), return new Pair<>(
getBluetoothDrawable(context, R.drawable.ic_settings_bluetooth, level, iconScale),
context.getString(R.string.bluetooth_talkback_bluetooth)); context.getString(R.string.bluetooth_talkback_bluetooth));
} }
@VisibleForTesting @VisibleForTesting
static Drawable getBluetoothDrawable(Context context, @DrawableRes int resId, static Drawable getBluetoothDrawable(Context context, @DrawableRes int resId,
int batteryLevel) { int batteryLevel, float iconScale) {
if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) { if (batteryLevel != BluetoothDevice.BATTERY_LEVEL_UNKNOWN) {
return BluetoothDeviceLayerDrawable.createLayerDrawable(context, resId, batteryLevel); return BluetoothDeviceLayerDrawable.createLayerDrawable(context, resId, batteryLevel,
iconScale);
} else if (resId != 0) { } else if (resId != 0) {
return context.getDrawable(resId); return context.getDrawable(resId);
} else { } else {

View File

@@ -80,7 +80,7 @@ public class UtilsTest {
@Test @Test
public void testGetBluetoothDrawable_noBatteryLevel_returnSimpleDrawable() { public void testGetBluetoothDrawable_noBatteryLevel_returnSimpleDrawable() {
final Drawable drawable = Utils.getBluetoothDrawable(RuntimeEnvironment.application, final Drawable drawable = Utils.getBluetoothDrawable(RuntimeEnvironment.application,
R.drawable.ic_bt_laptop, BluetoothDevice.BATTERY_LEVEL_UNKNOWN); R.drawable.ic_bt_laptop, BluetoothDevice.BATTERY_LEVEL_UNKNOWN, 1 /* iconScale */);
assertThat(drawable).isNotInstanceOf(BluetoothDeviceLayerDrawable.class); assertThat(drawable).isNotInstanceOf(BluetoothDeviceLayerDrawable.class);
} }
@@ -88,7 +88,7 @@ public class UtilsTest {
@Test @Test
public void testGetBluetoothDrawable_hasBatteryLevel_returnLayerDrawable() { public void testGetBluetoothDrawable_hasBatteryLevel_returnLayerDrawable() {
final Drawable drawable = Utils.getBluetoothDrawable(RuntimeEnvironment.application, final Drawable drawable = Utils.getBluetoothDrawable(RuntimeEnvironment.application,
R.drawable.ic_bt_laptop, 10 /* batteryLevel */); R.drawable.ic_bt_laptop, 10 /* batteryLevel */, 1 /* iconScale */);
assertThat(drawable).isInstanceOf(BluetoothDeviceLayerDrawable.class); assertThat(drawable).isInstanceOf(BluetoothDeviceLayerDrawable.class);
} }