Fix battery level of earbuds bt devices is inconsistent
Before this CL, bluetooth settings update the battery level of earbuds when receiving first pair status callback. But sometimes the callback will not send immediately cause the battery level is inconsistent. This CL will update the earbuds battery level when onResum() to refresh battery level immediately. Bug: 174929347 Bug: 159544311 Test: make -j42 RunSettingsRoboTests Change-Id: I8505f8fed4ec821b9fa2d88bc437bddd7a30f0e2
This commit is contained in:
@@ -175,7 +175,7 @@ public final class BluetoothDevicePreference extends GearPreference {
|
||||
mHideSecondTarget = hideSecondTarget;
|
||||
}
|
||||
|
||||
private void onPreferenceAttributesChanged() {
|
||||
void onPreferenceAttributesChanged() {
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
final Pair<Drawable, String> pair =
|
||||
BluetoothUtils.getBtRainbowDrawableWithDescription(getContext(), mCachedDevice);
|
||||
|
@@ -317,4 +317,13 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
|
||||
}
|
||||
return device.getBondState() == BluetoothDevice.BOND_BONDED && device.isConnected();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the attributes of {@link Preference}.
|
||||
*/
|
||||
public void refreshPreference() {
|
||||
for (Preference preference : mPreferenceMap.values()) {
|
||||
((BluetoothDevicePreference) preference).onPreferenceAttributesChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -68,6 +68,7 @@ public class AvailableMediaDeviceGroupController extends BasePreferenceControlle
|
||||
}
|
||||
mBluetoothDeviceUpdater.registerCallback();
|
||||
mLocalBluetoothManager.getEventManager().registerCallback(this);
|
||||
mBluetoothDeviceUpdater.refreshPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -61,6 +61,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController
|
||||
mBluetoothDeviceUpdater.registerCallback();
|
||||
mConnectedUsbDeviceUpdater.registerCallback();
|
||||
mConnectedDockUpdater.registerCallback();
|
||||
mBluetoothDeviceUpdater.refreshPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -111,6 +111,7 @@ public class PreviouslyConnectedDevicePreferenceController extends BasePreferenc
|
||||
mBluetoothDeviceUpdater.registerCallback();
|
||||
mSavedDockUpdater.registerCallback();
|
||||
mContext.registerReceiver(mReceiver, mIntentFilter);
|
||||
mBluetoothDeviceUpdater.refreshPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -63,6 +63,7 @@ public class SavedDeviceGroupController extends BasePreferenceController
|
||||
public void onStart() {
|
||||
mBluetoothDeviceUpdater.registerCallback();
|
||||
mSavedDockUpdater.registerCallback();
|
||||
mBluetoothDeviceUpdater.refreshPreference();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -58,6 +58,7 @@ public class BluetoothDeviceUpdaterTest {
|
||||
|
||||
private static final String MAC_ADDRESS = "04:52:C7:0B:D8:3C";
|
||||
private static final String SUB_MAC_ADDRESS = "05:52:C7:0B:D8:3C";
|
||||
private static final String TEST_NAME = "test_name";
|
||||
|
||||
@Mock
|
||||
private DashboardFragment mDashboardFragment;
|
||||
@@ -256,4 +257,15 @@ public class BluetoothDeviceUpdaterTest {
|
||||
verify(mDevicePreferenceCallback).onDeviceRemoved(mPreference);
|
||||
assertThat(mBluetoothDeviceUpdater.mPreferenceMap.containsKey(mBluetoothDevice)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void havePreference_refreshPreference() {
|
||||
mBluetoothDeviceUpdater.mPreferenceMap.put(mBluetoothDevice, mPreference);
|
||||
mPreference.setTitle("fake_name");
|
||||
|
||||
when(mCachedBluetoothDevice.getName()).thenReturn(TEST_NAME);
|
||||
mBluetoothDeviceUpdater.refreshPreference();
|
||||
|
||||
assertThat(mPreference.getTitle()).isEqualTo(TEST_NAME);
|
||||
}
|
||||
}
|
||||
|
@@ -157,9 +157,11 @@ public class AvailableMediaDeviceGroupControllerTest {
|
||||
public void testRegister() {
|
||||
// register the callback in onStart()
|
||||
mAvailableMediaDeviceGroupController.onStart();
|
||||
|
||||
verify(mAvailableMediaBluetoothDeviceUpdater).registerCallback();
|
||||
verify(mLocalBluetoothManager.getEventManager()).registerCallback(
|
||||
any(BluetoothCallback.class));
|
||||
verify(mAvailableMediaBluetoothDeviceUpdater).refreshPreference();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -139,9 +139,11 @@ public class ConnectedDeviceGroupControllerTest {
|
||||
public void onStart_shouldRegisterUpdaters() {
|
||||
// register the callback in onStart()
|
||||
mConnectedDeviceGroupController.onStart();
|
||||
|
||||
verify(mConnectedBluetoothDeviceUpdater).registerCallback();
|
||||
verify(mConnectedUsbDeviceUpdater).registerCallback();
|
||||
verify(mConnectedDockUpdater).registerCallback();
|
||||
verify(mConnectedBluetoothDeviceUpdater).refreshPreference();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -147,13 +147,16 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
|
||||
public void callbackCanRegisterAndUnregister() {
|
||||
// register the callback in onStart()
|
||||
mPreConnectedDeviceController.onStart();
|
||||
|
||||
verify(mBluetoothDeviceUpdater).registerCallback();
|
||||
verify(mDockUpdater).registerCallback();
|
||||
verify(mContext).registerReceiver(mPreConnectedDeviceController.mReceiver,
|
||||
mPreConnectedDeviceController.mIntentFilter);
|
||||
verify(mBluetoothDeviceUpdater).refreshPreference();
|
||||
|
||||
// unregister the callback in onStop()
|
||||
mPreConnectedDeviceController.onStop();
|
||||
|
||||
verify(mBluetoothDeviceUpdater).unregisterCallback();
|
||||
verify(mDockUpdater).unregisterCallback();
|
||||
verify(mContext).unregisterReceiver(mPreConnectedDeviceController.mReceiver);
|
||||
|
@@ -79,8 +79,10 @@ public class SavedDeviceGroupControllerTest {
|
||||
public void testRegister() {
|
||||
// register the callback in onStart()
|
||||
mSavedDeviceGroupController.onStart();
|
||||
|
||||
verify(mBluetoothDeviceUpdater).registerCallback();
|
||||
verify(mSavedDockUpdater).registerCallback();
|
||||
verify(mBluetoothDeviceUpdater).refreshPreference();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user