• 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 
19 import org.json.JSONException;
20 import org.json.JSONObject;
21 import android.telephony.DataConnectionRealTimeInfo;
22 import android.telephony.PreciseCallState;
23 import android.telephony.ServiceState;
24 import com.googlecode.android_scripting.jsonrpc.JsonSerializable;
25 
26 public class TelephonyEvents {
27 
28     public static class CallStateEvent implements JsonSerializable {
29         private String mCallState;
30         private String mIncomingNumber;
31         private int mSubscriptionId;
32 
CallStateEvent(int state, String incomingNumber, int subscriptionId)33         CallStateEvent(int state, String incomingNumber, int subscriptionId) {
34             mCallState = null;
35             mIncomingNumber = TelephonyUtils.formatIncomingNumber(
36                     incomingNumber);
37             mCallState = TelephonyUtils.getTelephonyCallStateString(
38                     state);
39             mSubscriptionId = subscriptionId;
40         }
41 
getIncomingNumber()42         public String getIncomingNumber() {
43             return mIncomingNumber;
44         }
45 
getSubscriptionId()46         public int getSubscriptionId() {
47             return mSubscriptionId;
48         }
49 
toJSON()50         public JSONObject toJSON() throws JSONException {
51             JSONObject callState = new JSONObject();
52 
53             callState.put(
54                     TelephonyConstants.CallStateContainer.SUBSCRIPTION_ID,
55                     mSubscriptionId);
56             callState.put(
57                     TelephonyConstants.CallStateContainer.INCOMING_NUMBER,
58                     mIncomingNumber);
59             callState.put(TelephonyConstants.CallStateContainer.CALL_STATE,
60                     mCallState);
61 
62             return callState;
63         }
64     }
65 
66     public static class PreciseCallStateEvent implements JsonSerializable {
67         private PreciseCallState mPreciseCallState;
68         private String mPreciseCallStateString;
69         private String mType;
70         private int mCause;
71         private int mSubscriptionId;
72 
PreciseCallStateEvent(int newState, String type, PreciseCallState preciseCallState, int subscriptionId)73         PreciseCallStateEvent(int newState, String type,
74                 PreciseCallState preciseCallState, int subscriptionId) {
75             mPreciseCallStateString = TelephonyUtils.getPreciseCallStateString(
76                     newState);
77             mPreciseCallState = preciseCallState;
78             mType = type;
79             mSubscriptionId = subscriptionId;
80             mCause = preciseCallState.getPreciseDisconnectCause();
81         }
82 
getType()83         public String getType() {
84             return mType;
85         }
86 
getSubscriptionId()87         public int getSubscriptionId() {
88             return mSubscriptionId;
89         }
90 
getPreciseCallState()91         public PreciseCallState getPreciseCallState() {
92             return mPreciseCallState;
93         }
94 
getCause()95         public int getCause() {
96             return mCause;
97         }
98 
toJSON()99         public JSONObject toJSON() throws JSONException {
100             JSONObject preciseCallState = new JSONObject();
101 
102             preciseCallState.put(
103                     TelephonyConstants.PreciseCallStateContainer.SUBSCRIPTION_ID,
104                     mSubscriptionId);
105             preciseCallState.put(
106                     TelephonyConstants.PreciseCallStateContainer.TYPE, mType);
107             preciseCallState.put(
108                     TelephonyConstants.PreciseCallStateContainer.PRECISE_CALL_STATE,
109                     mPreciseCallStateString);
110             preciseCallState.put(
111                     TelephonyConstants.PreciseCallStateContainer.CAUSE, mCause);
112 
113             return preciseCallState;
114         }
115     }
116 
117     public static class DataConnectionRealTimeInfoEvent implements JsonSerializable {
118         private DataConnectionRealTimeInfo mDataConnectionRealTimeInfo;
119         private String mDataConnectionPowerState;
120         private int mSubscriptionId;
121         private long mTime;
122 
DataConnectionRealTimeInfoEvent( DataConnectionRealTimeInfo dataConnectionRealTimeInfo, int subscriptionId)123         DataConnectionRealTimeInfoEvent(
124                 DataConnectionRealTimeInfo dataConnectionRealTimeInfo,
125                 int subscriptionId) {
126             mTime = dataConnectionRealTimeInfo.getTime();
127             mSubscriptionId = subscriptionId;
128             mDataConnectionPowerState = TelephonyUtils.getDcPowerStateString(
129                     dataConnectionRealTimeInfo.getDcPowerState());
130             mDataConnectionRealTimeInfo = dataConnectionRealTimeInfo;
131         }
132 
getSubscriptionId()133         public int getSubscriptionId() {
134             return mSubscriptionId;
135         }
136 
getTime()137         public long getTime() {
138             return mTime;
139         }
140 
toJSON()141         public JSONObject toJSON() throws JSONException {
142             JSONObject dataConnectionRealTimeInfo = new JSONObject();
143 
144             dataConnectionRealTimeInfo.put(
145                     TelephonyConstants.DataConnectionRealTimeInfoContainer.SUBSCRIPTION_ID,
146                     mSubscriptionId);
147             dataConnectionRealTimeInfo.put(
148                     TelephonyConstants.DataConnectionRealTimeInfoContainer.TIME,
149                     mTime);
150             dataConnectionRealTimeInfo.put(
151                     TelephonyConstants.DataConnectionRealTimeInfoContainer.DATA_CONNECTION_POWER_STATE,
152                     mDataConnectionPowerState);
153 
154             return dataConnectionRealTimeInfo;
155         }
156     }
157 
158     public static class DataConnectionStateEvent implements JsonSerializable {
159         private String mDataConnectionState;
160         private int mSubscriptionId;
161         private int mState;
162         private String mDataNetworkType;
163 
DataConnectionStateEvent(int state, String dataNetworkType, int subscriptionId)164         DataConnectionStateEvent(int state, String dataNetworkType,
165                 int subscriptionId) {
166             mSubscriptionId = subscriptionId;
167             mDataConnectionState = TelephonyUtils.getDataConnectionStateString(
168                     state);
169             mDataNetworkType = dataNetworkType;
170             mState = state;
171         }
172 
getSubscriptionId()173         public int getSubscriptionId() {
174             return mSubscriptionId;
175         }
176 
getState()177         public int getState() {
178             return mState;
179         }
180 
getDataNetworkType()181         public String getDataNetworkType() {
182             return mDataNetworkType;
183         }
184 
toJSON()185         public JSONObject toJSON() throws JSONException {
186             JSONObject dataConnectionState = new JSONObject();
187 
188             dataConnectionState.put(
189                     TelephonyConstants.DataConnectionStateContainer.SUBSCRIPTION_ID,
190                     mSubscriptionId);
191             dataConnectionState.put(
192                     TelephonyConstants.DataConnectionStateContainer.DATA_CONNECTION_STATE,
193                     mDataConnectionState);
194             dataConnectionState.put(
195                     TelephonyConstants.DataConnectionStateContainer.DATA_NETWORK_TYPE,
196                     mDataNetworkType);
197             dataConnectionState.put(
198                     TelephonyConstants.DataConnectionStateContainer.STATE_CODE,
199                     mState);
200 
201             return dataConnectionState;
202         }
203     }
204 
205     public static class ServiceStateEvent implements JsonSerializable {
206         private String mServiceStateString;
207         private int mSubscriptionId;
208         private ServiceState mServiceState;
209 
ServiceStateEvent(ServiceState serviceState, int subscriptionId)210         ServiceStateEvent(ServiceState serviceState, int subscriptionId) {
211             mServiceState = serviceState;
212             mSubscriptionId = subscriptionId;
213             mServiceStateString = TelephonyUtils.getNetworkStateString(
214                     serviceState.getState());
215             if (mServiceStateString.equals(
216                     TelephonyConstants.SERVICE_STATE_OUT_OF_SERVICE) &&
217                     serviceState.isEmergencyOnly()) {
218                 mServiceStateString = TelephonyConstants.SERVICE_STATE_EMERGENCY_ONLY;
219             }
220         }
221 
getSubscriptionId()222         public int getSubscriptionId() {
223             return mSubscriptionId;
224         }
225 
getServiceState()226         public ServiceState getServiceState() {
227             return mServiceState;
228         }
229 
toJSON()230         public JSONObject toJSON() throws JSONException {
231             JSONObject serviceState = new JSONObject();
232 
233             serviceState.put(
234                     TelephonyConstants.ServiceStateContainer.SUBSCRIPTION_ID,
235                     mSubscriptionId);
236             serviceState.put(
237                     TelephonyConstants.ServiceStateContainer.VOICE_REG_STATE,
238                     TelephonyUtils.getNetworkStateString(
239                             mServiceState.getVoiceRegState()));
240             serviceState.put(
241                     TelephonyConstants.ServiceStateContainer.VOICE_NETWORK_TYPE,
242                     TelephonyUtils.getNetworkTypeString(
243                             mServiceState.getVoiceNetworkType()));
244             serviceState.put(
245                     TelephonyConstants.ServiceStateContainer.DATA_REG_STATE,
246                     TelephonyUtils.getNetworkStateString(
247                             mServiceState.getDataRegState()));
248             serviceState.put(
249                     TelephonyConstants.ServiceStateContainer.DATA_NETWORK_TYPE,
250                     TelephonyUtils.getNetworkTypeString(
251                             mServiceState.getDataNetworkType()));
252             serviceState.put(
253                     TelephonyConstants.ServiceStateContainer.OPERATOR_NAME,
254                     mServiceState.getOperatorAlphaLong());
255             serviceState.put(
256                     TelephonyConstants.ServiceStateContainer.OPERATOR_ID,
257                     mServiceState.getOperatorNumeric());
258             serviceState.put(
259                     TelephonyConstants.ServiceStateContainer.IS_MANUAL_NW_SELECTION,
260                     mServiceState.getIsManualSelection());
261             serviceState.put(
262                     TelephonyConstants.ServiceStateContainer.ROAMING,
263                     mServiceState.getRoaming());
264             serviceState.put(
265                     TelephonyConstants.ServiceStateContainer.IS_EMERGENCY_ONLY,
266                     mServiceState.isEmergencyOnly());
267             serviceState.put(
268                     TelephonyConstants.ServiceStateContainer.NETWORK_ID,
269                     mServiceState.getNetworkId());
270             serviceState.put(
271                     TelephonyConstants.ServiceStateContainer.SYSTEM_ID,
272                     mServiceState.getSystemId());
273             serviceState.put(
274                     TelephonyConstants.ServiceStateContainer.SERVICE_STATE,
275                     mServiceStateString);
276 
277             return serviceState;
278         }
279     }
280 
281     public static class MessageWaitingIndicatorEvent implements JsonSerializable {
282         private boolean mMessageWaitingIndicator;
283 
MessageWaitingIndicatorEvent(boolean messageWaitingIndicator)284         MessageWaitingIndicatorEvent(boolean messageWaitingIndicator) {
285             mMessageWaitingIndicator = messageWaitingIndicator;
286         }
287 
getMessageWaitingIndicator()288         public boolean getMessageWaitingIndicator() {
289             return mMessageWaitingIndicator;
290         }
291 
toJSON()292         public JSONObject toJSON() throws JSONException {
293             JSONObject messageWaitingIndicator = new JSONObject();
294 
295             messageWaitingIndicator.put(
296                     TelephonyConstants.MessageWaitingIndicatorContainer.IS_MESSAGE_WAITING,
297                     mMessageWaitingIndicator);
298 
299             return messageWaitingIndicator;
300         }
301     }
302 }
303