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.print.PrintSettingPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.uwb.UwbPreferenceController;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.search.SearchIndexable;
@@ -43,6 +44,7 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment
private static final String TAG = "AdvancedConnectedDeviceFrag";
static final String KEY_BLUETOOTH = "bluetooth_settings";
static final String KEY_UWB = "uwb_settings";
@Override
public int getMetricsCategory() {
@@ -64,6 +66,15 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment
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
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
return buildControllers(context, getSettingsLifecycle());

View File

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