summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/AirplaneModeEnabler.java
diff options
context:
space:
mode:
authorBonian Chen <bonianchen@google.com>2019-12-31 16:59:37 +0800
committerBonian Chen <bonianchen@google.com>2019-12-31 17:02:35 +0800
commita72a038bb69428e32d7bf4854df6cd8918397cc8 (patch)
treed9797bbce867f00419b96e1450853c4702ff8378 /src/com/android/settings/AirplaneModeEnabler.java
parent8a9ad065704bedecb1b4cce5052bf367c4df5480 (diff)
downloadpackages_apps_Settings-a72a038bb69428e32d7bf4854df6cd8918397cc8.tar.gz
packages_apps_Settings-a72a038bb69428e32d7bf4854df6cd8918397cc8.tar.bz2
packages_apps_Settings-a72a038bb69428e32d7bf4854df6cd8918397cc8.zip
[Settings] Refactor AirplaneModeEnabler
1. Multiple instance of PhoneStateListener is not required. 2. It will be better to monitor radio power state changed instead of service state. Bug: 147029746 Test: Manual Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=AirplaneModePreferenceControllerTest Change-Id: I51465904ce2409b6c07c3ba80ea362d208989fbd
Diffstat (limited to 'src/com/android/settings/AirplaneModeEnabler.java')
-rw-r--r--src/com/android/settings/AirplaneModeEnabler.java95
1 files changed, 16 insertions, 79 deletions
diff --git a/src/com/android/settings/AirplaneModeEnabler.java b/src/com/android/settings/AirplaneModeEnabler.java
index ee3eaa456c..f1d36f2654 100644
--- a/src/com/android/settings/AirplaneModeEnabler.java
+++ b/src/com/android/settings/AirplaneModeEnabler.java
@@ -22,9 +22,7 @@ import android.content.Intent;
import android.os.UserHandle;
import android.provider.Settings;
import android.telephony.PhoneStateListener;
-import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
@@ -34,7 +32,6 @@ import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.WirelessUtils;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -61,12 +58,11 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
private TelephonyManager mTelephonyManager;
private ProxySubscriptionManager mProxySubscriptionMgr;
- private List<ServiceStateListener> mServiceStateListeners;
+ private PhoneStateListener mPhoneStateListener;
private GlobalSettingsChangeListener mAirplaneModeObserver;
- public AirplaneModeEnabler(Context context,
- OnAirplaneModeChangedListener listener) {
+ public AirplaneModeEnabler(Context context, OnAirplaneModeChangedListener listener) {
super(context, Settings.Global.AIRPLANE_MODE_ON);
mContext = context;
@@ -75,6 +71,16 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
mTelephonyManager = context.getSystemService(TelephonyManager.class);
mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(context);
+
+ mPhoneStateListener = new PhoneStateListener() {
+ @Override
+ public void onRadioPowerStateChanged(int state) {
+ if (DEBUG) {
+ Log.d(LOG_TAG, "RadioPower: " + state);
+ }
+ onAirplaneModeChanged();
+ }
+ };
}
/**
@@ -88,35 +94,13 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
}
public void resume() {
- final List<SubscriptionInfo> subInfoList =
- mProxySubscriptionMgr.getActiveSubscriptionsInfo();
-
- mServiceStateListeners = new ArrayList<ServiceStateListener>();
-
- // add default listener
- mServiceStateListeners.add(new ServiceStateListener(mTelephonyManager,
- SubscriptionManager.INVALID_SUBSCRIPTION_ID, this));
-
- if (subInfoList != null) {
- for (SubscriptionInfo subInfo : subInfoList) {
- mServiceStateListeners.add(new ServiceStateListener(mTelephonyManager,
- subInfo.getSubscriptionId(), this));
- }
- }
-
- for (ServiceStateListener listener : mServiceStateListeners) {
- listener.start();
- }
+ mTelephonyManager.listen(mPhoneStateListener,
+ PhoneStateListener.LISTEN_RADIO_POWER_STATE_CHANGED);
}
public void pause() {
- if (mServiceStateListeners == null) {
- return;
- }
- for (ServiceStateListener listener : mServiceStateListeners) {
- listener.stop();
- }
- mServiceStateListeners = null;
+ mTelephonyManager.listen(mPhoneStateListener,
+ PhoneStateListener.LISTEN_NONE);
}
private void setAirplaneModeOn(boolean enabling) {
@@ -200,51 +184,4 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
public boolean isAirplaneModeOn() {
return WirelessUtils.isAirplaneModeOn(mContext);
}
-
- private static class ServiceStateListener extends PhoneStateListener {
- private ServiceStateListener(TelephonyManager telephonyManager, int subscriptionId,
- AirplaneModeEnabler enabler) {
- super();
- mSubId = subscriptionId;
- mTelephonyManager = getSubIdSpecificTelephonyManager(telephonyManager);
- mEnabler = enabler;
- }
-
- private final int mSubId;
- private final TelephonyManager mTelephonyManager;
- private final AirplaneModeEnabler mEnabler;
-
- int getSubscriptionId() {
- return mSubId;
- }
-
- void start() {
- if (mTelephonyManager != null) {
- mTelephonyManager.listen(this, PhoneStateListener.LISTEN_SERVICE_STATE);
- }
- }
-
- void stop() {
- if (mTelephonyManager != null) {
- mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
- }
- }
-
- @Override
- public void onServiceStateChanged(ServiceState serviceState) {
- if (DEBUG) {
- Log.d(LOG_TAG, "ServiceState in sub" + mSubId + ": " + serviceState);
- }
- mEnabler.onAirplaneModeChanged();
- }
-
- private TelephonyManager getSubIdSpecificTelephonyManager(
- TelephonyManager telephonyManager) {
- if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- return telephonyManager;
- }
- return telephonyManager.createForSubscriptionId(mSubId);
- }
- }
-
}