Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7d3c5f1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Settings] Use TelephonyManasger.registerTelephonyCallback instead of...

Merge "[Settings] Use TelephonyManasger.registerTelephonyCallback instead of TelephonyManager.listen" into sc-dev
parents fdb6af2d b8a639f8
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.util.Log;

@@ -61,7 +62,7 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {

    private TelephonyManager mTelephonyManager;
    @VisibleForTesting
    PhoneStateListener mPhoneStateListener;
    AirplaneModeTelephonyCallback mTelephonyCallback;

    public AirplaneModeEnabler(Context context, OnAirplaneModeChangedListener listener) {
        super(context, Settings.Global.AIRPLANE_MODE_ON);
@@ -71,8 +72,11 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
        mOnAirplaneModeChangedListener = listener;

        mTelephonyManager = context.getSystemService(TelephonyManager.class);
        mTelephonyCallback = new AirplaneModeTelephonyCallback();
    }

        mPhoneStateListener = new PhoneStateListener(Looper.getMainLooper()) {
    class AirplaneModeTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.RadioPowerStateListener {
        @Override
        public void onRadioPowerStateChanged(int state) {
            if (DEBUG) {
@@ -80,7 +84,6 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
            }
            onAirplaneModeChanged();
        }
        };
    }

    /**
@@ -98,16 +101,14 @@ public class AirplaneModeEnabler extends GlobalSettingsChangeListener {
     * Start listening to the phone state change
     */
    public void start() {
        mTelephonyManager.listen(mPhoneStateListener,
                PhoneStateListener.LISTEN_RADIO_POWER_STATE_CHANGED);
        mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
    }

    /**
     * Stop listening to the phone state change
     */
    public void stop() {
        mTelephonyManager.listen(mPhoneStateListener,
                PhoneStateListener.LISTEN_NONE);
        mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
    }

    private void setAirplaneModeOn(boolean enabling) {
+33 −33
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo;
@@ -170,7 +171,8 @@ public class SimStatusDialogController implements LifecycleObserver {
        }
    };

    private PhoneStateListener mPhoneStateListener;
    @VisibleForTesting
    protected SimStatusDialogTelephonyCallback mTelephonyCallback;

    private CellBroadcastServiceConnection mCellBroadcastServiceConnection;

@@ -235,7 +237,7 @@ public class SimStatusDialogController implements LifecycleObserver {
        }
        mTelephonyManager =
            mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId());
        mPhoneStateListener = getPhoneStateListener();
        mTelephonyCallback = new SimStatusDialogTelephonyCallback();
        updateLatestAreaInfo();
        updateSubscriptionStatus();
    }
@@ -278,11 +280,7 @@ public class SimStatusDialogController implements LifecycleObserver {
        }
        mTelephonyManager = mTelephonyManager.createForSubscriptionId(
                mSubscriptionInfo.getSubscriptionId());
        mTelephonyManager.listen(mPhoneStateListener,
                PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                        | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
                        | PhoneStateListener.LISTEN_SERVICE_STATE
                        | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
        mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(), mTelephonyCallback);
        mSubscriptionManager.addOnSubscriptionsChangedListener(
                mContext.getMainExecutor(), mOnSubscriptionsChangedListener);
        registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
@@ -305,7 +303,7 @@ public class SimStatusDialogController implements LifecycleObserver {
            if (mIsRegisteredListener) {
                mSubscriptionManager.removeOnSubscriptionsChangedListener(
                        mOnSubscriptionsChangedListener);
                mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
                mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
                if (mShowLatestAreaInfo) {
                    mContext.unregisterReceiver(mAreaInfoReceiver);
                }
@@ -316,7 +314,7 @@ public class SimStatusDialogController implements LifecycleObserver {

        unregisterImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId());
        mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
        mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);

        if (mShowLatestAreaInfo) {
            mContext.unregisterReceiver(mAreaInfoReceiver);
@@ -768,10 +766,13 @@ public class SimStatusDialogController implements LifecycleObserver {
    }

    @VisibleForTesting
    protected PhoneStateListener getPhoneStateListener() {
        return new PhoneStateListener() {
    class SimStatusDialogTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.DataConnectionStateListener,
            TelephonyCallback.SignalStrengthsListener,
            TelephonyCallback.ServiceStateListener,
            TelephonyCallback.DisplayInfoListener {
        @Override
            public void onDataConnectionStateChanged(int state) {
        public void onDataConnectionStateChanged(int state, int networkType) {
            updateDataState(state);
            updateNetworkType();
        }
@@ -794,7 +795,6 @@ public class SimStatusDialogController implements LifecycleObserver {
            mTelephonyDisplayInfo = displayInfo;
            updateNetworkType();
        }
        };
    }

    @VisibleForTesting
+16 −11
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.os.UserManager;
import android.provider.Settings;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;

import androidx.annotation.VisibleForTesting;
@@ -55,7 +56,7 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl
    private final UserManager mUserManager;
    private Preference mPreference;
    @VisibleForTesting
    PhoneStateListener mPhoneStateListener;
    MobileNetworkTelephonyCallback mTelephonyCallback;

    private BroadcastReceiver mAirplanModeChangedReceiver;

@@ -97,18 +98,22 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl
        return KEY_MOBILE_NETWORK_SETTINGS;
    }

    @OnLifecycleEvent(Event.ON_START)
    public void onStart() {
        if (isAvailable()) {
            if (mPhoneStateListener == null) {
                mPhoneStateListener = new PhoneStateListener() {
    class MobileNetworkTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.ServiceStateListener {
        @Override
        public void onServiceStateChanged(ServiceState serviceState) {
            updateState(mPreference);
        }
                };
    }
            mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);

    @OnLifecycleEvent(Event.ON_START)
    public void onStart() {
        if (isAvailable()) {
            if (mTelephonyCallback == null) {
                mTelephonyCallback = new MobileNetworkTelephonyCallback();
            }
            mTelephonyManager.registerTelephonyCallback(
                    mContext.getMainExecutor(), mTelephonyCallback);
        }
        if (mAirplanModeChangedReceiver != null) {
            mContext.registerReceiver(mAirplanModeChangedReceiver,
@@ -118,8 +123,8 @@ public class MobileNetworkPreferenceController extends AbstractPreferenceControl

    @OnLifecycleEvent(Event.ON_STOP)
    public void onStop() {
        if (mPhoneStateListener != null) {
            mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
        if (mTelephonyCallback != null) {
            mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
        }
        if (mAirplanModeChangedReceiver != null) {
            mContext.unregisterReceiver(mAirplanModeChangedReceiver);
+14 −16
Original line number Diff line number Diff line
@@ -20,11 +20,11 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Looper;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.telephony.ims.ImsMmTelManager;
import android.util.Log;
@@ -53,7 +53,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc

    @VisibleForTesting
    Preference mPreference;
    private PhoneCallStateListener mPhoneStateListener;
    private PhoneCallStateTelephonyCallback mTelephonyCallback;
    private boolean mShow5gLimitedDialog;
    boolean mIsNrEnabledFromCarrierConfig;
    private boolean mHas5gCapability;
@@ -72,8 +72,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
    }

    public Enhanced4gBasePreferenceController init(int subId) {
        if (mPhoneStateListener == null) {
            mPhoneStateListener = new PhoneCallStateListener();
        if (mTelephonyCallback == null) {
            mTelephonyCallback = new PhoneCallStateTelephonyCallback();
        }

        if (mSubId == subId) {
@@ -134,18 +134,18 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc

    @Override
    public void onStart() {
        if (!isModeMatched() || (mPhoneStateListener == null)) {
        if (!isModeMatched() || (mTelephonyCallback == null)) {
            return;
        }
        mPhoneStateListener.register(mContext, mSubId);
        mTelephonyCallback.register(mContext, mSubId);
    }

    @Override
    public void onStop() {
        if (mPhoneStateListener == null) {
        if (mTelephonyCallback == null) {
            return;
        }
        mPhoneStateListener.unregister();
        mTelephonyCallback.unregister();
    }

    @Override
@@ -218,16 +218,13 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
                CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL);
    }

    private class PhoneCallStateListener extends PhoneStateListener {

        PhoneCallStateListener() {
            super(Looper.getMainLooper());
        }
    private class PhoneCallStateTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.CallStateListener {

        private TelephonyManager mTelephonyManager;

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
        public void onCallStateChanged(int state) {
            mCallState = state;
            updateState(mPreference);
        }
@@ -240,7 +237,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
            // assign current call state so that it helps to show correct preference state even
            // before first onCallStateChanged() by initial registration.
            mCallState = mTelephonyManager.getCallState(subId);
            mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE);
            mTelephonyManager.registerTelephonyCallback(
                    mContext.getMainExecutor(), mTelephonyCallback);

            final long supportedRadioBitmask = mTelephonyManager.getSupportedRadioAccessFamily();
            mHas5gCapability =
@@ -250,7 +248,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
        public void unregister() {
            mCallState = null;
            if (mTelephonyManager != null) {
                mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
                mTelephonyManager.unregisterTelephonyCallback(this);
            }
        }
    }
+27 −15
Original line number Diff line number Diff line
@@ -19,9 +19,12 @@ package com.android.settings.network.telephony;
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.util.ArraySet;

import androidx.annotation.VisibleForTesting;

import com.google.common.collect.Sets;

import java.util.Map;
@@ -34,7 +37,9 @@ public class SignalStrengthListener {

    private TelephonyManager mBaseTelephonyManager;
    private Callback mCallback;
    private Map<Integer, PhoneStateListener> mListeners;
    private Context mContext;
    @VisibleForTesting
    Map<Integer, SignalStrengthTelephonyCallback> mTelephonyCallbacks;

    public interface Callback {
        void onSignalStrengthChanged();
@@ -43,20 +48,21 @@ public class SignalStrengthListener {
    public SignalStrengthListener(Context context, Callback callback) {
        mBaseTelephonyManager = context.getSystemService(TelephonyManager.class);
        mCallback = callback;
        mListeners = new TreeMap<>();
        mContext = context;
        mTelephonyCallbacks = new TreeMap<>();
    }

    /** Resumes listening for signal strength changes for the set of ids from the last call to
     * {@link #updateSubscriptionIds(Set)}  */
    public void resume() {
        for (int subId : mListeners.keySet()) {
        for (int subId : mTelephonyCallbacks.keySet()) {
            startListening(subId);
        }
    }

    /** Pauses listening for signal strength changes */
    public void pause() {
        for (int subId : mListeners.keySet()) {
        for (int subId : mTelephonyCallbacks.keySet()) {
            stopListening(subId);
        }
    }
@@ -64,30 +70,36 @@ public class SignalStrengthListener {
    /** Updates the set of ids we want to be listening for, beginning to listen for any new ids and
     * stopping listening for any ids not contained in the new set */
    public void updateSubscriptionIds(Set<Integer> ids) {
        Set<Integer> currentIds = new ArraySet<>(mListeners.keySet());
        Set<Integer> currentIds = new ArraySet<>(mTelephonyCallbacks.keySet());
        for (int idToRemove : Sets.difference(currentIds, ids)) {
            stopListening(idToRemove);
            mListeners.remove(idToRemove);
            mTelephonyCallbacks.remove(idToRemove);
        }
        for (int idToAdd : Sets.difference(ids, currentIds)) {
            PhoneStateListener listener = new PhoneStateListener() {
            SignalStrengthTelephonyCallback telephonyCallback =
                    new SignalStrengthTelephonyCallback();
            mTelephonyCallbacks.put(idToAdd, telephonyCallback);
            startListening(idToAdd);
        }
    }

    @VisibleForTesting
    class SignalStrengthTelephonyCallback extends TelephonyCallback implements
            TelephonyCallback.SignalStrengthsListener {
        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            mCallback.onSignalStrengthChanged();
        }
            };
            mListeners.put(idToAdd, listener);
            startListening(idToAdd);
        }
    }

    private void startListening(int subId) {
        TelephonyManager mgr = mBaseTelephonyManager.createForSubscriptionId(subId);
        mgr.listen(mListeners.get(subId), PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
        mgr.registerTelephonyCallback(
                mContext.getMainExecutor(), mTelephonyCallbacks.get(subId));
    }

    private void stopListening(int subId) {
        TelephonyManager mgr = mBaseTelephonyManager.createForSubscriptionId(subId);
        mgr.listen(mListeners.get(subId), PhoneStateListener.LISTEN_NONE);
        mgr.unregisterTelephonyCallback(mTelephonyCallbacks.get(subId));
    }
}
Loading