DefaultPhoneNotifier.java revision 7961ac2c8d2e50d879bc6d5b272b7d972a335c0e
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkCapabilities;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkProperties;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Bundle;
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.RemoteException;
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.ServiceManager;
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.CellInfo;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.ServiceState;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ITelephonyRegistry;
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
30ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport java.util.List;
31ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * broadcast intents
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class DefaultPhoneNotifier implements PhoneNotifier {
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private ITelephonyRegistry mRegistry;
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*package*/
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    DefaultPhoneNotifier() {
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    "telephony.registry"));
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
45cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyPhoneState(Phone sender) {
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call ringingCall = sender.getRingingCall();
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String incomingNumber = "";
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ringingCall != null && ringingCall.getEarliestConnection() != null){
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            incomingNumber = ringingCall.getEarliestConnection().getAddress();
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
537961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
547961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyCallState(convertCallState(sender.getState()), incomingNumber);
557961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
61cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyServiceState(Phone sender) {
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss == null) {
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ss = new ServiceState();
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ss.setStateOutOfService();
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
697961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
707961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyServiceState(ss);
717961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
77cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifySignalStrength(Phone sender) {
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
807961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
817961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifySignalStrength(sender.getSignalStrength());
827961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
88cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyMessageWaitingChanged(Phone sender) {
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
917961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
927961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyMessageWaitingChanged(sender.getMessageWaitingIndicator());
937961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
99cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCallForwardingChanged(Phone sender) {
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1027961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
1037961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyCallForwardingChanged(sender.getCallForwardingIndicator());
1047961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
110cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataActivity(Phone sender) {
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1137961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
1147961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyDataActivity(convertDataActivityState(sender.getDataActivityState()));
1157961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
121cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnection(Phone sender, String reason, String apnType,
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        doNotifyDataConnection(sender, reason, apnType, state);
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void doNotifyDataConnection(Phone sender, String reason, String apnType,
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // TODO
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // use apnType as the key to which connection we're talking about.
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // pass apnType back up to fetch particular for this one.
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        TelephonyManager telephony = TelephonyManager.getDefault();
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkProperties linkProperties = null;
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkCapabilities linkCapabilities = null;
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        boolean roaming = false;
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (state == PhoneConstants.DataState.CONNECTED) {
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkProperties = sender.getLinkProperties(apnType);
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkCapabilities = sender.getLinkCapabilities(apnType);
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss != null) roaming = ss.getRoaming();
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1457961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
1467961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyDataConnection(
1477961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        convertDataState(state),
1487961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        sender.isDataConnectivityPossible(apnType), reason,
1497961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        sender.getActiveApnHost(apnType),
1507961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        apnType,
1517961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        linkProperties,
1527961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        linkCapabilities,
1537961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        ((telephony!=null) ? telephony.getNetworkType() :
1547961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                                TelephonyManager.NETWORK_TYPE_UNKNOWN),
1557961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                        roaming);
1567961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
162cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnectionFailed(Phone sender, String reason, String apnType) {
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1657961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
1667961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyDataConnectionFailed(reason, apnType);
1677961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
173cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCellLocation(Phone sender) {
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Bundle data = new Bundle();
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        sender.getCellLocation().fillInNotifierBundle(data);
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1787961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
1797961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyCellLocation(data);
1807961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
186cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
187ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    public void notifyCellInfo(Phone sender, List<CellInfo> cellInfo) {
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1897961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
1907961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyCellInfo(cellInfo);
1917961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
197cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyOtaspChanged(Phone sender, int otaspMode) {
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
2007961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            if (mRegistry != null) {
2017961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski                mRegistry.notifyOtaspChanged(otaspMode);
2027961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski            }
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
209cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_*
210cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * constants for the public API.
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertCallState(PhoneConstants.State state) {
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case RINGING:
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_RINGING;
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case OFFHOOK:
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_OFFHOOK;
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_IDLE;
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
224cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.CALL_STATE_* constants into the
225cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * {@link PhoneConstants.State} enum for the public API.
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.State convertCallState(int state) {
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_RINGING:
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.RINGING;
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_OFFHOOK:
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.OFFHOOK;
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.IDLE;
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
239cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link PhoneConstants.DataState} enum into the TelephonyManager.DATA_* constants
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataState(PhoneConstants.DataState state) {
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTING:
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTING;
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTED:
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTED;
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case SUSPENDED:
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_SUSPENDED;
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_DISCONNECTED;
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
256cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.DATA_* constants into {@link PhoneConstants.DataState} enum
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.DataState convertDataState(int state) {
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTING:
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTING;
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTED:
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTED;
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_SUSPENDED:
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.SUSPENDED;
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.DISCONNECTED;
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
273cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link Phone.DataActivityState} enum into the TelephonyManager.DATA_* constants
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataActivityState(Phone.DataActivityState state) {
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAIN:
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_IN;
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAOUT:
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_OUT;
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAINANDOUT:
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_INOUT;
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DORMANT:
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_DORMANT;
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_NONE;
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
292cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.DATA_* constants into the {@link Phone.DataActivityState} enum
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static Phone.DataActivityState convertDataActivityState(int state) {
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_IN:
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAIN;
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_OUT:
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAOUT;
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_INOUT:
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAINANDOUT;
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_DORMANT:
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DORMANT;
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.NONE;
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
310