DefaultPhoneNotifier.java revision b7b7a62112b79571adf74372c5f5366fd62d0031
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;
270742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuelaimport android.telephony.PreciseCallState;
280742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuelaimport android.telephony.DisconnectCause;
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ITelephonyRegistry;
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
32ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport java.util.List;
33ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * broadcast intents
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class DefaultPhoneNotifier implements PhoneNotifier {
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private ITelephonyRegistry mRegistry;
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*package*/
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    DefaultPhoneNotifier() {
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    "telephony.registry"));
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
47cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyPhoneState(Phone sender) {
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call ringingCall = sender.getRingingCall();
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String incomingNumber = "";
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ringingCall != null && ringingCall.getEarliestConnection() != null){
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            incomingNumber = ringingCall.getEarliestConnection().getAddress();
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCallState(convertCallState(sender.getState()), incomingNumber);
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 {
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyServiceState(ss);
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
75cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifySignalStrength(Phone sender) {
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifySignalStrength(sender.getSignalStrength());
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
84cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyMessageWaitingChanged(Phone sender) {
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyMessageWaitingChanged(sender.getMessageWaitingIndicator());
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
93cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCallForwardingChanged(Phone sender) {
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCallForwardingChanged(sender.getCallForwardingIndicator());
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
102cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataActivity(Phone sender) {
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataActivity(convertDataActivityState(sender.getDataActivityState()));
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
111cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnection(Phone sender, String reason, String apnType,
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        doNotifyDataConnection(sender, reason, apnType, state);
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void doNotifyDataConnection(Phone sender, String reason, String apnType,
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // TODO
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // use apnType as the key to which connection we're talking about.
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // pass apnType back up to fetch particular for this one.
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        TelephonyManager telephony = TelephonyManager.getDefault();
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkProperties linkProperties = null;
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkCapabilities linkCapabilities = null;
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        boolean roaming = false;
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (state == PhoneConstants.DataState.CONNECTED) {
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkProperties = sender.getLinkProperties(apnType);
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkCapabilities = sender.getLinkCapabilities(apnType);
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss != null) roaming = ss.getRoaming();
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataConnection(
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    convertDataState(state),
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    sender.isDataConnectivityPossible(apnType), reason,
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    sender.getActiveApnHost(apnType),
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    apnType,
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    linkProperties,
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    linkCapabilities,
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    ((telephony!=null) ? telephony.getNetworkType() :
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    TelephonyManager.NETWORK_TYPE_UNKNOWN),
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roaming);
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
150cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnectionFailed(Phone sender, String reason, String apnType) {
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataConnectionFailed(reason, apnType);
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
159cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCellLocation(Phone sender) {
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Bundle data = new Bundle();
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        sender.getCellLocation().fillInNotifierBundle(data);
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCellLocation(data);
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
171ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    public void notifyCellInfo(Phone sender, List<CellInfo> cellInfo) {
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCellInfo(cellInfo);
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
179cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyOtaspChanged(Phone sender, int otaspMode) {
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyOtaspChanged(otaspMode);
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1880742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public void notifyPreciseCallState(Phone sender) {
1890742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        Call ringingCall = sender.getRingingCall();
1900742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        Call foregroundCall = sender.getForegroundCall();
1910742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        Call backgroundCall = sender.getBackgroundCall();
1920742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        if (ringingCall != null && foregroundCall != null && backgroundCall != null) {
1930742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            try {
1940742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                mRegistry.notifyPreciseCallState(
1950742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                        convertPreciseCallState(ringingCall.getState()),
1960742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                        convertPreciseCallState(foregroundCall.getState()),
1970742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                        convertPreciseCallState(backgroundCall.getState()));
1980742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            } catch (RemoteException ex) {
1990742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                // system process is dead
2000742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            }
2010742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
2020742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
2030742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
204b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen    public void notifyDisconnectCause(int cause, int preciseCause) {
2050742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        try {
206b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen            mRegistry.notifyDisconnectCause(cause, preciseCause);
2070742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        } catch (RemoteException ex) {
2080742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            // system process is dead
2090742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
2100742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
2110742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
2120742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public void notifyPreciseDataConnectionFailed(Phone sender, String reason, String apnType,
2130742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            String apn, String failCause) {
2140742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        try {
2150742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            mRegistry.notifyPreciseDataConnectionFailed(reason, apnType, apn, failCause);
2160742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        } catch (RemoteException ex) {
2170742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            // system process is dead
2180742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
2190742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
2200742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
222cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_*
223cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * constants for the public API.
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertCallState(PhoneConstants.State state) {
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case RINGING:
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_RINGING;
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case OFFHOOK:
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_OFFHOOK;
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_IDLE;
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
237cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.CALL_STATE_* constants into the
238cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * {@link PhoneConstants.State} enum for the public API.
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.State convertCallState(int state) {
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_RINGING:
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.RINGING;
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_OFFHOOK:
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.OFFHOOK;
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.IDLE;
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
252cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link PhoneConstants.DataState} enum into the TelephonyManager.DATA_* constants
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataState(PhoneConstants.DataState state) {
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTING:
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTING;
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTED:
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTED;
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case SUSPENDED:
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_SUSPENDED;
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_DISCONNECTED;
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
269cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.DATA_* constants into {@link PhoneConstants.DataState} enum
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.DataState convertDataState(int state) {
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTING:
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTING;
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTED:
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTED;
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_SUSPENDED:
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.SUSPENDED;
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.DISCONNECTED;
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
286cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link Phone.DataActivityState} enum into the TelephonyManager.DATA_* constants
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataActivityState(Phone.DataActivityState state) {
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAIN:
2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_IN;
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAOUT:
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_OUT;
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAINANDOUT:
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_INOUT;
2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DORMANT:
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_DORMANT;
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_NONE;
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
305cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.DATA_* constants into the {@link Phone.DataActivityState} enum
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static Phone.DataActivityState convertDataActivityState(int state) {
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_IN:
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAIN;
3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_OUT:
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAOUT;
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_INOUT:
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAINANDOUT;
3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_DORMANT:
3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DORMANT;
3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.NONE;
3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3220742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
3230742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    /**
3240742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * Convert the {@link State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants
3250742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * for the public API.
3260742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     */
3270742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public static int convertPreciseCallState(Call.State state) {
3280742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        switch (state) {
3290742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case ACTIVE:
3300742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_ACTIVE;
3310742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case HOLDING:
3320742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_HOLDING;
3330742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case DIALING:
3340742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_DIALING;
3350742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case ALERTING:
3360742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_ALERTING;
3370742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case INCOMING:
3380742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_INCOMING;
3390742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case WAITING:
3400742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_WAITING;
3410742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case DISCONNECTED:
3420742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED;
3430742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case DISCONNECTING:
3440742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING;
3450742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            default:
3460742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_IDLE;
3470742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
3480742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
3490742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
3500742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    /**
3510742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * Convert the Call.State.* constants into the {@link State} enum
3520742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * for the public API.
3530742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     */
3540742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public static Call.State convertPreciseCallState(int state) {
3550742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        switch (state) {
3560742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_ACTIVE:
3570742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.ACTIVE;
3580742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_HOLDING:
3590742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.HOLDING;
3600742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_DIALING:
3610742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.DIALING;
3620742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_ALERTING:
3630742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.ALERTING;
3640742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_INCOMING:
3650742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.INCOMING;
3660742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_WAITING:
3670742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.WAITING;
3680742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED:
3690742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.DISCONNECTED;
3700742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING:
3710742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.DISCONNECTING;
3720742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            default:
3730742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.IDLE;
3740742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
3750742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
377