FileDocCategorySizeDatePackage
DefaultPhoneNotifier.javaAPI DocAndroid 5.1 API16977Thu Mar 12 22:22:54 GMT 2015com.android.internal.telephony

DefaultPhoneNotifier

public class DefaultPhoneNotifier extends Object implements PhoneNotifier
broadcast intents

Fields Summary
private static final String
LOG_TAG
private static final boolean
DBG
protected com.android.internal.telephony.ITelephonyRegistry
mRegistry
Constructors Summary
protected DefaultPhoneNotifier()


    /*package*/
      
        mRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
                    "telephony.registry"));
    
Methods Summary
public static intconvertCallState(PhoneConstants.State state)
Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_* constants for the public API.

        switch (state) {
            case RINGING:
                return TelephonyManager.CALL_STATE_RINGING;
            case OFFHOOK:
                return TelephonyManager.CALL_STATE_OFFHOOK;
            default:
                return TelephonyManager.CALL_STATE_IDLE;
        }
    
public static PhoneConstants.StateconvertCallState(int state)
Convert the TelephonyManager.CALL_STATE_* constants into the {@link PhoneConstants.State} enum for the public API.

        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                return PhoneConstants.State.RINGING;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                return PhoneConstants.State.OFFHOOK;
            default:
                return PhoneConstants.State.IDLE;
        }
    
public static intconvertDataActivityState(Phone.DataActivityState state)
Convert the {@link Phone.DataActivityState} enum into the TelephonyManager.DATA_* constants for the public API.

        switch (state) {
            case DATAIN:
                return TelephonyManager.DATA_ACTIVITY_IN;
            case DATAOUT:
                return TelephonyManager.DATA_ACTIVITY_OUT;
            case DATAINANDOUT:
                return TelephonyManager.DATA_ACTIVITY_INOUT;
            case DORMANT:
                return TelephonyManager.DATA_ACTIVITY_DORMANT;
            default:
                return TelephonyManager.DATA_ACTIVITY_NONE;
        }
    
public static Phone.DataActivityStateconvertDataActivityState(int state)
Convert the TelephonyManager.DATA_* constants into the {@link Phone.DataActivityState} enum for the public API.

        switch (state) {
            case TelephonyManager.DATA_ACTIVITY_IN:
                return Phone.DataActivityState.DATAIN;
            case TelephonyManager.DATA_ACTIVITY_OUT:
                return Phone.DataActivityState.DATAOUT;
            case TelephonyManager.DATA_ACTIVITY_INOUT:
                return Phone.DataActivityState.DATAINANDOUT;
            case TelephonyManager.DATA_ACTIVITY_DORMANT:
                return Phone.DataActivityState.DORMANT;
            default:
                return Phone.DataActivityState.NONE;
        }
    
public static intconvertDataState(PhoneConstants.DataState state)
Convert the {@link PhoneConstants.DataState} enum into the TelephonyManager.DATA_* constants for the public API.

        switch (state) {
            case CONNECTING:
                return TelephonyManager.DATA_CONNECTING;
            case CONNECTED:
                return TelephonyManager.DATA_CONNECTED;
            case SUSPENDED:
                return TelephonyManager.DATA_SUSPENDED;
            default:
                return TelephonyManager.DATA_DISCONNECTED;
        }
    
public static PhoneConstants.DataStateconvertDataState(int state)
Convert the TelephonyManager.DATA_* constants into {@link PhoneConstants.DataState} enum for the public API.

        switch (state) {
            case TelephonyManager.DATA_CONNECTING:
                return PhoneConstants.DataState.CONNECTING;
            case TelephonyManager.DATA_CONNECTED:
                return PhoneConstants.DataState.CONNECTED;
            case TelephonyManager.DATA_SUSPENDED:
                return PhoneConstants.DataState.SUSPENDED;
            default:
                return PhoneConstants.DataState.DISCONNECTED;
        }
    
public static intconvertPreciseCallState(Call.State state)
Convert the {@link State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants for the public API.

        switch (state) {
            case ACTIVE:
                return PreciseCallState.PRECISE_CALL_STATE_ACTIVE;
            case HOLDING:
                return PreciseCallState.PRECISE_CALL_STATE_HOLDING;
            case DIALING:
                return PreciseCallState.PRECISE_CALL_STATE_DIALING;
            case ALERTING:
                return PreciseCallState.PRECISE_CALL_STATE_ALERTING;
            case INCOMING:
                return PreciseCallState.PRECISE_CALL_STATE_INCOMING;
            case WAITING:
                return PreciseCallState.PRECISE_CALL_STATE_WAITING;
            case DISCONNECTED:
                return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED;
            case DISCONNECTING:
                return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING;
            default:
                return PreciseCallState.PRECISE_CALL_STATE_IDLE;
        }
    
public static Call.StateconvertPreciseCallState(int state)
Convert the Call.State.* constants into the {@link State} enum for the public API.

        switch (state) {
            case PreciseCallState.PRECISE_CALL_STATE_ACTIVE:
                return Call.State.ACTIVE;
            case PreciseCallState.PRECISE_CALL_STATE_HOLDING:
                return Call.State.HOLDING;
            case PreciseCallState.PRECISE_CALL_STATE_DIALING:
                return Call.State.DIALING;
            case PreciseCallState.PRECISE_CALL_STATE_ALERTING:
                return Call.State.ALERTING;
            case PreciseCallState.PRECISE_CALL_STATE_INCOMING:
                return Call.State.INCOMING;
            case PreciseCallState.PRECISE_CALL_STATE_WAITING:
                return Call.State.WAITING;
            case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED:
                return Call.State.DISCONNECTED;
            case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING:
                return Call.State.DISCONNECTING;
            default:
                return Call.State.IDLE;
        }
    
private voiddoNotifyDataConnection(com.android.internal.telephony.Phone sender, java.lang.String reason, java.lang.String apnType, PhoneConstants.DataState state)

        int subId = sender.getSubId();
        long dds = SubscriptionManager.getDefaultDataSubId();
        if (DBG) log("subId = " + subId + ", DDS = " + dds);

        // TODO
        // use apnType as the key to which connection we're talking about.
        // pass apnType back up to fetch particular for this one.
        TelephonyManager telephony = TelephonyManager.getDefault();
        LinkProperties linkProperties = null;
        NetworkCapabilities networkCapabilities = null;
        boolean roaming = false;

        if (state == PhoneConstants.DataState.CONNECTED) {
            linkProperties = sender.getLinkProperties(apnType);
            networkCapabilities = sender.getNetworkCapabilities(apnType);
        }
        ServiceState ss = sender.getServiceState();
        if (ss != null) roaming = ss.getDataRoaming();

        try {
            if (mRegistry != null) {
                mRegistry.notifyDataConnectionForSubscriber(subId,
                    convertDataState(state),
                    sender.isDataConnectivityPossible(apnType), reason,
                    sender.getActiveApnHost(apnType),
                    apnType,
                    linkProperties,
                    networkCapabilities,
                    ((telephony!=null) ? telephony.getDataNetworkType(subId) :
                    TelephonyManager.NETWORK_TYPE_UNKNOWN),
                    roaming);
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
private voidlog(java.lang.String s)

        Rlog.d(LOG_TAG, s);
    
public voidnotifyCallForwardingChanged(com.android.internal.telephony.Phone sender)

        int subId = sender.getSubId();
        try {
            if (mRegistry != null) {
                mRegistry.notifyCallForwardingChangedForSubscriber(subId,
                        sender.getCallForwardingIndicator());
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyCellInfo(com.android.internal.telephony.Phone sender, java.util.List cellInfo)

        int subId = sender.getSubId();
        try {
            if (mRegistry != null) {
                mRegistry.notifyCellInfoForSubscriber(subId, cellInfo);
            }
        } catch (RemoteException ex) {

        }
    
public voidnotifyCellLocation(com.android.internal.telephony.Phone sender)

        int subId = sender.getSubId();
        Bundle data = new Bundle();
        sender.getCellLocation().fillInNotifierBundle(data);
        try {
            if (mRegistry != null) {
                mRegistry.notifyCellLocationForSubscriber(subId, data);
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyDataActivity(com.android.internal.telephony.Phone sender)

        int subId = sender.getSubId();
        try {
            if (mRegistry != null) {
                mRegistry.notifyDataActivityForSubscriber(subId,
                        convertDataActivityState(sender.getDataActivityState()));
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyDataConnection(com.android.internal.telephony.Phone sender, java.lang.String reason, java.lang.String apnType, PhoneConstants.DataState state)

        doNotifyDataConnection(sender, reason, apnType, state);
    
public voidnotifyDataConnectionFailed(com.android.internal.telephony.Phone sender, java.lang.String reason, java.lang.String apnType)

        int subId = sender.getSubId();
        try {
            if (mRegistry != null) {
                mRegistry.notifyDataConnectionFailedForSubscriber(subId, reason, apnType);
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyDataConnectionRealTimeInfo(com.android.internal.telephony.Phone sender, android.telephony.DataConnectionRealTimeInfo dcRtInfo)

        try {
            mRegistry.notifyDataConnectionRealTimeInfo(dcRtInfo);
        } catch (RemoteException ex) {

        }
    
public voidnotifyDisconnectCause(int cause, int preciseCause)

        // FIXME: subId?
        try {
            mRegistry.notifyDisconnectCause(cause, preciseCause);
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyMessageWaitingChanged(com.android.internal.telephony.Phone sender)

        int phoneId = sender.getPhoneId();
        int subId = sender.getSubId();

        try {
            if (mRegistry != null) {
                mRegistry.notifyMessageWaitingChangedForPhoneId(phoneId, subId,
                        sender.getMessageWaitingIndicator());
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyOemHookRawEventForSubscriber(int subId, byte[] rawData)

        try {
            mRegistry.notifyOemHookRawEventForSubscriber(subId, rawData);
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyOtaspChanged(com.android.internal.telephony.Phone sender, int otaspMode)

        // FIXME: subId?
        try {
            if (mRegistry != null) {
                mRegistry.notifyOtaspChanged(otaspMode);
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyPhoneState(com.android.internal.telephony.Phone sender)

        Call ringingCall = sender.getRingingCall();
        int subId = sender.getSubId();
        String incomingNumber = "";
        if (ringingCall != null && ringingCall.getEarliestConnection() != null){
            incomingNumber = ringingCall.getEarliestConnection().getAddress();
        }
        try {
            if (mRegistry != null) {
                  mRegistry.notifyCallStateForSubscriber(subId,
                        convertCallState(sender.getState()), incomingNumber);
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyPreciseCallState(com.android.internal.telephony.Phone sender)

        // FIXME: subId?
        Call ringingCall = sender.getRingingCall();
        Call foregroundCall = sender.getForegroundCall();
        Call backgroundCall = sender.getBackgroundCall();
        if (ringingCall != null && foregroundCall != null && backgroundCall != null) {
            try {
                mRegistry.notifyPreciseCallState(
                        convertPreciseCallState(ringingCall.getState()),
                        convertPreciseCallState(foregroundCall.getState()),
                        convertPreciseCallState(backgroundCall.getState()));
            } catch (RemoteException ex) {
                // system process is dead
            }
        }
    
public voidnotifyPreciseDataConnectionFailed(com.android.internal.telephony.Phone sender, java.lang.String reason, java.lang.String apnType, java.lang.String apn, java.lang.String failCause)

        // FIXME: subId?
        try {
            mRegistry.notifyPreciseDataConnectionFailed(reason, apnType, apn, failCause);
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyServiceState(com.android.internal.telephony.Phone sender)

        ServiceState ss = sender.getServiceState();
        int phoneId = sender.getPhoneId();
        int subId = sender.getSubId();

        Rlog.d(LOG_TAG, "nofityServiceState: mRegistry=" + mRegistry + " ss=" + ss
                + " sender=" + sender + " phondId=" + phoneId + " subId=" + subId);
        if (ss == null) {
            ss = new ServiceState();
            ss.setStateOutOfService();
        }
        try {
            if (mRegistry != null) {
                mRegistry.notifyServiceStateForPhoneId(phoneId, subId, ss);
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifySignalStrength(com.android.internal.telephony.Phone sender)

        int subId = sender.getSubId();
        Rlog.d(LOG_TAG, "notifySignalStrength: mRegistry=" + mRegistry
                + " ss=" + sender.getSignalStrength() + " sender=" + sender);
        try {
            if (mRegistry != null) {
                mRegistry.notifySignalStrengthForSubscriber(subId, sender.getSignalStrength());
            }
        } catch (RemoteException ex) {
            // system process is dead
        }
    
public voidnotifyVoLteServiceStateChanged(com.android.internal.telephony.Phone sender, android.telephony.VoLteServiceState lteState)

        // FIXME: subID
        try {
            mRegistry.notifyVoLteServiceStateChanged(lteState);
        } catch (RemoteException ex) {
            // system process is dead
        }