• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.googlecode.android_scripting.facade.telephony;
18 import com.android.ims.ImsConfig;
19 import com.android.internal.telephony.RILConstants;
20 import com.googlecode.android_scripting.Log;
21 import android.telecom.TelecomManager;
22 import android.telephony.DataConnectionRealTimeInfo;
23 import android.telephony.PreciseCallState;
24 import android.telephony.ServiceState;
25 import android.telephony.TelephonyManager;
26 import android.telephony.VoLteServiceState;
27 
28 /**
29  * Telephony utility functions
30  */
31 public class TelephonyUtils {
32 
getWfcModeString(int mode)33     public static String getWfcModeString(int mode) {
34        switch(mode) {
35            case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
36                return TelephonyConstants.WFC_MODE_WIFI_PREFERRED;
37            case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
38                return TelephonyConstants.WFC_MODE_CELLULAR_PREFERRED;
39            case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
40                return TelephonyConstants.WFC_MODE_WIFI_ONLY;
41        }
42         Log.d("getWfcModeStringfromInt error. int: " + mode);
43         return TelephonyConstants.WFC_MODE_UNKNOWN;
44     }
45 
getTtyModeString(int mode)46     public static String getTtyModeString(int mode) {
47         switch (mode) {
48             case TelecomManager.TTY_MODE_FULL:
49                 return TelephonyConstants.TTY_MODE_FULL;
50             case TelecomManager.TTY_MODE_HCO:
51                 return TelephonyConstants.TTY_MODE_HCO;
52             case TelecomManager.TTY_MODE_OFF:
53                 return TelephonyConstants.TTY_MODE_OFF;
54             case TelecomManager.TTY_MODE_VCO:
55                 return TelephonyConstants.TTY_MODE_VCO;
56         }
57         Log.d("getTtyModeString error. int: " + mode);
58         return null;
59     }
60 
getPhoneTypeString(int type)61     public static String getPhoneTypeString(int type) {
62         switch (type) {
63             case TelephonyManager.PHONE_TYPE_GSM:
64                 return TelephonyConstants.PHONE_TYPE_GSM;
65             case TelephonyManager.PHONE_TYPE_NONE:
66                 return TelephonyConstants.PHONE_TYPE_NONE;
67             case TelephonyManager.PHONE_TYPE_CDMA:
68                 return TelephonyConstants.PHONE_TYPE_CDMA;
69             case TelephonyManager.PHONE_TYPE_SIP:
70                 return TelephonyConstants.PHONE_TYPE_SIP;
71         }
72         Log.d("getPhoneTypeString error. int: " + type);
73         return null;
74     }
75 
getSimStateString(int state)76     public static String getSimStateString(int state) {
77         switch (state) {
78             case TelephonyManager.SIM_STATE_UNKNOWN:
79                 return TelephonyConstants.SIM_STATE_UNKNOWN;
80             case TelephonyManager.SIM_STATE_ABSENT:
81                 return TelephonyConstants.SIM_STATE_ABSENT;
82             case TelephonyManager.SIM_STATE_PIN_REQUIRED:
83                 return TelephonyConstants.SIM_STATE_PIN_REQUIRED;
84             case TelephonyManager.SIM_STATE_PUK_REQUIRED:
85                 return TelephonyConstants.SIM_STATE_PUK_REQUIRED;
86             case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
87                 return TelephonyConstants.SIM_STATE_NETWORK_LOCKED;
88             case TelephonyManager.SIM_STATE_READY:
89                 return TelephonyConstants.SIM_STATE_READY;
90             case TelephonyManager.SIM_STATE_NOT_READY:
91                 return TelephonyConstants.SIM_STATE_NOT_READY;
92             case TelephonyManager.SIM_STATE_PERM_DISABLED:
93                 return TelephonyConstants.SIM_STATE_PERM_DISABLED;
94             case TelephonyManager.SIM_STATE_CARD_IO_ERROR:
95                 return TelephonyConstants.SIM_STATE_CARD_IO_ERROR;
96         }
97         Log.d("getSimStateString error. int: " + state);
98         return TelephonyConstants.SIM_STATE_UNKNOWN;
99     }
100 
formatIncomingNumber(String incomingNumber)101     public static String formatIncomingNumber(String incomingNumber) {
102         String mIncomingNumber = null;
103         int len = 0;
104         if (incomingNumber != null) {
105             len = incomingNumber.length();
106         }
107         if (len > 0) {
108             /**
109              * Currently this incomingNumber modification is specific for
110              * US numbers.
111              */
112             if ((12 == len) && ('+' == incomingNumber.charAt(0))) {
113                 mIncomingNumber = incomingNumber.substring(1);
114             } else if (10 == len) {
115                 mIncomingNumber = '1' + incomingNumber;
116             } else {
117                 mIncomingNumber = incomingNumber;
118             }
119         }
120         return mIncomingNumber;
121     }
122 
getTelephonyCallStateString(int callState)123     public static String getTelephonyCallStateString(int callState) {
124         switch (callState) {
125             case TelephonyManager.CALL_STATE_IDLE:
126                 return TelephonyConstants.TELEPHONY_STATE_IDLE;
127             case TelephonyManager.CALL_STATE_OFFHOOK:
128                 return TelephonyConstants.TELEPHONY_STATE_OFFHOOK;
129             case TelephonyManager.CALL_STATE_RINGING:
130                 return TelephonyConstants.TELEPHONY_STATE_RINGING;
131         }
132         Log.d("getTelephonyCallStateString error. int: " + callState);
133         return TelephonyConstants.TELEPHONY_STATE_UNKNOWN;
134     }
135 
getPreciseCallStateString(int state)136     public static String getPreciseCallStateString(int state) {
137         switch (state) {
138             case PreciseCallState.PRECISE_CALL_STATE_ACTIVE:
139                 return TelephonyConstants.PRECISE_CALL_STATE_ACTIVE;
140             case PreciseCallState.PRECISE_CALL_STATE_HOLDING:
141                 return TelephonyConstants.PRECISE_CALL_STATE_HOLDING;
142             case PreciseCallState.PRECISE_CALL_STATE_DIALING:
143                 return TelephonyConstants.PRECISE_CALL_STATE_DIALING;
144             case PreciseCallState.PRECISE_CALL_STATE_ALERTING:
145                 return TelephonyConstants.PRECISE_CALL_STATE_ALERTING;
146             case PreciseCallState.PRECISE_CALL_STATE_INCOMING:
147                 return TelephonyConstants.PRECISE_CALL_STATE_INCOMING;
148             case PreciseCallState.PRECISE_CALL_STATE_WAITING:
149                 return TelephonyConstants.PRECISE_CALL_STATE_WAITING;
150             case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED:
151                 return TelephonyConstants.PRECISE_CALL_STATE_DISCONNECTED;
152             case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING:
153                 return TelephonyConstants.PRECISE_CALL_STATE_DISCONNECTING;
154             case PreciseCallState.PRECISE_CALL_STATE_IDLE:
155                 return TelephonyConstants.PRECISE_CALL_STATE_IDLE;
156             case PreciseCallState.PRECISE_CALL_STATE_NOT_VALID:
157                 return TelephonyConstants.PRECISE_CALL_STATE_INVALID;
158         }
159         Log.d("getPreciseCallStateString error. int: " + state);
160         return TelephonyConstants.PRECISE_CALL_STATE_UNKNOWN;
161     }
162 
getDcPowerStateString(int state)163     public static String getDcPowerStateString(int state) {
164         if (state == DataConnectionRealTimeInfo.DC_POWER_STATE_LOW) {
165             return TelephonyConstants.DC_POWER_STATE_LOW;
166         } else if (state == DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH) {
167             return TelephonyConstants.DC_POWER_STATE_HIGH;
168         } else if (state == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM) {
169             return TelephonyConstants.DC_POWER_STATE_MEDIUM;
170         } else {
171             return TelephonyConstants.DC_POWER_STATE_UNKNOWN;
172         }
173     }
174 
getDataConnectionStateString(int state)175     public static String getDataConnectionStateString(int state) {
176         switch (state) {
177             case TelephonyManager.DATA_DISCONNECTED:
178                 return TelephonyConstants.DATA_STATE_DISCONNECTED;
179             case TelephonyManager.DATA_CONNECTING:
180                 return TelephonyConstants.DATA_STATE_CONNECTING;
181             case TelephonyManager.DATA_CONNECTED:
182                 return TelephonyConstants.DATA_STATE_CONNECTED;
183             case TelephonyManager.DATA_SUSPENDED:
184                 return TelephonyConstants.DATA_STATE_SUSPENDED;
185             case TelephonyManager.DATA_UNKNOWN:
186                 return TelephonyConstants.DATA_STATE_UNKNOWN;
187         }
188         Log.d("getDataConnectionStateString error. int: " + state);
189         return TelephonyConstants.DATA_STATE_UNKNOWN;
190     }
191 
getNetworkModeIntfromString(String networkMode)192     public static int getNetworkModeIntfromString(String networkMode) {
193         switch (networkMode) {
194             case TelephonyConstants.NETWORK_MODE_WCDMA_PREF:
195                 return RILConstants.NETWORK_MODE_WCDMA_PREF;
196             case TelephonyConstants.NETWORK_MODE_GSM_ONLY:
197                 return RILConstants.NETWORK_MODE_GSM_ONLY;
198             case TelephonyConstants.NETWORK_MODE_WCDMA_ONLY:
199                 return RILConstants.NETWORK_MODE_WCDMA_ONLY;
200             case TelephonyConstants.NETWORK_MODE_GSM_UMTS:
201                 return RILConstants.NETWORK_MODE_GSM_UMTS;
202             case TelephonyConstants.NETWORK_MODE_CDMA:
203                 return RILConstants.NETWORK_MODE_CDMA;
204             case TelephonyConstants.NETWORK_MODE_CDMA_NO_EVDO:
205                 return RILConstants.NETWORK_MODE_CDMA_NO_EVDO;
206             case TelephonyConstants.NETWORK_MODE_EVDO_NO_CDMA:
207                 return RILConstants.NETWORK_MODE_EVDO_NO_CDMA;
208             case TelephonyConstants.NETWORK_MODE_GLOBAL:
209                 return RILConstants.NETWORK_MODE_GLOBAL;
210             case TelephonyConstants.NETWORK_MODE_LTE_CDMA_EVDO:
211                 return RILConstants.NETWORK_MODE_LTE_CDMA_EVDO;
212             case TelephonyConstants.NETWORK_MODE_LTE_GSM_WCDMA:
213                 return RILConstants.NETWORK_MODE_LTE_GSM_WCDMA;
214             case TelephonyConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
215                 return RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
216             case TelephonyConstants.NETWORK_MODE_LTE_ONLY:
217                 return RILConstants.NETWORK_MODE_LTE_ONLY;
218             case TelephonyConstants.NETWORK_MODE_LTE_WCDMA:
219                 return RILConstants.NETWORK_MODE_LTE_WCDMA;
220             case TelephonyConstants.NETWORK_MODE_TDSCDMA_ONLY:
221                 return RILConstants.NETWORK_MODE_TDSCDMA_ONLY;
222             case TelephonyConstants.NETWORK_MODE_TDSCDMA_WCDMA:
223                 return RILConstants.NETWORK_MODE_TDSCDMA_WCDMA;
224             case TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA:
225                 return RILConstants.NETWORK_MODE_LTE_TDSCDMA;
226             case TelephonyConstants.NETWORK_MODE_TDSCDMA_GSM:
227                 return RILConstants.NETWORK_MODE_TDSCDMA_GSM;
228             case TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
229                 return RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
230             case TelephonyConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
231                 return RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA;
232             case TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
233                 return RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
234             case TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
235                 return RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
236             case TelephonyConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
237                 return RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
238             case TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
239                 return RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
240         }
241         Log.d("getNetworkModeIntfromString error. String: " + networkMode);
242         return RILConstants.RIL_ERRNO_INVALID_RESPONSE;
243     }
244 
getNetworkModeStringfromInt(int networkMode)245     public static String getNetworkModeStringfromInt(int networkMode) {
246         switch (networkMode) {
247             case RILConstants.NETWORK_MODE_WCDMA_PREF:
248                 return TelephonyConstants.NETWORK_MODE_WCDMA_PREF;
249             case RILConstants.NETWORK_MODE_GSM_ONLY:
250                 return TelephonyConstants.NETWORK_MODE_GSM_ONLY;
251             case RILConstants.NETWORK_MODE_WCDMA_ONLY:
252                 return TelephonyConstants.NETWORK_MODE_WCDMA_ONLY;
253             case RILConstants.NETWORK_MODE_GSM_UMTS:
254                 return TelephonyConstants.NETWORK_MODE_GSM_UMTS;
255             case RILConstants.NETWORK_MODE_CDMA:
256                 return TelephonyConstants.NETWORK_MODE_CDMA;
257             case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
258                 return TelephonyConstants.NETWORK_MODE_CDMA_NO_EVDO;
259             case RILConstants.NETWORK_MODE_EVDO_NO_CDMA:
260                 return TelephonyConstants.NETWORK_MODE_EVDO_NO_CDMA;
261             case RILConstants.NETWORK_MODE_GLOBAL:
262                 return TelephonyConstants.NETWORK_MODE_GLOBAL;
263             case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO:
264                 return TelephonyConstants.NETWORK_MODE_LTE_CDMA_EVDO;
265             case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA:
266                 return TelephonyConstants.NETWORK_MODE_LTE_GSM_WCDMA;
267             case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
268                 return TelephonyConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
269             case RILConstants.NETWORK_MODE_LTE_ONLY:
270                 return TelephonyConstants.NETWORK_MODE_LTE_ONLY;
271             case RILConstants.NETWORK_MODE_LTE_WCDMA:
272                 return TelephonyConstants.NETWORK_MODE_LTE_WCDMA;
273             case RILConstants.NETWORK_MODE_TDSCDMA_ONLY:
274                 return TelephonyConstants.NETWORK_MODE_TDSCDMA_ONLY;
275             case RILConstants.NETWORK_MODE_TDSCDMA_WCDMA:
276                 return TelephonyConstants.NETWORK_MODE_TDSCDMA_WCDMA;
277             case RILConstants.NETWORK_MODE_LTE_TDSCDMA:
278                 return TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA;
279             case RILConstants.NETWORK_MODE_TDSCDMA_GSM:
280                 return TelephonyConstants.NETWORK_MODE_TDSCDMA_GSM;
281             case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
282                 return TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_GSM;
283             case RILConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
284                 return TelephonyConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA;
285             case RILConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
286                 return TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA;
287             case RILConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
288                 return TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA;
289             case RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
290                 return TelephonyConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
291             case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
292                 return TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
293         }
294         Log.d("getNetworkModeStringfromInt error. Int: " + networkMode);
295         return TelephonyConstants.NETWORK_MODE_INVALID;
296     }
297 
getNetworkTypeString(int type)298     public static String getNetworkTypeString(int type) {
299         switch(type) {
300             case TelephonyManager.NETWORK_TYPE_GPRS:
301                 return TelephonyConstants.RAT_GPRS;
302             case TelephonyManager.NETWORK_TYPE_EDGE:
303                 return TelephonyConstants.RAT_EDGE;
304             case TelephonyManager.NETWORK_TYPE_UMTS:
305                 return TelephonyConstants.RAT_UMTS;
306             case TelephonyManager.NETWORK_TYPE_HSDPA:
307                 return TelephonyConstants.RAT_HSDPA;
308             case TelephonyManager.NETWORK_TYPE_HSUPA:
309                 return TelephonyConstants.RAT_HSUPA;
310             case TelephonyManager.NETWORK_TYPE_HSPA:
311                 return TelephonyConstants.RAT_HSPA;
312             case TelephonyManager.NETWORK_TYPE_CDMA:
313                 return TelephonyConstants.RAT_CDMA;
314             case TelephonyManager.NETWORK_TYPE_1xRTT:
315                 return TelephonyConstants.RAT_1XRTT;
316             case TelephonyManager.NETWORK_TYPE_EVDO_0:
317                 return TelephonyConstants.RAT_EVDO_0;
318             case TelephonyManager.NETWORK_TYPE_EVDO_A:
319                 return TelephonyConstants.RAT_EVDO_A;
320             case TelephonyManager.NETWORK_TYPE_EVDO_B:
321                 return TelephonyConstants.RAT_EVDO_B;
322             case TelephonyManager.NETWORK_TYPE_EHRPD:
323                 return TelephonyConstants.RAT_EHRPD;
324             case TelephonyManager.NETWORK_TYPE_LTE:
325                 return TelephonyConstants.RAT_LTE;
326             case TelephonyManager.NETWORK_TYPE_HSPAP:
327                 return TelephonyConstants.RAT_HSPAP;
328             case TelephonyManager.NETWORK_TYPE_GSM:
329                 return TelephonyConstants.RAT_GSM;
330             case TelephonyManager. NETWORK_TYPE_TD_SCDMA:
331                 return TelephonyConstants.RAT_TD_SCDMA;
332             case TelephonyManager.NETWORK_TYPE_IWLAN:
333                 return TelephonyConstants.RAT_IWLAN;
334             case TelephonyManager.NETWORK_TYPE_IDEN:
335                 return TelephonyConstants.RAT_IDEN;
336             case TelephonyManager.NETWORK_TYPE_LTE_CA:
337                 return TelephonyConstants.RAT_LTE_CA;
338         }
339         return TelephonyConstants.RAT_UNKNOWN;
340     }
341 
getNetworkStateString(int state)342     public static String getNetworkStateString(int state) {
343         switch(state) {
344             case ServiceState.STATE_EMERGENCY_ONLY:
345                 return TelephonyConstants.SERVICE_STATE_EMERGENCY_ONLY;
346             case ServiceState.STATE_IN_SERVICE:
347                 return TelephonyConstants.SERVICE_STATE_IN_SERVICE;
348             case ServiceState.STATE_OUT_OF_SERVICE:
349                 return TelephonyConstants.SERVICE_STATE_OUT_OF_SERVICE;
350             case ServiceState.STATE_POWER_OFF:
351                 return TelephonyConstants.SERVICE_STATE_POWER_OFF;
352             default:
353                 return TelephonyConstants.SERVICE_STATE_UNKNOWN;
354         }
355    }
356 
getSrvccStateString(int srvccState)357     public static String getSrvccStateString(int srvccState) {
358         switch (srvccState) {
359             case VoLteServiceState.HANDOVER_STARTED:
360                 return TelephonyConstants.VOLTE_SERVICE_STATE_HANDOVER_STARTED;
361             case VoLteServiceState.HANDOVER_COMPLETED:
362                 return TelephonyConstants.VOLTE_SERVICE_STATE_HANDOVER_COMPLETED;
363             case VoLteServiceState.HANDOVER_FAILED:
364                 return TelephonyConstants.VOLTE_SERVICE_STATE_HANDOVER_FAILED;
365             case VoLteServiceState.HANDOVER_CANCELED:
366                 return TelephonyConstants.VOLTE_SERVICE_STATE_HANDOVER_CANCELED;
367             default:
368                 Log.e(String.format("getSrvccStateString():"
369                         + "unknown state %d", srvccState));
370                 return TelephonyConstants.VOLTE_SERVICE_STATE_HANDOVER_UNKNOWN;
371         }
372     };
373 }
374