diff options
author | Bonian Chen <bonianchen@google.com> | 2019-12-31 16:59:37 +0800 |
---|---|---|
committer | Bonian Chen <bonianchen@google.com> | 2019-12-31 17:02:35 +0800 |
commit | a72a038bb69428e32d7bf4854df6cd8918397cc8 (patch) | |
tree | d9797bbce867f00419b96e1450853c4702ff8378 /src/com/android/settings/AirplaneModeEnabler.java | |
parent | 8a9ad065704bedecb1b4cce5052bf367c4df5480 (diff) | |
download | packages_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.java | 95 |
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); - } - } - } |