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