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

Commit acbcff9e authored by Chen Xu's avatar Chen Xu Committed by android-build-merger
Browse files

Merge "refactor radioPowerstate"

am: 354fc350

Change-Id: I964beaa764a9c49b462167a9192ac03d3049d0a9
parents cbe655e7 354fc350
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -5140,6 +5140,11 @@ package android.telephony {
    field public static final int RESULT_SUCCESS = 0; // 0x0
  }

  public class PhoneStateListener {
    method public void onRadioPowerStateChanged(int);
    field public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 4194304; // 0x400000
  }

  public class ServiceState implements android.os.Parcelable {
    method public android.telephony.NetworkRegistrationState getNetworkRegistrationState(int, int);
    method public java.util.List<android.telephony.NetworkRegistrationState> getNetworkRegistrationStates();
@@ -5267,6 +5272,7 @@ package android.telephony {
    method public boolean getEmergencyCallbackMode();
    method public java.lang.String getIsimDomain();
    method public int getPreferredNetworkType(int);
    method public int getRadioPowerState();
    method public int getSimApplicationState();
    method public int getSimCardState();
    method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();
@@ -5330,6 +5336,9 @@ package android.telephony {
    field public static final int NETWORK_MODE_TDSCDMA_WCDMA = 14; // 0xe
    field public static final int NETWORK_MODE_WCDMA_ONLY = 2; // 0x2
    field public static final int NETWORK_MODE_WCDMA_PREF = 0; // 0x0
    field public static final int RADIO_POWER_OFF = 0; // 0x0
    field public static final int RADIO_POWER_ON = 1; // 0x1
    field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2
    field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2
    field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1
    field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3
+37 −0
Original line number Diff line number Diff line
@@ -214,6 +214,9 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {

    private PhoneCapability mPhoneCapability = null;

    @TelephonyManager.RadioPowerState
    private int mRadioPowerState = TelephonyManager.RADIO_POWER_UNAVAILABLE;

    private final LocalLog mLocalLog = new LocalLog(100);

    private PreciseDataConnectionState mPreciseDataConnectionState =
@@ -753,6 +756,13 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                            remove(r.binder);
                        }
                    }
                    if ((events & PhoneStateListener.LISTEN_RADIO_POWER_STATE_CHANGED) != 0) {
                        try {
                            r.callback.onRadioPowerStateChanged(mRadioPowerState);
                        } catch (RemoteException ex) {
                            remove(r.binder);
                        }
                    }
                }
            }
        } else {
@@ -1574,6 +1584,32 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
        }
    }

    public void notifyRadioPowerStateChanged(@TelephonyManager.RadioPowerState int state) {
        if (!checkNotifyPermission("notifyRadioPowerStateChanged()")) {
            return;
        }

        if (VDBG) {
            log("notifyRadioPowerStateChanged: state= " + state);
        }

        synchronized (mRecords) {
            mRadioPowerState = state;

            for (Record r : mRecords) {
                if (r.matchPhoneStateListenerEvent(
                        PhoneStateListener.LISTEN_RADIO_POWER_STATE_CHANGED)) {
                    try {
                        r.callback.onRadioPowerStateChanged(state);
                    } catch (RemoteException ex) {
                        mRemoveList.add(r.binder);
                    }
                }
            }
            handleRemoveListLocked();
        }
    }


    @Override
    public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
@@ -1611,6 +1647,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
            pw.println("mBackgroundCallState=" + mBackgroundCallState);
            pw.println("mVoLteServiceState=" + mVoLteServiceState);
            pw.println("mPhoneCapability=" + mPhoneCapability);
            pw.println("mRadioPowerState=" + mRadioPowerState);

            pw.decreaseIndent();

+29 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.telephony;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.UnsupportedAppUsage;
import android.os.Bundle;
import android.os.Handler;
@@ -281,6 +282,15 @@ public class PhoneStateListener {
     */
    public static final int LISTEN_PHONE_CAPABILITY_CHANGE                 = 0x00200000;

    /**
     *  Listen for changes to the radio power state.
     *
     *  @see #onRadioPowerStateChanged
     *  @hide
     */
    @SystemApi
    public static final int LISTEN_RADIO_POWER_STATE_CHANGED               = 0x00400000;

    /*
     * Subscription used to listen to the phone state changes
     * @hide
@@ -407,6 +417,9 @@ public class PhoneStateListener {
                        PhoneStateListener.this.onPhoneCapabilityChanged(
                                (PhoneCapability) msg.obj);
                        break;
                    case LISTEN_RADIO_POWER_STATE_CHANGED:
                        PhoneStateListener.this.onRadioPowerStateChanged((int) msg.obj);
                        break;
                }
            }
        };
@@ -646,6 +659,18 @@ public class PhoneStateListener {
        // default implementation empty
    }

    /**
     * Callback invoked when modem radio power state changes. Requires
     * the READ_PRIVILEGED_PHONE_STATE permission.
     * @param state the modem radio power state
     * @hide
     */
    @SystemApi
    public void onRadioPowerStateChanged(@TelephonyManager.RadioPowerState int state) {
        // default implementation empty
    }


    /**
     * Callback invoked when telephony has received notice from a carrier
     * app that a network action that could result in connectivity loss
@@ -777,6 +802,10 @@ public class PhoneStateListener {
        public void onPhoneCapabilityChanged(PhoneCapability capability) {
            send(LISTEN_PHONE_CAPABILITY_CHANGE, 0, 0, capability);
        }

        public void onRadioPowerStateChanged(@TelephonyManager.RadioPowerState int state) {
            send(LISTEN_RADIO_POWER_STATE_CHANGED, 0, 0, state);
        }
    }

    /**
+54 −0
Original line number Diff line number Diff line
@@ -6855,6 +6855,60 @@ public class TelephonyManager {
        return false;
    }

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = {"RADIO_POWER_"},
            value = {RADIO_POWER_OFF,
                    RADIO_POWER_ON,
                    RADIO_POWER_UNAVAILABLE,
            })
    public @interface RadioPowerState {}

    /**
     * Radio explicitly powered off (e.g, airplane mode).
     * @hide
     */
    @SystemApi
    public static final int RADIO_POWER_OFF = 0;

    /**
     * Radio power is on.
     * @hide
     */
    @SystemApi
    public static final int RADIO_POWER_ON = 1;

    /**
     * Radio power unavailable (eg, modem resetting or not booted).
     * @hide
     */
    @SystemApi
    public static final int RADIO_POWER_UNAVAILABLE = 2;

    /**
     * @return current modem radio state.
     *
     * <p>Requires permission: {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or
     * {@link android.Manifest.permission#READ_PHONE_STATE} or that the calling
     * app has carrier privileges (see {@link #hasCarrierPrivileges}).
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(anyOf = {android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
            android.Manifest.permission.READ_PHONE_STATE})
    public @RadioPowerState int getRadioPowerState() {
        try {
            ITelephony telephony = getITelephony();
            if (telephony != null) {
                return telephony.getRadioPowerState(getSlotIndex(), mContext.getOpPackageName());
            }
        } catch (RemoteException ex) {
            // This could happen if binder process crashes.
        }
        return RADIO_POWER_UNAVAILABLE;
    }

    /** @hide */
    @SystemApi
    @SuppressLint("Doclava125")
+1 −0
Original line number Diff line number Diff line
@@ -52,5 +52,6 @@ oneway interface IPhoneStateListener {
    void onCarrierNetworkChange(in boolean active);
    void onUserMobileDataStateChanged(in boolean enabled);
    void onPhoneCapabilityChanged(in PhoneCapability capability);
    void onRadioPowerStateChanged(in int state);
}
Loading