Update UWB toggle display after lifecycle events.

Bug: 201790864
Test: Manual
Change-Id: I05cb52331fe106017b2cb6718a897690720725db
This commit is contained in:
Joy Babafemi
2021-10-13 18:51:58 +00:00
parent a516da5761
commit 06a39e9e34
2 changed files with 18 additions and 0 deletions

View File

@@ -26,6 +26,7 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.nfc.AndroidBeamPreferenceController; import com.android.settings.nfc.AndroidBeamPreferenceController;
import com.android.settings.print.PrintSettingPreferenceController; import com.android.settings.print.PrintSettingPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.uwb.UwbPreferenceController;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
@@ -43,6 +44,7 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment
private static final String TAG = "AdvancedConnectedDeviceFrag"; private static final String TAG = "AdvancedConnectedDeviceFrag";
static final String KEY_BLUETOOTH = "bluetooth_settings"; static final String KEY_BLUETOOTH = "bluetooth_settings";
static final String KEY_UWB = "uwb_settings";
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
@@ -64,6 +66,15 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment
return R.xml.connected_devices_advanced; return R.xml.connected_devices_advanced;
} }
@Override
public void onAttach(Context context) {
super.onAttach(context);
UwbPreferenceController uwbPreferenceController = use(UwbPreferenceController.class);
if (uwbPreferenceController != null && getSettingsLifecycle() != null) {
getSettingsLifecycle().addObserver(uwbPreferenceController);
}
}
@Override @Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
return buildControllers(context, getSettingsLifecycle()); return buildControllers(context, getSettingsLifecycle());

View File

@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
import android.uwb.UwbManager; import android.uwb.UwbManager;
import android.uwb.UwbManager.AdapterStateCallback; import android.uwb.UwbManager.AdapterStateCallback;
@@ -52,11 +53,13 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
@VisibleForTesting @VisibleForTesting
private final BroadcastReceiver mAirplaneModeChangedReceiver; private final BroadcastReceiver mAirplaneModeChangedReceiver;
private final Executor mExecutor; private final Executor mExecutor;
private final Handler mHandler;
private Preference mPreference; private Preference mPreference;
public UwbPreferenceController(Context context, String key) { public UwbPreferenceController(Context context, String key) {
super(context, key); super(context, key);
mExecutor = Executors.newSingleThreadExecutor(); mExecutor = Executors.newSingleThreadExecutor();
mHandler = new Handler(context.getMainLooper());
if (isUwbSupportedOnDevice()) { if (isUwbSupportedOnDevice()) {
mUwbManager = context.getSystemService(UwbManager.class); mUwbManager = context.getSystemService(UwbManager.class);
} }
@@ -65,6 +68,8 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
mAirplaneModeChangedReceiver = new BroadcastReceiver() { mAirplaneModeChangedReceiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
mAirplaneModeOn = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
updateState(mPreference); updateState(mPreference);
} }
}; };
@@ -114,6 +119,8 @@ public class UwbPreferenceController extends TogglePreferenceController implemen
@Override @Override
public void onStateChanged(int state, int reason) { public void onStateChanged(int state, int reason) {
Runnable runnable = () -> updateState(mPreference);
mHandler.post(runnable);
} }
/** Called when activity starts being displayed to user. */ /** Called when activity starts being displayed to user. */