Phone.java revision ee748d37b01b3affb72b701d95ba20c189887b5f
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.telephony;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
20767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.content.SharedPreferences;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message;
23767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.preference.PreferenceManager;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.telephony.CellLocation;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.telephony.ServiceState;
26e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Savilleimport android.telephony.SignalStrength;
27767a662ecde33c3979bf02b793d392aca0403162Wink Saville
28767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport com.android.internal.telephony.DataConnection;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.gsm.NetworkInfo;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.gsm.PdpConnection;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.test.SimulatedRadioControl;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Internal interface used to control the phone; SDK developers cannot
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * obtain this interface.
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface Phone {
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** used to enable additional debug messages */
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final boolean DEBUG_PHONE = true;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
47767a662ecde33c3979bf02b793d392aca0403162Wink Saville
48767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The phone state. One of the following:<p>
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <ul>
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>IDLE = no phone activity</li>
52767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <li>RINGING = a phone call is ringing or call waiting.
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  In the latter case, another call is active as well</li>
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>OFFHOOK = The phone is off hook. At least one call
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * exists that is dialing, active or holding and no calls are
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ringing or waiting.</li>
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </ul>
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum State {
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IDLE, RINGING, OFFHOOK;
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The state of a data connection.
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <ul>
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>CONNECTED = IP traffic should be available</li>
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>CONNECTING = Currently setting up data connection</li>
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>DISCONNECTED = IP not available</li>
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>SUSPENDED = connection is created but IP traffic is
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                 temperately not available. i.e. voice call is in place
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                 in 2G network</li>
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </ul>
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum DataState {
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        CONNECTED, CONNECTING, DISCONNECTED, SUSPENDED;
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
78767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public enum DataActivityState {
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The state of a data activity.
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <ul>
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>NONE = No traffic</li>
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>DATAIN = Receiving IP ppp traffic</li>
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>DATAOUT = Sending IP ppp traffic</li>
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>DATAINANDOUT = Both receiving and sending IP ppp traffic</li>
86e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville         * <li>DORMANT = The data connection is still active,
87e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville                                     but physical link is down</li>
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * </ul>
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
90e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville        NONE, DATAIN, DATAOUT, DATAINANDOUT, DORMANT;
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum SuppService {
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      UNKNOWN, SWITCH, SEPARATE, TRANSFER, CONFERENCE, REJECT, HANGUP;
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String STATE_KEY = "state";
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String PHONE_NAME_KEY = "phoneName";
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String FAILURE_REASON_KEY = "reason";
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String STATE_CHANGE_REASON_KEY = "reason";
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String DATA_APN_TYPE_KEY = "apnType";
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String DATA_APN_KEY = "apn";
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String DATA_IFACE_NAME_KEY = "iface";
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String NETWORK_UNAVAILABLE_KEY = "networkUnvailable";
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN types for data connections.  These are usage categories for an APN
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * entry.  One APN entry may support multiple APN types, eg, a single APN
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may service regular internet traffic ("default") as well as MMS-specific
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connections.<br/>
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN_TYPE_ALL is a special type to indicate that this APN entry can
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service all data connections.
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String APN_TYPE_ALL = "*";
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** APN type for default data traffic */
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String APN_TYPE_DEFAULT = "default";
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** APN type for MMS traffic */
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String APN_TYPE_MMS = "mms";
11942ad56ead40f6c5986bd2d298b1d36f42da489a1Mike Lockwood    /** APN type for SUPL assisted GPS */
12042ad56ead40f6c5986bd2d298b1d36f42da489a1Mike Lockwood    static final String APN_TYPE_SUPL = "supl";
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // "Features" accessible through the connectivity manager
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String FEATURE_ENABLE_MMS = "enableMMS";
12442ad56ead40f6c5986bd2d298b1d36f42da489a1Mike Lockwood    static final String FEATURE_ENABLE_SUPL = "enableSUPL";
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return codes for <code>enableApnType()</code>
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_ALREADY_ACTIVE     = 0;
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_REQUEST_STARTED    = 1;
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_TYPE_NOT_AVAILABLE = 2;
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_REQUEST_FAILED     = 3;
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Optional reasons for disconnect and connect
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_ROAMING_ON = "roamingOn";
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_ROAMING_OFF = "roamingOff";
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_DATA_DISABLED = "dataDisabled";
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_DATA_ENABLED = "dataEnabled";
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_GPRS_ATTACHED = "gprsAttached";
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_GPRS_DETACHED = "gprsDetached";
144767a662ecde33c3979bf02b793d392aca0403162Wink Saville    static final String REASON_CDMA_DATA_ATTACHED = "cdmaDataAttached";
145767a662ecde33c3979bf02b793d392aca0403162Wink Saville    static final String REASON_CDMA_DATA_DETACHED = "cdmaDataDetached";
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_APN_CHANGED = "apnChanged";
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_APN_SWITCHED = "apnSwitched";
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_RESTORE_DEFAULT_APN = "restoreDefaultApn";
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_RADIO_TURNED_OFF = "radioTurnedOff";
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_PDP_RESET = "pdpReset";
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_VOICE_CALL_ENDED = "2GVoiceCallEnded";
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_VOICE_CALL_STARTED = "2GVoiceCallStarted";
1534df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    static final String REASON_PS_RESTRICT_ENABLED = "psRestrictEnabled";
1544df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    static final String REASON_PS_RESTRICT_DISABLED = "psRestrictDisabled";
155ba87e3e6c985e7175152993b5efcc7dd2f0e1c93The Android Open Source Project    static final String REASON_SIM_LOADED = "simLoaded";
156e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
1574df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    // Used for band mode selection methods
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_UNSPECIFIED = 0; // selected by baseband automatically
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_EURO_BAND   = 1; // GSM-900 / DCS-1800 / WCDMA-IMT-2000
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_US_BAND     = 2; // GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_JPN_BAND    = 3; // WCDMA-800 / WCDMA-IMT-2000
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_AUS_BAND    = 4; // GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_AUS2_BAND   = 5; // GSM-900 / DCS-1800 / WCDMA-850
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_BOUNDARY    = 6; // upper band boundary
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Used for preferred network type
167767a662ecde33c3979bf02b793d392aca0403162Wink Saville    // Note NT_* substitute RILConstants.NETWORK_MODE_* above the Phone
168ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_WCDMA_PREF   = RILConstants.NETWORK_MODE_WCDMA_PREF;
169ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_GSM_ONLY     = RILConstants.NETWORK_MODE_GSM_ONLY;
170ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_WCDMA_ONLY   = RILConstants.NETWORK_MODE_WCDMA_ONLY;
171ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_GSM_UMTS     = RILConstants.NETWORK_MODE_GSM_UMTS;
172ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh
173ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_CDMA         = RILConstants.NETWORK_MODE_CDMA;
174ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh
175ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_CDMA_NO_EVDO = RILConstants.NETWORK_MODE_CDMA_NO_EVDO;
176ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_EVDO_NO_CDMA = RILConstants.NETWORK_MODE_EVDO_NO_CDMA;
177ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int NT_MODE_GLOBAL       = RILConstants.NETWORK_MODE_GLOBAL;
178ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh
179ee748d37b01b3affb72b701d95ba20c189887b5fJaikumar Ganesh    int PREFERRED_NT_MODE    = RILConstants.PREFERRED_NETWORK_MODE;
180767a662ecde33c3979bf02b793d392aca0403162Wink Saville
181767a662ecde33c3979bf02b793d392aca0403162Wink Saville
182767a662ecde33c3979bf02b793d392aca0403162Wink Saville    // Used for CDMA roaming mode
183e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int CDMA_RM_HOME        = 0;  // Home Networks only, as defined in PRL
184e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int CDMA_RM_AFFILIATED  = 1;  // Roaming an Affiliated networks, as defined in PRL
185e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int CDMA_RM_ANY         = 2;  // Roaming on Any Network, as defined in PRL
186767a662ecde33c3979bf02b793d392aca0403162Wink Saville
187767a662ecde33c3979bf02b793d392aca0403162Wink Saville    // Used for CDMA subscription mode
188e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int CDMA_SUBSCRIPTION_RUIM_SIM = 0; // RUIM/SIM (default)
189e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int CDMA_SUBSCRIPTION_NV       = 1; // NV -> non-volatile memory
190e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
191e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int PREFERRED_CDMA_SUBSCRIPTION = CDMA_SUBSCRIPTION_NV;
192e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
193e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int TTY_MODE_OFF = 0;
194e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int TTY_MODE_FULL = 1;
195e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int TTY_MODE_HCO = 2;
196e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    static final int TTY_MODE_VCO = 3;
197767a662ecde33c3979bf02b793d392aca0403162Wink Saville
198767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
199767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Get the current ServiceState. Use
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>registerForServiceStateChanged</code> to be informed of
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * updates.
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ServiceState getServiceState();
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current CellLocation.
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    CellLocation getCellLocation();
209767a662ecde33c3979bf02b793d392aca0403162Wink Saville
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current DataState. No change notification exists at this
212767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * interface -- use
213767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link com.android.internal.telephony.PhoneStateIntentReceiver PhoneStateIntentReceiver}
214767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * instead.
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DataState getDataConnectionState();
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current DataActivityState. No change notification exists at this
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * interface -- use
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link TelephonyManager} instead.
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DataActivityState getDataActivityState();
224767a662ecde33c3979bf02b793d392aca0403162Wink Saville
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the context for the phone, as set at initialization time.
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Context getContext();
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
230767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
231767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Disables the DNS check (i.e., allows "0.0.0.0").
232767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Useful for lab testing environment.
233767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param b true disables the check, false enables.
234767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
235767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void disableDnsCheck(boolean b);
236767a662ecde33c3979bf02b793d392aca0403162Wink Saville
237767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
238767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Returns true if the DNS check is currently disabled.
239767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
240767a662ecde33c3979bf02b793d392aca0403162Wink Saville    boolean isDnsCheckDisabled();
241767a662ecde33c3979bf02b793d392aca0403162Wink Saville
242767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get current coarse-grained voice call state.
244767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Use {@link #registerForPhoneStateChanged(Handler, int, Object)
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registerForPhoneStateChanged()} for change notification. <p>
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the phone has an active call and call waiting occurs,
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * then the phone state is RINGING not OFFHOOK
248767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <strong>Note:</strong>
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This registration point provides notification of finer-grained
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * changes.<p>
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    State getState();
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
255767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string identifier for this phone interface for parties
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  outside the phone app process.
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  @return The string name.
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getPhoneName();
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
262767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an array of string identifiers for the APN types serviced by the
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * currently active or last connected APN.
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  @return The string array.
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] getActiveApnTypes();
268767a662ecde33c3979bf02b793d392aca0403162Wink Saville
269767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string identifier for currently active or last connected APN.
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  @return The string name.
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getActiveApn();
274767a662ecde33c3979bf02b793d392aca0403162Wink Saville
275767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
276e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Get current signal strength.
277767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
278e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @return Current signal strength as SignalStrength
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
280e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    SignalStrength getSignalStrength();
281767a662ecde33c3979bf02b793d392aca0403162Wink Saville
282767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when a previously untracked non-ringing/waiting connection has appeared.
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is likely due to some other entity (eg, SIM card application) initiating a call.
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForUnknownConnection(Handler h, int what, Object obj);
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for unknown connection notifications.
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForUnknownConnection(Handler h);
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
293767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when any aspect of the voice call state changes.
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Resulting events will have an AsyncResult in <code>Message.obj</code>.
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * AsyncResult.userData will be set to the obj argument here.
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The <em>h</em> parameter is held only by a weak reference.
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForPhoneStateChanged(Handler h, int what, Object obj);
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
302767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for voice call state change notifications.
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently.
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForPhoneStateChanged(Handler h);
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
308767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when a new ringing or waiting connection has appeared.<p>
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Messages received from this:
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Message.obj will be an AsyncResult
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.userObj = obj
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.result = a Connection. <p>
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Please check Connection.isRinging() to make sure the Connection
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  has not dropped since this message was posted.
317767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *  If Connection.isRinging() is true, then
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   Connection.getCall() == Phone.getRingingCall()
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForNewRingingConnection(Handler h, int what, Object obj);
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
323767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for new ringing connection notification.
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForNewRingingConnection(Handler h);
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
329767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when an incoming call rings.<p>
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Messages received from this:
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Message.obj will be an AsyncResult
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.userObj = obj
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.result = a Connection. <p>
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForIncomingRing(Handler h, int what, Object obj);
338767a662ecde33c3979bf02b793d392aca0403162Wink Saville
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
340767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for ring notification.
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
343767a662ecde33c3979bf02b793d392aca0403162Wink Saville
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForIncomingRing(Handler h);
345767a662ecde33c3979bf02b793d392aca0403162Wink Saville
346767a662ecde33c3979bf02b793d392aca0403162Wink Saville
347767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when a voice connection has disconnected, either due to local
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or remote hangup or error.
350767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Messages received from this will have the following members:<p>
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <ul><li>Message.obj will be an AsyncResult</li>
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <li>AsyncResult.userObj = obj</li>
354767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *  <li>AsyncResult.result = a Connection object that is
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  no longer connected.</li></ul>
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForDisconnect(Handler h, int what, Object obj);
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
360767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for voice disconnection notification.
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForDisconnect(Handler h);
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for notifications of initiation of a new MMI code request.
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * MMI codes for GSM are discussed in 3GPP TS 22.030.<p>
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Example: If Phone.dial is called with "*#31#", then the app will
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be notified here.<p>
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The returned <code>Message.obj</code> will contain an AsyncResult.
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>obj.result</code> will be an "MmiCode" object.
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForMmiInitiate(Handler h, int what, Object obj);
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
380767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for new MMI initiate notification.
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForMmiInitiate(Handler h);
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for notifications that an MMI request has completed
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * its network activity and is in its final state. This may mean a state
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of COMPLETE, FAILED, or CANCELLED.
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>Message.obj</code> will contain an AsyncResult.
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>obj.result</code> will be an "MmiCode" object
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForMmiComplete(Handler h, int what, Object obj);
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
396767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for MMI complete notification.
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForMmiComplete(Handler h);
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a list of MMI codes that are pending. (They have initiated
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * but have not yet completed).
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Presently there is only ever one.
405767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Use <code>registerForMmiInitiate</code>
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and <code>registerForMmiComplete</code> for change notification.
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public List<? extends MmiCode> getPendingMmiCodes();
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sends user response to a USSD REQUEST message.  An MmiCode instance
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * representing this response is sent to handlers registered with
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registerForMmiInitiate.
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ussdMessge    Message to send in the response.
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void sendUssdResponse(String ussdMessge);
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
420767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Register for ServiceState changed.
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.obj will contain an AsyncResult.
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * AsyncResult.result will be a ServiceState instance
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForServiceStateChanged(Handler h, int what, Object obj);
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
427767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for ServiceStateChange notification.
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForServiceStateChanged(Handler h);
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for Supplementary Service notifications from the network.
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.obj will contain an AsyncResult.
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * AsyncResult.result will be a SuppServiceNotification instance.
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler that receives the notification message.
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param what User-defined message code.
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param obj User object.
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForSuppServiceNotification(Handler h, int what, Object obj);
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
444767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unregisters for Supplementary Service notifications.
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
446767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler to be removed from the registrant list.
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForSuppServiceNotification(Handler h);
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for notifications when a supplementary service attempt fails.
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.obj will contain an AsyncResult.
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler that receives the notification message.
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param what User-defined message code.
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param obj User object.
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForSuppServiceFailed(Handler h, int what, Object obj);
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister for notifications when a supplementary service attempt fails.
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
464767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler to be removed from the registrant list.
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForSuppServiceFailed(Handler h);
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
470767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Register for notifications when a sInCall VoicePrivacy is enabled
471767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
472767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param h Handler that receives the notification message.
473767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param what User-defined message code.
474767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param obj User object.
475767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
476767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj);
477767a662ecde33c3979bf02b793d392aca0403162Wink Saville
478767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
479767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unegister for notifications when a sInCall VoicePrivacy is enabled
480767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
481767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param h Handler to be removed from the registrant list.
482767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
483767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void unregisterForInCallVoicePrivacyOn(Handler h);
484767a662ecde33c3979bf02b793d392aca0403162Wink Saville
485767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
486767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Register for notifications when a sInCall VoicePrivacy is disabled
487767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
488767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param h Handler that receives the notification message.
489767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param what User-defined message code.
490767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param obj User object.
491767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
492767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj);
493767a662ecde33c3979bf02b793d392aca0403162Wink Saville
494767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
495767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Unegister for notifications when a sInCall VoicePrivacy is disabled
496767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
497767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param h Handler to be removed from the registrant list.
498767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
499767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void unregisterForInCallVoicePrivacyOff(Handler h);
500767a662ecde33c3979bf02b793d392aca0403162Wink Saville
501767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
502e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Register for notifications about information record available
503e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
504e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param h Handler that receives the notification message.
505e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param what User-defined message code.
506e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param obj User object.
507e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
508e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void registerCdmaInformationRecord(Handler h, int what, Object obj);
509e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
510e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
511e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Unregister for notifications about information record available
512e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
513e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param h Handler to be removed from the registrant list.
514e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
515e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void unregisterCdmaInformationRecord(Handler h);
516e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
517e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
518e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Register for the indication of OTA status change
519e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
520e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param h Handler that receives the notification message.
521e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param what User-defined message code.
522e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param obj User object.
523e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
524e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void registerForOtaStatusChange(Handler h, int what, Object obj);
525e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
526e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
527e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Unregister for the indication of OTA status change
528e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
529e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param h Handler to be removed from the registrant list.
530e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
531e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void unregisterForOtaStatusChange(Handler h);
532e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
533e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
534e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Register for the indication of Cdma Call Waiting
535e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
536e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param h Handler that receives the notification message.
537e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param what User-defined message code.
538e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param obj User object.
539e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
540e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void registerForCdmaCallWaiting(Handler h, int what, Object obj);
541e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
542e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
543e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Unregister for the indication of Cdma Call Waiting
544e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
545e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param h Handler to be removed from the registrant list.
546e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
547e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void unregisterForCdmaCallWaiting(Handler h);
548e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
549767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Returns SIM record load state. Use
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>getSimCard().registerForReady()</code> for change notification.
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
552767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @return true if records from the SIM have been loaded and are
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available (if applicable). If not applicable to the underlying
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * technology, returns true as well.
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
556767a662ecde33c3979bf02b793d392aca0403162Wink Saville    boolean getIccRecordsLoaded();
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
559767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Returns the ICC card interface for this phone, or null
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if not applicable to underlying technology.
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
562767a662ecde33c3979bf02b793d392aca0403162Wink Saville    IccCard getIccCard();
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
565767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Answers a ringing or waiting call. Active calls, if any, go on hold.
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Answering occurs asynchronously, and final notification occurs via
567767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException when no call is ringing or waiting
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void acceptCall() throws CallStateException;
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
574767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
575767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Reject (ignore) a ringing call. In GSM, this means UDUB
576767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * (User Determined User Busy). Reject occurs asynchronously,
577767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * and final notification occurs via
578767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException when no call is ringing or waiting
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void rejectCall() throws CallStateException;
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
585767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Places any active calls on hold, and makes any held calls
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  active. Switch occurs asynchronously and may fail.
588767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Final notification occurs via
589767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if a call is ringing, waiting, or
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * dialing/alerting. In these cases, this operation may not be performed.
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void switchHoldingAndActive() throws CallStateException;
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
598767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Whether or not the phone can conference in the current phone
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * state--that is, one call holding and one call active.
600767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @return true if the phone can conference; false otherwise.
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean canConference();
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
605767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Conferences holding and active. Conference occurs asynchronously
606767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * and may fail. Final notification occurs via
607767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
608767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * java.lang.Object) registerForPhoneStateChanged()}.
609767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if canConference() would return false.
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * In these cases, this operation may not be performed.
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void conference() throws CallStateException;
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
616767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Enable or disable enhanced Voice Privacy (VP). If enhanced VP is
617767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * disabled, normal VP is enabled.
618767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
619767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param enable whether true or false to enable or disable.
620767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param onComplete a callback message when the action is completed.
621767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
622767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void enableEnhancedVoicePrivacy(boolean enable, Message onComplete);
623767a662ecde33c3979bf02b793d392aca0403162Wink Saville
624767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
625767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Get the currently set Voice Privacy (VP) mode.
626767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
627767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param onComplete a callback message when the action is completed.
628767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
629767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void getEnhancedVoicePrivacy(Message onComplete);
630767a662ecde33c3979bf02b793d392aca0403162Wink Saville
631767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Whether or not the phone can do explicit call transfer in the current
6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * phone state--that is, one call holding and one call active.
6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the phone can do explicit call transfer; false otherwise.
6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean canTransfer();
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connects the two calls and disconnects the subscriber from both calls
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Explicit Call Transfer occurs asynchronously
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and may fail. Final notification occurs via
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if canTransfer() would return false.
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * In these cases, this operation may not be performed.
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void explicitCallTransfer() throws CallStateException;
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Clears all DISCONNECTED connections from Call connection lists.
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Calls that were in the DISCONNECTED state become idle. This occurs
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * synchronously.
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void clearDisconnected();
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
658767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
659767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Gets the foreground call object, which represents all connections that
660767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * are dialing or active (all connections
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that have their audio path connected).<p>
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The foreground call is a singleton object. It is constant for the life
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this phone. It is never null.<p>
665767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The foreground call will only ever be in one of these states:
667767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * IDLE, ACTIVE, DIALING, ALERTING, or DISCONNECTED.
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * State change notification is available via
670767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Call getForegroundCall();
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
675767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the background call object, which represents all connections that
6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are holding (all connections that have been accepted or connected, but
6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * do not have their audio path connected). <p>
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The background call is a singleton object. It is constant for the life
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this phone object . It is never null.<p>
682767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The background call will only ever be in one of these states:
6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IDLE, HOLDING or DISCONNECTED.
6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * State change notification is available via
687767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Call getBackgroundCall();
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
692767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
693767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Gets the ringing call object, which represents an incoming
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connection (if present) that is pending answer/accept. (This connection
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may be RINGING or WAITING, and there may be only one.)<p>
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The ringing call is a singleton object. It is constant for the life
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this phone. It is never null.<p>
699767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The ringing call will only ever be in one of these states:
7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IDLE, INCOMING, WAITING or DISCONNECTED.
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * State change notification is available via
704767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Call getRingingCall();
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Initiate a new voice connection. This happens asynchronously, so you
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * cannot assume the audio path is connected (or a call index has been
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * assigned) until PhoneStateChanged notification has occurred.
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if a new outgoing call is not currently
715767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * possible because no more call slots exist or a call exists that is
716767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * dialing, alerting, ringing, or waiting.  Other errors are
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * handled asynchronously.
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Connection dial(String dialString) throws CallStateException;
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * without SEND (so <code>dial</code> is not appropriate).
724767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dialString the MMI command to be executed.
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if MMI command is executed.
7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean handlePinMmi(String dialString);
7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Handles in-call MMI commands. While in a call, or while receiving a
7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call, use this to execute MMI commands.
7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * see 3GPP 20.030, section 6.5.5.1 for specs on the allowed MMI commands.
7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param command the MMI command to be executed.
7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the MMI command is executed.
7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws CallStateException
7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean handleInCallMmiCommands(String command) throws CallStateException;
7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
742767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Play a DTMF tone on the active call. Ignored if there is no active call.
7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param c should be one of 0-9, '*' or '#'. Other values will be
7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * silently ignored.
7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void sendDtmf(char c);
7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Start to paly a DTMF tone on the active call. Ignored if there is no active call
7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or there is a playing DTMF tone.
7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param c should be one of 0-9, '*' or '#'. Other values will be
7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * silently ignored.
7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void startDtmf(char c);
7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Stop the playing DTMF tone. Ignored if there is no playing DTMF
7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tone or no active call.
7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void stopDtmf();
7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
762e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
763e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Play a Burst of DTMF tone on the active call. Ignored if there is no active call.
764e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
765e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void sendBurstDtmf(String dtmfString);
7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
768767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Sets the radio power on/off state (off is sometimes
769767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * called "airplane mode"). Current state can be gotten via
770767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #getServiceState()}.{@link
7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.telephony.ServiceState#getState() getState()}.
772767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <strong>Note: </strong>This request is asynchronous.
7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getServiceState().getState() will not change immediately after this call.
774767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * registerForServiceStateChanged() to find out when the
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * request is complete.
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
777767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param power true means "on", false means "off".
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRadioPower(boolean power);
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
781767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get voice message waiting indicator status. No change notification
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available on this interface. Use PhoneStateNotifier or similar instead.
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if there is a voice message waiting
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getMessageWaitingIndicator();
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get voice call forwarding indicator status. No change notification
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available on this interface. Use PhoneStateNotifier or similar instead.
7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if there is a voice call forwarding
7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getCallForwardingIndicator();
7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the line 1 phone number (MSISDN).<p>
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return phone number. May return null if not
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available or the SIM is not ready
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getLine1Number();
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the alpha tag associated with the msisdn number.
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If there is no alpha tag associated or the record is not yet available,
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returns a default localized string. <p>
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getLine1AlphaTag();
8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the MSISDN phone number in the SIM card.
8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alphaTag the alpha tag associated with the MSISDN phone number
8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        (see getMsisdnAlphaTag)
8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param number the new MSISDN phone number to be set on the SIM.
8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setLine1Number(String alphaTag, String number, Message onComplete);
8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
823767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Get the voice mail access phone number. Typically dialed when the
824767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * user holds the "1" key in the phone app. May return null if not
8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available or the SIM is not ready.<p>
8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getVoiceMailNumber();
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the alpha tag associated with the voice mail number.
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If there is no alpha tag associated or the record is not yet available,
8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returns a default localized string. <p>
833767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
834767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Please use this value instead of some other localized string when
8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * showing a name for this number in the UI. For example, call log
8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * entries should show this alpha tag. <p>
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Usage of this alpha tag in the UI is a common carrier requirement.
8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getVoiceMailAlphaTag();
8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setVoiceMailNumber
8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sets the voicemail number in the SIM card.
8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alphaTag the alpha tag associated with the voice mail number
8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        (see getVoiceMailAlphaTag)
8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param voiceMailNumber the new voicemail number to be set on the SIM.
8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setVoiceMailNumber(String alphaTag,
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            String voiceMailNumber,
8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            Message onComplete);
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getCallForwardingOptions
857767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * gets a call forwarding option. The return value of
858767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * ((AsyncResult)onComplete.obj) is an array of CallForwardInfo.
859767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
860767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param commandInterfaceCFReason is one of the valid call forwarding
861767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        CF_REASONS, as defined in
862767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        <code>com.android.internal.telephony.CommandsInterface./code>
8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
864767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        @see com.android.internal.telephony.CallForwardInfo for details.
8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getCallForwardingOption(int commandInterfaceCFReason,
8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                  Message onComplete);
868767a662ecde33c3979bf02b793d392aca0403162Wink Saville
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setCallForwardingOptions
8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sets a call forwarding option.
872767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
873767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param commandInterfaceCFReason is one of the valid call forwarding
874767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        CF_REASONS, as defined in
875767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        <code>com.android.internal.telephony.CommandsInterface./code>
876767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param commandInterfaceCFAction is one of the valid call forwarding
877767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        CF_ACTIONS, as defined in
878767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        <code>com.android.internal.telephony.CommandsInterface./code>
879767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param dialingNumber is the target phone number to forward calls to
8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param timerSeconds is used by CFNRy to indicate the timeout before
8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        forwarding is attempted.
8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setCallForwardingOption(int commandInterfaceCFReason,
8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 int commandInterfaceCFAction,
8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 String dialingNumber,
8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 int timerSeconds,
8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 Message onComplete);
889767a662ecde33c3979bf02b793d392aca0403162Wink Saville
8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getOutgoingCallerIdDisplay
892767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * gets outgoing caller id display. The return value of
8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ((AsyncResult)onComplete.obj) is an array of int, with a length of 2.
894767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
896767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        @see com.android.internal.telephony.CommandsInterface.getCLIR for details.
8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getOutgoingCallerIdDisplay(Message onComplete);
899767a662ecde33c3979bf02b793d392aca0403162Wink Saville
9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setOutgoingCallerIdDisplay
902767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * sets a call forwarding option.
903767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
904767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param commandInterfaceCLIRMode is one of the valid call CLIR
905767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        modes, as defined in
906767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        <code>com.android.internal.telephony.CommandsInterface./code>
9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode,
9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    Message onComplete);
911767a662ecde33c3979bf02b793d392aca0403162Wink Saville
9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getCallWaiting
914767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * gets call waiting activation state. The return value of
9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ((AsyncResult)onComplete.obj) is an array of int, with a length of 1.
916767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
918767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        @see com.android.internal.telephony.CommandsInterface.queryCallWaiting for details.
9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getCallWaiting(Message onComplete);
921767a662ecde33c3979bf02b793d392aca0403162Wink Saville
9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setCallWaiting
924767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * sets a call forwarding option.
925767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
926767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param enable is a boolean representing the state that you are
9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        requesting, true for enabled, false for disabled.
9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setCallWaiting(boolean enable, Message onComplete);
931767a662ecde33c3979bf02b793d392aca0403162Wink Saville
9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Scan available networks. This method is asynchronous; .
9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * On completion, <code>response.obj</code> is set to an AsyncResult with
9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * one of the following members:.<p>
9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *<ul>
937767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <li><code>response.obj.result</code> will be a <code>List</code> of
938767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <code>com.android.internal.telephony.gsm.NetworkInfo</code> objects, or</li>
939767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <li><code>response.obj.exception</code> will be set with an exception
9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on failure.</li>
9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </ul>
9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
943767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void getAvailableNetworks(Message response);
9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Switches network selection mode to "automatic", re-scanning and
9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * re-selecting a network if appropriate.
948767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
949767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response The message to dispatch when the network selection
9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is complete.
951767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
952767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @see #selectNetworkManually(com.android.internal.telephony.gsm.NetworkInfo,
9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Message )
9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setNetworkSelectionModeAutomatic(Message response);
9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
958767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Manually selects a network. <code>response</code> is
9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * dispatched when this is complete.  <code>response.obj</code> will be
9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an AsyncResult, and <code>response.obj.exception</code> will be non-null
9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on failure.
962767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setNetworkSelectionModeAutomatic(Message)
9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
965767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void selectNetworkManually(NetworkInfo network,
9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            Message response);
9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Requests to set the preferred network type for searching and registering
9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (CS/PS domain, RAT, and operation mode)
9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param networkType one of  NT_*_TYPE
9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message
9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setPreferredNetworkType(int networkType, Message response);
9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Query the preferred network type setting
9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message to report one of  NT_*_TYPE
9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getPreferredNetworkType(Message response);
9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
984c06ce125408696fd49c7fa9e1189ecb61804007ajsh     * Gets the default SMSC address.
985c06ce125408696fd49c7fa9e1189ecb61804007ajsh     *
986c06ce125408696fd49c7fa9e1189ecb61804007ajsh     * @param result Callback message contains the SMSC address.
987c06ce125408696fd49c7fa9e1189ecb61804007ajsh     */
988c06ce125408696fd49c7fa9e1189ecb61804007ajsh    void getSmscAddress(Message result);
989c06ce125408696fd49c7fa9e1189ecb61804007ajsh
990c06ce125408696fd49c7fa9e1189ecb61804007ajsh    /**
991c06ce125408696fd49c7fa9e1189ecb61804007ajsh     * Sets the default SMSC address.
992c06ce125408696fd49c7fa9e1189ecb61804007ajsh     *
993c06ce125408696fd49c7fa9e1189ecb61804007ajsh     * @param address new SMSC address
994c06ce125408696fd49c7fa9e1189ecb61804007ajsh     * @param result Callback message is empty on completion
995c06ce125408696fd49c7fa9e1189ecb61804007ajsh     */
996c06ce125408696fd49c7fa9e1189ecb61804007ajsh    void setSmscAddress(String address, Message result);
997c06ce125408696fd49c7fa9e1189ecb61804007ajsh
998c06ce125408696fd49c7fa9e1189ecb61804007ajsh    /**
9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Query neighboring cell IDs.  <code>response</code> is dispatched when
10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this is complete.  <code>response.obj</code> will be an AsyncResult,
10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and <code>response.obj.exception</code> will be non-null on failure.
10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * On success, <code>AsyncResult.result</code> will be a <code>String[]</code>
10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * containing the neighboring cell IDs.  Index 0 will contain the count
10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of available cell IDs.  Cell IDs are in hexadecimal format.
10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response callback message that is dispatched when the query
1007767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * completes.
10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getNeighboringCids(Message response);
10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets an event to be fired when the telephony system processes
10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a post-dial character on an outgoing call.<p>
10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Messages of type <code>what</code> will be sent to <code>h</code>.
10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The <code>obj</code> field of these Message's will be instances of
10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>AsyncResult</code>. <code>Message.obj.result</code> will be
10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a Connection object.<p>
10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1020767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Message.arg1 will be the post dial character being processed,
10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or 0 ('\0') if end of string.<p>
10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1023767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * If Connection.getPostDialState() == WAIT,
1024767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * the application must call
1025767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link com.android.internal.telephony.Connection#proceedAfterWaitChar()
1026767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Connection.proceedAfterWaitChar()} or
1027767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link com.android.internal.telephony.Connection#cancelPostDial()
10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.cancelPostDial()}
1029767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * for the telephony system to continue playing the post-dial
10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * DTMF sequence.<p>
10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1032767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * If Connection.getPostDialState() == WILD,
1033767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * the application must call
10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link com.android.internal.telephony.Connection#proceedAfterWildChar
10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.proceedAfterWildChar()}
1036767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * or
1037767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link com.android.internal.telephony.Connection#cancelPostDial()
10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.cancelPostDial()}
1039767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * for the telephony system to continue playing the
10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * post-dial DTMF sequence.<p>
1041767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Only one post dial character handler may be set. <p>
10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Calling this method with "h" equal to null unsets this handler.<p>
10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setOnPostDialCharacter(Handler h, int what, Object obj);
10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1049767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Mutes or unmutes the microphone for the active call. The microphone
1050767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * is automatically unmuted if a call is answered, dialed, or resumed
10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * from a holding state.
1052767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1053767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param muted true to mute the microphone,
10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * false to activate the microphone.
10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setMute(boolean muted);
10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1060767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Gets current mute status. Use
1061767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}
10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * as a change notifcation, although presently phone state changed is not
10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * fired when setMute() is called.
10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true is muting, false is unmuting
10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getMute();
10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Invokes RIL_REQUEST_OEM_HOOK_RAW on RIL implementation.
1072767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param data The data for the request.
1074767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response <strong>On success</strong>,
10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (byte[])(((AsyncResult)response.obj).result)
1076767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <strong>On failure</strong>,
1077767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * (((AsyncResult)response.obj).result) == null and
10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #invokeOemRilRequestRaw(byte[], android.os.Message)
10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void invokeOemRilRequestRaw(byte[] data, Message response);
10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Invokes RIL_REQUEST_OEM_HOOK_Strings on RIL implementation.
1087767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param strings The strings to make available as the request data.
1089767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response <strong>On success</strong>, "response" bytes is
10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * made available as:
10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (String[])(((AsyncResult)response.obj).result).
1092767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <strong>On failure</strong>,
1093767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * (((AsyncResult)response.obj).result) == null and
10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #invokeOemRilRequestStrings(java.lang.String[], android.os.Message)
10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void invokeOemRilRequestStrings(String[] strings, Message response);
11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current active PDP context list
11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1104767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @deprecated
11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response <strong>On success</strong>, "response" bytes is
11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * made available as:
11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (String[])(((AsyncResult)response.obj).result).
11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>On failure</strong>,
11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).result) == null and
11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getPdpContextList(Message response);
11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1116767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Get the current active Data Call list, substitutes getPdpContextList
1117767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1118767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response <strong>On success</strong>, "response" bytes is
1119767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * made available as:
1120767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * (String[])(((AsyncResult)response.obj).result).
1121767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * <strong>On failure</strong>,
1122767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * (((AsyncResult)response.obj).result) == null and
1123767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * (((AsyncResult)response.obj).exception) being an instance of
1124767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * com.android.internal.telephony.gsm.CommandException
1125767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1126767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void getDataCallList(Message response);
1127767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1128767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get current mutiple PDP link status
1130767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1131767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @deprecated
11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return list of pdp link connections
11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    List<PdpConnection> getCurrentPdpList ();
11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1137767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Get current mutiple data connection status
1138767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1139767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @return list of data connections
1140767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1141767a662ecde33c3979bf02b793d392aca0403162Wink Saville    List<DataConnection> getCurrentDataConnectionList ();
1142767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1143767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Udpate LAC and CID in service state for currnet GSM netowrk registration
11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If get different LAC and/or CID, notifyServiceState will be sent
11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param
11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>On failure</strong>,
11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).result) == null and
11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void updateServiceLocation(Message response);
11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Enable location update notifications.
11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void enableLocationUpdates();
11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disable location update notifications.
11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void disableLocationUpdates();
11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1167767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * For unit tests; don't send notifications to "Phone"
11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * mailbox registrants if true.
11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setUnitTestMode(boolean f);
1171767a662ecde33c3979bf02b793d392aca0403162Wink Saville
11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true If unit test mode is enabled
11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getUnitTestMode();
11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Assign a specified band for RF configuration.
11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param bandMode one of BM_*_BAND
11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message
11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setBandMode(int bandMode, Message response);
11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Query the list of band mode supported by RF.
11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message
11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        ((AsyncResult)response.obj).result  is an int[] with every
11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        element representing one avialable BM_*_BAND
11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void queryAvailableBandMode(Message response);
11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if enable data connection on roaming
11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getDataRoamingEnabled();
11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param enable set true if enable data connection on roaming
12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setDataRoamingEnabled(boolean enable);
12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1205767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *  Query the CDMA roaming preference setting
1206767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1207767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response is callback message to report one of  CDMA_RM_*
1208767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1209767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void queryCdmaRoamingPreference(Message response);
1210767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1211767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1212767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *  Requests to set the CDMA roaming preference
1213767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param cdmaRoamingType one of  CDMA_RM_*
1214767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response is callback message
1215767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1216767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void setCdmaRoamingPreference(int cdmaRoamingType, Message response);
1217767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1218767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1219767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *  Requests to set the CDMA subscription mode
1220767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param cdmaSubscriptionType one of  CDMA_SUBSCRIPTION_*
1221767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response is callback message
1222767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1223767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void setCdmaSubscription(int cdmaSubscriptionType, Message response);
1224767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1225767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If this is a simulated phone interface, returns a SimulatedRadioControl.
1227767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @ return A SimulatedRadioControl if this is a simulated interface;
12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * otherwise, null.
12299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    SimulatedRadioControl getSimulatedRadioControl();
12319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Allow mobile data connections.
12349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return {@code true} if the operation started successfully
12359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <br/>{@code false} if it
12369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * failed immediately.<br/>
12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Even in the {@code true} case, it may still fail later
12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * during setup, in which case an asynchronous indication will
12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be supplied.
12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean enableDataConnectivity();
12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disallow mobile data connections, and terminate any that
12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are in progress.
12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return {@code true} if the operation started successfully
12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <br/>{@code false} if it
12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * failed immediately.<br/>
12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Even in the {@code true} case, it may still fail later
12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * during setup, in which case an asynchronous indication will
12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be supplied.
12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean disableDataConnectivity();
12549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Enables the specified APN type. Only works for "special" APN types,
12579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * i.e., not the default APN.
12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param type The desired APN type. Cannot be {@link #APN_TYPE_DEFAULT}.
12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return <code>APN_ALREADY_ACTIVE</code> if the current APN
12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * services the requested type.<br/>
12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_TYPE_NOT_AVAILABLE</code> if the carrier does not
12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * support the requested APN.<br/>
12639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_STARTED</code> if the request has been initiated.<br/>
12649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_FAILED</code> if the request was invalid.<br/>
12659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A <code>ACTION_ANY_DATA_CONNECTION_STATE_CHANGED</code> broadcast will
12669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * indicate connection state progress.
12679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int enableApnType(String type);
12699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disables the specified APN type, and switches back to the default APN,
12729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if necessary. Switching to the default APN will not happen if default
12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * data traffic has been explicitly disabled via a call to {@link #disableDataConnectivity}.
12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p/>Only works for "special" APN types,
12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * i.e., not the default APN.
12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param type The desired APN type. Cannot be {@link #APN_TYPE_DEFAULT}.
12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return <code>APN_ALREADY_ACTIVE</code> if the default APN
12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is already active.<br/>
12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_STARTED</code> if the request to switch to the default
12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN has been initiated.<br/>
12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_FAILED</code> if the request was invalid.<br/>
12829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A <code>ACTION_ANY_DATA_CONNECTION_STATE_CHANGED</code> broadcast will
12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * indicate connection state progress.
12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int disableApnType(String type);
12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Report on whether data connectivity is allowed.
12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isDataConnectivityPossible();
12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the name of the network interface used by the specified APN type.
12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getInterfaceName(String apnType);
12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the IP address of the network interface used by the specified
12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN type.
13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getIpAddress(String apnType);
13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the gateway for the network interface used by the specified APN
13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * type.
13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getGateway(String apnType);
13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the DNS servers for the network interface used by the specified
13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN type.
13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String[] getDnsServers(String apnType);
13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1316767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves the unique device ID, e.g., IMEI for GSM phones and MEID for CDMA phones.
13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getDeviceId();
13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the software version number for the device, e.g., IMEI/SV
13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for GSM phones.
13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getDeviceSvn();
13259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the unique sbuscriber ID, e.g., IMSI for GSM phones.
13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getSubscriberId();
13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1332767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves the serial number of the ICC, if applicable.
1333767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1334767a662ecde33c3979bf02b793d392aca0403162Wink Saville    String getIccSerialNumber();
1335767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1336767a662ecde33c3979bf02b793d392aca0403162Wink Saville    //***** CDMA support methods
1337767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1338e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
1339e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Retrieves the MIN for CDMA phones.
1340e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
1341e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    String getMin();
1342767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1343767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1344767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves the ESN for CDMA phones.
13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1346767a662ecde33c3979bf02b793d392aca0403162Wink Saville    String getEsn();
1347767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1348767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1349767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves MEID for CDMA phones.
1350767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1351767a662ecde33c3979bf02b793d392aca0403162Wink Saville    String getMeid();
1352767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1353767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1354767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves the PhoneSubInfo of the Phone
1355767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1356767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public PhoneSubInfo getPhoneSubInfo();
1357767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1358767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1359767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves the IccSmsInterfaceManager of the Phone
1360767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1361767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public IccSmsInterfaceManager getIccSmsInterfaceManager();
1362767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1363767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1364767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Retrieves the IccPhoneBookInterfaceManager of the Phone
1365767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1366767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public IccPhoneBookInterfaceManager getIccPhoneBookInterfaceManager();
1367767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1368767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1369e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * setTTYMode
1370767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * sets a TTY mode option.
1371767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1372767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param enable is a boolean representing the state that you are
1373767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *        requesting, true for enabled, false for disabled.
1374767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param onComplete a callback message when the action is completed
1375767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1376e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void setTTYMode(int ttyMode, Message onComplete);
1377767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1378767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1379e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * queryTTYMode
1380767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * query the status of the TTY mode
1381767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1382767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param onComplete a callback message when the action is completed.
1383767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1384e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void queryTTYMode(Message onComplete);
1385e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
1386e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
1387e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * exitEmergencyCallbackMode
1388e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * exits the emergency callback mode
1389e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
1390e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * @param onComplete a callback message when the action is completed.
1391e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
1392e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    void exitEmergencyCallbackMode(Message onComplete);
1393767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1394767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1395767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Activate or deactivate cell broadcast SMS.
1396767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1397767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param activate
1398767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *            0 = activate, 1 = deactivate
1399767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response
1400767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *            Callback message is empty on completion
1401767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1402767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void activateCellBroadcastSms(int activate, Message response);
1403767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1404767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1405767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Query the current configuration of cdma cell broadcast SMS.
1406767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1407767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response
1408767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *            Callback message is empty on completion
1409767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1410767a662ecde33c3979bf02b793d392aca0403162Wink Saville    void getCellBroadcastSmsConfig(Message response);
1411767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1412767a662ecde33c3979bf02b793d392aca0403162Wink Saville    /**
1413767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * Configure cell broadcast SMS.
1414767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *
1415e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig
1416e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     *
1417767a662ecde33c3979bf02b793d392aca0403162Wink Saville     * @param response
1418767a662ecde33c3979bf02b793d392aca0403162Wink Saville     *            Callback message is empty on completion
1419767a662ecde33c3979bf02b793d392aca0403162Wink Saville     */
1420767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public void setCellBroadcastSmsConfig(int[] configValuesArray, Message response);
1421767a662ecde33c3979bf02b793d392aca0403162Wink Saville
1422767a662ecde33c3979bf02b793d392aca0403162Wink Saville    public void notifyDataActivity();
1423e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
1424e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
1425e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the CDMA ERI icon index to display
1426e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
1427e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getCdmaEriIconIndex();
1428e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
1429e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
1430e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the CDMA ERI icon mode,
1431e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * 0 - ON
1432e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * 1 - FLASHING
1433e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
1434e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public int getCdmaEriIconMode();
1435e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
1436e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    /**
1437e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     * Returns the CDMA ERI text,
1438e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville     */
1439e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville    public String getCdmaEriText();
1440e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville
14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
1442