Add Wi-Fi and adaptive mobile network (5G PM) toggle event in Adaptive Connectivity UX

Bug: 393645580
Flag: com.android.settings.flags.enable_nested_toggle_switches
Test: Manual testing
atest AdaptiveConnectivityScreenTest
atest AdaptiveMobileNetworkTogglePreferenceTest
atest WifiScorerTogglePreferenceTest

Change-Id: Ic3b8e4aca5e2096b4e94aed10cd516c3f94e48c1
This commit is contained in:
noshinmir
2025-02-24 09:18:34 +00:00
parent d889fa6277
commit 5d7dfdea71
7 changed files with 533 additions and 25 deletions

View File

@@ -15,9 +15,14 @@
*/
package com.android.settings.network;
import static android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED;
import static android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_WIFI_ENABLED;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -31,12 +36,7 @@ import com.android.settingslib.search.SearchIndexable;
/** Adaptive connectivity is a feature which automatically manages network connections. */
@SearchIndexable
public class AdaptiveConnectivitySettings extends DashboardFragment {
private static final String TAG = "AdaptiveConnectivitySettings";
protected static final String ADAPTIVE_CONNECTIVITY_WIFI_ENABLED =
"adaptive_connectivity_wifi_enabled";
protected static final String ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED =
"adaptive_connectivity_mobile_network_enabled";
@Override
public int getMetricsCategory() {
@@ -65,16 +65,25 @@ public class AdaptiveConnectivitySettings extends DashboardFragment {
public void onCreatePreferences(@NonNull Bundle savedInstanceState, @NonNull String rootKey) {
Log.i("Settings", "onCreatePreferences");
super.onCreatePreferences(savedInstanceState, rootKey);
if (Flags.enableNestedToggleSwitches()) {
setSwitchVisibility(ADAPTIVE_CONNECTIVITY_WIFI_ENABLED, true);
setSwitchVisibility(ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED, true);
if (Flags.enableNestedToggleSwitches() && !isCatalystEnabled()) {
setupSwitchPreferenceCompat(ADAPTIVE_CONNECTIVITY_WIFI_ENABLED);
setupSwitchPreferenceCompat(ADAPTIVE_CONNECTIVITY_MOBILE_NETWORK_ENABLED);
}
}
private void setSwitchVisibility(String key, boolean isVisible) {
private void setupSwitchPreferenceCompat(String key) {
SwitchPreferenceCompat switchPreference = findPreference(key);
if (switchPreference != null) {
switchPreference.setVisible(isVisible);
switchPreference.setOnPreferenceChangeListener(
(preference, newValue) -> {
boolean isChecked = (Boolean) newValue;
Settings.Secure.putInt(getContentResolver(), key, isChecked ? 1 : 0);
if (preference.getKey().equals(ADAPTIVE_CONNECTIVITY_WIFI_ENABLED)) {
getSystemService(WifiManager.class).setWifiScoringEnabled(isChecked);
}
return true;
});
switchPreference.setVisible(true);
}
}
}