ITelephony.aidl revision 0dde2c20a07770bc2f1b21e49222c968f3d8b39a
1/*
2 * Copyright (C) 2007 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
17package com.android.internal.telephony;
18
19import android.os.Bundle;
20import java.util.List;
21import android.telephony.NeighboringCellInfo;
22import android.telephony.CellInfo;
23
24/**
25 * Interface used to interact with the phone.  Mostly this is used by the
26 * TelephonyManager class.  A few places are still using this directly.
27 * Please clean them up if possible and use TelephonyManager insteadl.
28 *
29 * {@hide}
30 */
31interface ITelephony {
32
33    /**
34     * Dial a number. This doesn't place the call. It displays
35     * the Dialer screen.
36     * @param number the number to be dialed. If null, this
37     * would display the Dialer screen with no number pre-filled.
38     */
39    void dial(String number);
40
41    /**
42     * Place a call to the specified number.
43     * @param number the number to be called.
44     */
45    void call(String number);
46
47    /**
48     * If there is currently a call in progress, show the call screen.
49     * The DTMF dialpad may or may not be visible initially, depending on
50     * whether it was up when the user last exited the InCallScreen.
51     *
52     * @return true if the call screen was shown.
53     */
54    boolean showCallScreen();
55
56    /**
57     * Variation of showCallScreen() that also specifies whether the
58     * DTMF dialpad should be initially visible when the InCallScreen
59     * comes up.
60     *
61     * @param showDialpad if true, make the dialpad visible initially,
62     *                    otherwise hide the dialpad initially.
63     * @return true if the call screen was shown.
64     *
65     * @see showCallScreen
66     */
67    boolean showCallScreenWithDialpad(boolean showDialpad);
68
69    /**
70     * End call if there is a call in progress, otherwise does nothing.
71     *
72     * @return whether it hung up
73     */
74    boolean endCall();
75
76    /**
77     * Answer the currently-ringing call.
78     *
79     * If there's already a current active call, that call will be
80     * automatically put on hold.  If both lines are currently in use, the
81     * current active call will be ended.
82     *
83     * TODO: provide a flag to let the caller specify what policy to use
84     * if both lines are in use.  (The current behavior is hardwired to
85     * "answer incoming, end ongoing", which is how the CALL button
86     * is specced to behave.)
87     *
88     * TODO: this should be a oneway call (especially since it's called
89     * directly from the key queue thread).
90     */
91    void answerRingingCall();
92
93    /**
94     * Silence the ringer if an incoming call is currently ringing.
95     * (If vibrating, stop the vibrator also.)
96     *
97     * It's safe to call this if the ringer has already been silenced, or
98     * even if there's no incoming call.  (If so, this method will do nothing.)
99     *
100     * TODO: this should be a oneway call too (see above).
101     *       (Actually *all* the methods here that return void can
102     *       probably be oneway.)
103     */
104    void silenceRinger();
105
106    /**
107     * Check if we are in either an active or holding call
108     * @return true if the phone state is OFFHOOK.
109     */
110    boolean isOffhook();
111
112    /**
113     * Check if an incoming phone call is ringing or call waiting.
114     * @return true if the phone state is RINGING.
115     */
116    boolean isRinging();
117
118    /**
119     * Check if the phone is idle.
120     * @return true if the phone state is IDLE.
121     */
122    boolean isIdle();
123
124    /**
125     * Check to see if the radio is on or not.
126     * @return returns true if the radio is on.
127     */
128    boolean isRadioOn();
129
130    /**
131     * Check if the SIM pin lock is enabled.
132     * @return true if the SIM pin lock is enabled.
133     */
134    boolean isSimPinEnabled();
135
136    /**
137     * Cancels the missed calls notification.
138     */
139    void cancelMissedCallsNotification();
140
141    /**
142     * Supply a pin to unlock the SIM.  Blocks until a result is determined.
143     * @param pin The pin to check.
144     * @return whether the operation was a success.
145     */
146    boolean supplyPin(String pin);
147
148    /**
149     * Supply puk to unlock the SIM and set SIM pin to new pin.
150     *  Blocks until a result is determined.
151     * @param puk The puk to check.
152     *        pin The new pin to be set in SIM
153     * @return whether the operation was a success.
154     */
155    boolean supplyPuk(String puk, String pin);
156
157    /**
158     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
159     * without SEND (so <code>dial</code> is not appropriate).
160     *
161     * @param dialString the MMI command to be executed.
162     * @return true if MMI command is executed.
163     */
164    boolean handlePinMmi(String dialString);
165
166    /**
167     * Toggles the radio on or off.
168     */
169    void toggleRadioOnOff();
170
171    /**
172     * Set the radio to on or off
173     */
174    boolean setRadio(boolean turnOn);
175
176    /**
177     * Request to update location information in service state
178     */
179    void updateServiceLocation();
180
181    /**
182     * Enable location update notifications.
183     */
184    void enableLocationUpdates();
185
186    /**
187     * Disable location update notifications.
188     */
189    void disableLocationUpdates();
190
191    /**
192     * Enable a specific APN type.
193     */
194    int enableApnType(String type);
195
196    /**
197     * Disable a specific APN type.
198     */
199    int disableApnType(String type);
200
201    /**
202     * Allow mobile data connections.
203     */
204    boolean enableDataConnectivity();
205
206    /**
207     * Disallow mobile data connections.
208     */
209    boolean disableDataConnectivity();
210
211    /**
212     * Report whether data connectivity is possible.
213     */
214    boolean isDataConnectivityPossible();
215
216    Bundle getCellLocation();
217
218    /**
219     * Returns the neighboring cell information of the device.
220     */
221    List<NeighboringCellInfo> getNeighboringCellInfo();
222
223     int getCallState();
224     int getDataActivity();
225     int getDataState();
226
227    /**
228     * Returns the current active phone type as integer.
229     * Returns TelephonyManager.PHONE_TYPE_CDMA if RILConstants.CDMA_PHONE
230     * and TelephonyManager.PHONE_TYPE_GSM if RILConstants.GSM_PHONE
231     */
232    int getActivePhoneType();
233
234    /**
235     * Returns the CDMA ERI icon index to display
236     */
237    int getCdmaEriIconIndex();
238
239    /**
240     * Returns the CDMA ERI icon mode,
241     * 0 - ON
242     * 1 - FLASHING
243     */
244    int getCdmaEriIconMode();
245
246    /**
247     * Returns the CDMA ERI text,
248     */
249    String getCdmaEriText();
250
251    /**
252     * Returns true if OTA service provisioning needs to run.
253     * Only relevant on some technologies, others will always
254     * return false.
255     */
256    boolean needsOtaServiceProvisioning();
257
258    /**
259      * Returns the unread count of voicemails
260      */
261    int getVoiceMessageCount();
262
263    /**
264      * Returns the network type for data transmission
265      */
266    int getNetworkType();
267
268    /**
269      * Returns the network type for data transmission
270      */
271    int getDataNetworkType();
272
273    /**
274      * Returns the network type for voice
275      */
276    int getVoiceNetworkType();
277
278    /**
279     * Return true if an ICC card is present
280     */
281    boolean hasIccCard();
282
283    /**
284     * Return if the current radio is LTE on CDMA. This
285     * is a tri-state return value as for a period of time
286     * the mode may be unknown.
287     *
288     * @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE}
289     * or {@link PHone#LTE_ON_CDMA_TRUE}
290     */
291    int getLteOnCdmaMode();
292
293    /**
294     * Returns the all observed cell information of the device.
295     */
296    List<CellInfo> getAllCellInfo();
297}
298
299