Phone.java revision 4df2423a947bcd3f024cc3d3a1a315a8dc428598
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;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.telephony.CellLocation;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.telephony.ServiceState;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.gsm.NetworkInfo;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.gsm.PdpConnection;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.test.SimulatedRadioControl;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Internal interface used to control the phone; SDK developers cannot
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * obtain this interface.
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide}
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface Phone {
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** used to enable additional debug messages */
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final boolean DEBUG_PHONE = true;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The phone state. One of the following:<p>
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <ul>
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>IDLE = no phone activity</li>
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>RINGING = a phone call is ringing or call waiting.
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  In the latter case, another call is active as well</li>
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>OFFHOOK = The phone is off hook. At least one call
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * exists that is dialing, active or holding and no calls are
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ringing or waiting.</li>
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </ul>
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum State {
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IDLE, RINGING, OFFHOOK;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The state of a data connection.
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <ul>
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>CONNECTED = IP traffic should be available</li>
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>CONNECTING = Currently setting up data connection</li>
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>DISCONNECTED = IP not available</li>
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>SUSPENDED = connection is created but IP traffic is
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                 temperately not available. i.e. voice call is in place
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                 in 2G network</li>
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </ul>
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum DataState {
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        CONNECTED, CONNECTING, DISCONNECTED, SUSPENDED;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum DataActivityState {
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        /**
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * The state of a data activity.
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <ul>
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>NONE = No traffic</li>
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>DATAIN = Receiving IP ppp traffic</li>
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>DATAOUT = Sending IP ppp traffic</li>
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * <li>DATAINANDOUT = Both receiving and sending IP ppp traffic</li>
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         * </ul>
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project         */
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        NONE, DATAIN, DATAOUT, DATAINANDOUT;
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    enum SuppService {
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      UNKNOWN, SWITCH, SEPARATE, TRANSFER, CONFERENCE, REJECT, HANGUP;
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String STATE_KEY = "state";
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String PHONE_NAME_KEY = "phoneName";
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String FAILURE_REASON_KEY = "reason";
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String STATE_CHANGE_REASON_KEY = "reason";
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String DATA_APN_TYPE_KEY = "apnType";
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String DATA_APN_KEY = "apn";
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String DATA_IFACE_NAME_KEY = "iface";
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String NETWORK_UNAVAILABLE_KEY = "networkUnvailable";
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN types for data connections.  These are usage categories for an APN
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * entry.  One APN entry may support multiple APN types, eg, a single APN
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may service regular internet traffic ("default") as well as MMS-specific
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connections.<br/>
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN_TYPE_ALL is a special type to indicate that this APN entry can
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * service all data connections.
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String APN_TYPE_ALL = "*";
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** APN type for default data traffic */
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String APN_TYPE_DEFAULT = "default";
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** APN type for MMS traffic */
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String APN_TYPE_MMS = "mms";
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // "Features" accessible through the connectivity manager
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String FEATURE_ENABLE_MMS = "enableMMS";
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Return codes for <code>enableApnType()</code>
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_ALREADY_ACTIVE     = 0;
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_REQUEST_STARTED    = 1;
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_TYPE_NOT_AVAILABLE = 2;
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int APN_REQUEST_FAILED     = 3;
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Optional reasons for disconnect and connect
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_ROAMING_ON = "roamingOn";
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_ROAMING_OFF = "roamingOff";
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_DATA_DISABLED = "dataDisabled";
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_DATA_ENABLED = "dataEnabled";
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_GPRS_ATTACHED = "gprsAttached";
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_GPRS_DETACHED = "gprsDetached";
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_APN_CHANGED = "apnChanged";
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_APN_SWITCHED = "apnSwitched";
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_RESTORE_DEFAULT_APN = "restoreDefaultApn";
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_RADIO_TURNED_OFF = "radioTurnedOff";
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_PDP_RESET = "pdpReset";
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_VOICE_CALL_ENDED = "2GVoiceCallEnded";
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String REASON_VOICE_CALL_STARTED = "2GVoiceCallStarted";
1414df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    static final String REASON_PS_RESTRICT_ENABLED = "psRestrictEnabled";
1424df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    static final String REASON_PS_RESTRICT_DISABLED = "psRestrictDisabled";
1434df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project
1444df2423a947bcd3f024cc3d3a1a315a8dc428598The Android Open Source Project    // Used for band mode selection methods
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_UNSPECIFIED = 0; // selected by baseband automatically
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_EURO_BAND   = 1; // GSM-900 / DCS-1800 / WCDMA-IMT-2000
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_US_BAND     = 2; // GSM-850 / PCS-1900 / WCDMA-850 / WCDMA-PCS-1900
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_JPN_BAND    = 3; // WCDMA-800 / WCDMA-IMT-2000
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_AUS_BAND    = 4; // GSM-900 / DCS-1800 / WCDMA-850 / WCDMA-IMT-2000
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_AUS2_BAND   = 5; // GSM-900 / DCS-1800 / WCDMA-850
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BM_BOUNDARY    = 6; // upper band boundary
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Used for preferred network type
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int NT_AUTO_TYPE  = 0;  //   WCDMA preferred (auto mode)
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int NT_GSM_TYPE   = 1;  //   GSM only
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int NT_WCDMA_TYPE = 2;  //   WCDMA only
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current ServiceState. Use
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>registerForServiceStateChanged</code> to be informed of
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * updates.
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    ServiceState getServiceState();
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current CellLocation.
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    CellLocation getCellLocation();
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current DataState. No change notification exists at this
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * interface -- use
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link com.android.internal.telephony.PhoneStateIntentReceiver PhoneStateIntentReceiver} instead.
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DataState getDataConnectionState();
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current DataActivityState. No change notification exists at this
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * interface -- use
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link TelephonyManager} instead.
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    DataActivityState getDataActivityState();
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the context for the phone, as set at initialization time.
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Context getContext();
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get current coarse-grained voice call state.
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use {@link #registerForPhoneStateChanged(Handler, int, Object)
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registerForPhoneStateChanged()} for change notification. <p>
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If the phone has an active call and call waiting occurs,
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * then the phone state is RINGING not OFFHOOK
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>Note:</strong>
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This registration point provides notification of finer-grained
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * changes.<p>
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    State getState();
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string identifier for this phone interface for parties
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  outside the phone app process.
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  @return The string name.
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getPhoneName();
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns an array of string identifiers for the APN types serviced by the
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * currently active or last connected APN.
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  @return The string array.
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String[] getActiveApnTypes();
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a string identifier for currently active or last connected APN.
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  @return The string name.
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getActiveApn();
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get current signal strength. No change notification available on this
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * interface. Use <code>PhoneStateNotifier</code> or an equivalent.
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * An ASU is 0-31 or -1 if unknown (for GSM, dBm = -113 - 2 * asu).
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The following special values are defined:</p>
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <ul><li>0 means "-113 dBm or less".</li>
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li>31 means "-51 dBm or greater".</li></ul>
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return Current signal strength in ASU's.
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int getSignalStrengthASU();
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when a previously untracked non-ringing/waiting connection has appeared.
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is likely due to some other entity (eg, SIM card application) initiating a call.
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForUnknownConnection(Handler h, int what, Object obj);
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for unknown connection notifications.
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForUnknownConnection(Handler h);
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when any aspect of the voice call state changes.
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Resulting events will have an AsyncResult in <code>Message.obj</code>.
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * AsyncResult.userData will be set to the obj argument here.
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The <em>h</em> parameter is held only by a weak reference.
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForPhoneStateChanged(Handler h, int what, Object obj);
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for voice call state change notifications.
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently.
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForPhoneStateChanged(Handler h);
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when a new ringing or waiting connection has appeared.<p>
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Messages received from this:
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Message.obj will be an AsyncResult
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.userObj = obj
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.result = a Connection. <p>
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Please check Connection.isRinging() to make sure the Connection
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  has not dropped since this message was posted.
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  If Connection.isRinging() is true, then
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *   Connection.getCall() == Phone.getRingingCall()
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForNewRingingConnection(Handler h, int what, Object obj);
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for new ringing connection notification.
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForNewRingingConnection(Handler h);
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when an incoming call rings.<p>
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Messages received from this:
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Message.obj will be an AsyncResult
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.userObj = obj
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  AsyncResult.result = a Connection. <p>
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForIncomingRing(Handler h, int what, Object obj);
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for ring notification.
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForIncomingRing(Handler h);
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Notifies when a voice connection has disconnected, either due to local
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or remote hangup or error.
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Messages received from this will have the following members:<p>
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <ul><li>Message.obj will be an AsyncResult</li>
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <li>AsyncResult.userObj = obj</li>
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  <li>AsyncResult.result = a Connection object that is
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  no longer connected.</li></ul>
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForDisconnect(Handler h, int what, Object obj);
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for voice disconnection notification.
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForDisconnect(Handler h);
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for notifications of initiation of a new MMI code request.
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * MMI codes for GSM are discussed in 3GPP TS 22.030.<p>
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Example: If Phone.dial is called with "*#31#", then the app will
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be notified here.<p>
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The returned <code>Message.obj</code> will contain an AsyncResult.
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>obj.result</code> will be an "MmiCode" object.
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForMmiInitiate(Handler h, int what, Object obj);
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for new MMI initiate notification.
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForMmiInitiate(Handler h);
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for notifications that an MMI request has completed
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * its network activity and is in its final state. This may mean a state
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of COMPLETE, FAILED, or CANCELLED.
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>Message.obj</code> will contain an AsyncResult.
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>obj.result</code> will be an "MmiCode" object
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForMmiComplete(Handler h, int what, Object obj);
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for MMI complete notification.
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForMmiComplete(Handler h);
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns a list of MMI codes that are pending. (They have initiated
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * but have not yet completed).
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Presently there is only ever one.
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Use <code>registerForMmiInitiate</code>
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and <code>registerForMmiComplete</code> for change notification.
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public List<? extends MmiCode> getPendingMmiCodes();
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sends user response to a USSD REQUEST message.  An MmiCode instance
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * representing this response is sent to handlers registered with
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registerForMmiInitiate.
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ussdMessge    Message to send in the response.
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void sendUssdResponse(String ussdMessge);
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for ServiceState changed.
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.obj will contain an AsyncResult.
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * AsyncResult.result will be a ServiceState instance
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForServiceStateChanged(Handler h, int what, Object obj);
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for ServiceStateChange notification.
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForServiceStateChanged(Handler h);
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for Supplementary Service notifications from the network.
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.obj will contain an AsyncResult.
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * AsyncResult.result will be a SuppServiceNotification instance.
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler that receives the notification message.
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param what User-defined message code.
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param obj User object.
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForSuppServiceNotification(Handler h, int what, Object obj);
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregisters for Supplementary Service notifications.
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler to be removed from the registrant list.
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForSuppServiceNotification(Handler h);
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Register for notifications when a supplementary service attempt fails.
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.obj will contain an AsyncResult.
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler that receives the notification message.
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param what User-defined message code.
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param obj User object.
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void registerForSuppServiceFailed(Handler h, int what, Object obj);
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Unregister for notifications when a supplementary service attempt fails.
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Extraneous calls are tolerated silently
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param h Handler to be removed from the registrant list.
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void unregisterForSuppServiceFailed(Handler h);
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns SIM record load state. Use
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>getSimCard().registerForReady()</code> for change notification.
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if records from the SIM have been loaded and are
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available (if applicable). If not applicable to the underlying
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * technology, returns true as well.
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getSimRecordsLoaded();
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the SIM card interface for this phone, or null
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if not applicable to underlying technology.
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    SimCard getSimCard();
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Answers a ringing or waiting call. Active calls, if any, go on hold.
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Answering occurs asynchronously, and final notification occurs via
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException when no call is ringing or waiting
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void acceptCall() throws CallStateException;
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Reject (ignore) a ringing call. In GSM, this means UDUB
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (User Determined User Busy). Reject occurs asynchronously,
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and final notification occurs via
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException when no call is ringing or waiting
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void rejectCall() throws CallStateException;
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Places any active calls on hold, and makes any held calls
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  active. Switch occurs asynchronously and may fail.
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Final notification occurs via
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if a call is ringing, waiting, or
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * dialing/alerting. In these cases, this operation may not be performed.
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void switchHoldingAndActive() throws CallStateException;
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Whether or not the phone can conference in the current phone
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * state--that is, one call holding and one call active.
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the phone can conference; false otherwise.
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean canConference();
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Conferences holding and active. Conference occurs asynchronously
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and may fail. Final notification occurs via
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if canConference() would return false.
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * In these cases, this operation may not be performed.
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void conference() throws CallStateException;
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Whether or not the phone can do explicit call transfer in the current
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * phone state--that is, one call holding and one call active.
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the phone can do explicit call transfer; false otherwise.
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean canTransfer();
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connects the two calls and disconnects the subscriber from both calls
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Explicit Call Transfer occurs asynchronously
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and may fail. Final notification occurs via
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if canTransfer() would return false.
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * In these cases, this operation may not be performed.
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void explicitCallTransfer() throws CallStateException;
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Clears all DISCONNECTED connections from Call connection lists.
5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Calls that were in the DISCONNECTED state become idle. This occurs
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * synchronously.
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void clearDisconnected();
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the foreground call object, which represents all connections that
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are dialing or active (all connections
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * that have their audio path connected).<p>
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The foreground call is a singleton object. It is constant for the life
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this phone. It is never null.<p>
5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The foreground call will only ever be in one of these states:
5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IDLE, ACTIVE, DIALING, ALERTING, or DISCONNECTED.
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * State change notification is available via
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Call getForegroundCall();
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the background call object, which represents all connections that
5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are holding (all connections that have been accepted or connected, but
5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * do not have their audio path connected). <p>
5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The background call is a singleton object. It is constant for the life
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this phone object . It is never null.<p>
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The background call will only ever be in one of these states:
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IDLE, HOLDING or DISCONNECTED.
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * State change notification is available via
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Call getBackgroundCall();
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the ringing call object, which represents an incoming
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * connection (if present) that is pending answer/accept. (This connection
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * may be RINGING or WAITING, and there may be only one.)<p>
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The ringing call is a singleton object. It is constant for the life
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of this phone. It is never null.<p>
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The ringing call will only ever be in one of these states:
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IDLE, INCOMING, WAITING or DISCONNECTED.
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * State change notification is available via
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}.
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Call getRingingCall();
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Initiate a new voice connection. This happens asynchronously, so you
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * cannot assume the audio path is connected (or a call index has been
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * assigned) until PhoneStateChanged notification has occurred.
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @exception CallStateException if a new outgoing call is not currently
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * possible because no more call slots exist or a call exists that is
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * dialing, alerting, ringing, or waiting.  Other errors are
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * handled asynchronously.
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Connection dial(String dialString) throws CallStateException;
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Handles PIN MMI commands (PIN/PIN2/PUK/PUK2), which are initiated
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * without SEND (so <code>dial</code> is not appropriate).
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dialString the MMI command to be executed.
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if MMI command is executed.
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean handlePinMmi(String dialString);
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Handles in-call MMI commands. While in a call, or while receiving a
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * call, use this to execute MMI commands.
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * see 3GPP 20.030, section 6.5.5.1 for specs on the allowed MMI commands.
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param command the MMI command to be executed.
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the MMI command is executed.
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws CallStateException
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean handleInCallMmiCommands(String command) throws CallStateException;
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Play a DTMF tone on the active call. Ignored if there is no active call.
6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param c should be one of 0-9, '*' or '#'. Other values will be
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * silently ignored.
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void sendDtmf(char c);
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Start to paly a DTMF tone on the active call. Ignored if there is no active call
6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or there is a playing DTMF tone.
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param c should be one of 0-9, '*' or '#'. Other values will be
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * silently ignored.
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void startDtmf(char c);
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Stop the playing DTMF tone. Ignored if there is no playing DTMF
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tone or no active call.
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void stopDtmf();
6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the radio power on/off state (off is sometimes
6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * called "airplane mode"). Current state can be gotten via
6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #getServiceState()}.{@link
6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.telephony.ServiceState#getState() getState()}.
6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>Note: </strong>This request is asynchronous.
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getServiceState().getState() will not change immediately after this call.
6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * registerForServiceStateChanged() to find out when the
6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * request is complete.
6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param power true means "on", false means "off".
6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setRadioPower(boolean power);
6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get voice message waiting indicator status. No change notification
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available on this interface. Use PhoneStateNotifier or similar instead.
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if there is a voice message waiting
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getMessageWaitingIndicator();
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get voice call forwarding indicator status. No change notification
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available on this interface. Use PhoneStateNotifier or similar instead.
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if there is a voice call forwarding
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getCallForwardingIndicator();
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the line 1 phone number (MSISDN).<p>
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return phone number. May return null if not
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available or the SIM is not ready
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getLine1Number();
6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the alpha tag associated with the msisdn number.
6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If there is no alpha tag associated or the record is not yet available,
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returns a default localized string. <p>
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getLine1AlphaTag();
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the MSISDN phone number in the SIM card.
6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alphaTag the alpha tag associated with the MSISDN phone number
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        (see getMsisdnAlphaTag)
6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param number the new MSISDN phone number to be set on the SIM.
6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setLine1Number(String alphaTag, String number, Message onComplete);
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the voice mail access phone number. Typically dialed when the
6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * user holds the "1" key in the phone app. May return null if not
6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * available or the SIM is not ready.<p>
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getVoiceMailNumber();
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the alpha tag associated with the voice mail number.
6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If there is no alpha tag associated or the record is not yet available,
6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returns a default localized string. <p>
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Please use this value instead of some other localized string when
6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * showing a name for this number in the UI. For example, call log
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * entries should show this alpha tag. <p>
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Usage of this alpha tag in the UI is a common carrier requirement.
6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getVoiceMailAlphaTag();
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setVoiceMailNumber
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sets the voicemail number in the SIM card.
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param alphaTag the alpha tag associated with the voice mail number
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        (see getVoiceMailAlphaTag)
7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param voiceMailNumber the new voicemail number to be set on the SIM.
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setVoiceMailNumber(String alphaTag,
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            String voiceMailNumber,
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            Message onComplete);
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getCallForwardingOptions
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * gets a call forwarding option. The return value of
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ((AsyncResult)onComplete.obj) is an array of CallForwardInfo.
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param commandInterfaceCFReason is one of the valid call forwarding
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        CF_REASONS, as defined in
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        <code>com.android.internal.telephony.gsm.CommandsInterface</code>
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        @see com.android.internal.telephony.gsm.CallForwardInfo for details.
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getCallForwardingOption(int commandInterfaceCFReason,
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                  Message onComplete);
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setCallForwardingOptions
7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sets a call forwarding option.
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param commandInterfaceCFReason is one of the valid call forwarding
7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        CF_REASONS, as defined in
7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        <code>com.android.internal.telephony.gsm.CommandsInterface</code>
7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param commandInterfaceCFAction is one of the valid call forwarding
7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        CF_ACTIONS, as defined in
7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        <code>com.android.internal.telephony.gsm.CommandsInterface</code>
7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dialingNumber is the target phone number to forward calls to
7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param timerSeconds is used by CFNRy to indicate the timeout before
7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        forwarding is attempted.
7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setCallForwardingOption(int commandInterfaceCFReason,
7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 int commandInterfaceCFAction,
7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 String dialingNumber,
7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 int timerSeconds,
7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                 Message onComplete);
7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getOutgoingCallerIdDisplay
7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * gets outgoing caller id display. The return value of
7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ((AsyncResult)onComplete.obj) is an array of int, with a length of 2.
7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        @see com.android.internal.telephony.gsm.CommandsInterface.getCLIR for details.
7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getOutgoingCallerIdDisplay(Message onComplete);
7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setOutgoingCallerIdDisplay
7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sets a call forwarding option.
7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param commandInterfaceCLIRMode is one of the valid call CLIR
7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        modes, as defined in
7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        <code>com.android.internal.telephony.gsm.CommandsInterface</code>
7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode,
7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                                    Message onComplete);
7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * getCallWaiting
7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * gets call waiting activation state. The return value of
7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * ((AsyncResult)onComplete.obj) is an array of int, with a length of 1.
7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        @see com.android.internal.telephony.gsm.CommandsInterface.queryCallWaiting for details.
7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getCallWaiting(Message onComplete);
7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * setCallWaiting
7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sets a call forwarding option.
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param enable is a boolean representing the state that you are
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        requesting, true for enabled, false for disabled.
7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param onComplete a callback message when the action is completed.
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setCallWaiting(boolean enable, Message onComplete);
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Scan available networks. This method is asynchronous; .
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * On completion, <code>response.obj</code> is set to an AsyncResult with
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * one of the following members:.<p>
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *<ul>
7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li><code>response.obj.result</code> will be a <code>List</code> of
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>com.android.internal.telephony.gsm.NetworkInfo</code> objects, or</li>
7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <li><code>response.obj.exception</code> will be set with an exception
7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on failure.</li>
7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * </ul>
7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getAvailableNetworks(Message response);
7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Switches network selection mode to "automatic", re-scanning and
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * re-selecting a network if appropriate.
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response The message to dispatch when the network selection
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is complete.
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #selectNetworkManually(com.android.internal.telephony.gsm.NetworkInfo,
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * android.os.Message )
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setNetworkSelectionModeAutomatic(Message response);
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Manually selects a network. <code>response</code> is
8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * dispatched when this is complete.  <code>response.obj</code> will be
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * an AsyncResult, and <code>response.obj.exception</code> will be non-null
8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * on failure.
8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #setNetworkSelectionModeAutomatic(Message)
8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void selectNetworkManually(NetworkInfo network,
8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                            Message response);
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Requests to set the preferred network type for searching and registering
8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (CS/PS domain, RAT, and operation mode)
8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param networkType one of  NT_*_TYPE
8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message
8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setPreferredNetworkType(int networkType, Message response);
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *  Query the preferred network type setting
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message to report one of  NT_*_TYPE
8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getPreferredNetworkType(Message response);
8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Query neighboring cell IDs.  <code>response</code> is dispatched when
8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * this is complete.  <code>response.obj</code> will be an AsyncResult,
8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * and <code>response.obj.exception</code> will be non-null on failure.
8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * On success, <code>AsyncResult.result</code> will be a <code>String[]</code>
8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * containing the neighboring cell IDs.  Index 0 will contain the count
8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * of available cell IDs.  Cell IDs are in hexadecimal format.
8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response callback message that is dispatched when the query
8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * completes.
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getNeighboringCids(Message response);
8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets an event to be fired when the telephony system processes
8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a post-dial character on an outgoing call.<p>
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Messages of type <code>what</code> will be sent to <code>h</code>.
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The <code>obj</code> field of these Message's will be instances of
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>AsyncResult</code>. <code>Message.obj.result</code> will be
8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a Connection object.<p>
8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message.arg1 will be the post dial character being processed,
8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or 0 ('\0') if end of string.<p>
8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If Connection.getPostDialState() == WAIT,
8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the application must call
8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link com.android.internal.telephony.Connection#proceedAfterWaitChar()
8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.proceedAfterWaitChar()} or
8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link com.android.internal.telephony.Connection#cancelPostDial()
8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.cancelPostDial()}
8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for the telephony system to continue playing the post-dial
8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * DTMF sequence.<p>
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If Connection.getPostDialState() == WILD,
8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the application must call
8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link com.android.internal.telephony.Connection#proceedAfterWildChar
8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.proceedAfterWildChar()}
8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or
8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link com.android.internal.telephony.Connection#cancelPostDial()
8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Connection.cancelPostDial()}
8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for the telephony system to continue playing the
8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * post-dial DTMF sequence.<p>
8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Only one post dial character handler may be set. <p>
8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Calling this method with "h" equal to null unsets this handler.<p>
8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setOnPostDialCharacter(Handler h, int what, Object obj);
8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Mutes or unmutes the microphone for the active call. The microphone
8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is automatically unmuted if a call is answered, dialed, or resumed
8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * from a holding state.
8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param muted true to mute the microphone,
8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * false to activate the microphone.
8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setMute(boolean muted);
8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets current mute status. Use
8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link #registerForPhoneStateChanged(android.os.Handler, int,
9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * java.lang.Object) registerForPhoneStateChanged()}
9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * as a change notifcation, although presently phone state changed is not
9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * fired when setMute() is called.
9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true is muting, false is unmuting
9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getMute();
9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Invokes RIL_REQUEST_OEM_HOOK_RAW on RIL implementation.
9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param data The data for the request.
9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response <strong>On success</strong>,
9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (byte[])(((AsyncResult)response.obj).result)
9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>On failure</strong>,
9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).result) == null and
9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #invokeOemRilRequestRaw(byte[], android.os.Message)
9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void invokeOemRilRequestRaw(byte[] data, Message response);
9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Invokes RIL_REQUEST_OEM_HOOK_Strings on RIL implementation.
9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param strings The strings to make available as the request data.
9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response <strong>On success</strong>, "response" bytes is
9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * made available as:
9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (String[])(((AsyncResult)response.obj).result).
9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>On failure</strong>,
9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).result) == null and
9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see #invokeOemRilRequestStrings(java.lang.String[], android.os.Message)
9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void invokeOemRilRequestStrings(String[] strings, Message response);
9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get the current active PDP context list
9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response <strong>On success</strong>, "response" bytes is
9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * made available as:
9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (String[])(((AsyncResult)response.obj).result).
9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>On failure</strong>,
9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).result) == null and
9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void getPdpContextList(Message response);
9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get current mutiple PDP link status
9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return list of pdp link connections
9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    List<PdpConnection> getCurrentPdpList ();
9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Udpate LAC and CID in service state for currnet GSM netowrk registration
9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If get different LAC and/or CID, notifyServiceState will be sent
9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param
9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <strong>On failure</strong>,
9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).result) == null and
9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (((AsyncResult)response.obj).exception) being an instance of
9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * com.android.internal.telephony.gsm.CommandException
9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void updateServiceLocation(Message response);
9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Enable location update notifications.
9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void enableLocationUpdates();
9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disable location update notifications.
9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void disableLocationUpdates();
9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * For unit tests; don't send notifications to "Phone"
9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * mailbox registrants if true.
9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setUnitTestMode(boolean f);
9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true If unit test mode is enabled
9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getUnitTestMode();
9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Assign a specified band for RF configuration.
9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param bandMode one of BM_*_BAND
9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message
9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setBandMode(int bandMode, Message response);
10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Query the list of band mode supported by RF.
10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param response is callback message
10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        ((AsyncResult)response.obj).result  is an int[] with every
10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *        element representing one avialable BM_*_BAND
10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void queryAvailableBandMode(Message response);
10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if enable data connection on roaming
10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean getDataRoamingEnabled();
10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param enable set true if enable data connection on roaming
10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setDataRoamingEnabled(boolean enable);
10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * If this is a simulated phone interface, returns a SimulatedRadioControl.
10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @ return A SimulatedRadioControl if this is a simulated interface;
10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * otherwise, null.
10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    SimulatedRadioControl getSimulatedRadioControl();
10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Allow mobile data connections.
10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return {@code true} if the operation started successfully
10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <br/>{@code false} if it
10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * failed immediately.<br/>
10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Even in the {@code true} case, it may still fail later
10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * during setup, in which case an asynchronous indication will
10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be supplied.
10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean enableDataConnectivity();
10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disallow mobile data connections, and terminate any that
10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * are in progress.
10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return {@code true} if the operation started successfully
10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <br/>{@code false} if it
10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * failed immediately.<br/>
10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Even in the {@code true} case, it may still fail later
10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * during setup, in which case an asynchronous indication will
10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be supplied.
10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean disableDataConnectivity();
10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Enables the specified APN type. Only works for "special" APN types,
10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * i.e., not the default APN.
10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param type The desired APN type. Cannot be {@link #APN_TYPE_DEFAULT}.
10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return <code>APN_ALREADY_ACTIVE</code> if the current APN
10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * services the requested type.<br/>
10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_TYPE_NOT_AVAILABLE</code> if the carrier does not
10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * support the requested APN.<br/>
10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_STARTED</code> if the request has been initiated.<br/>
10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_FAILED</code> if the request was invalid.<br/>
10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A <code>ACTION_ANY_DATA_CONNECTION_STATE_CHANGED</code> broadcast will
10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * indicate connection state progress.
10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int enableApnType(String type);
10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disables the specified APN type, and switches back to the default APN,
10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * if necessary. Switching to the default APN will not happen if default
10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * data traffic has been explicitly disabled via a call to {@link #disableDataConnectivity}.
10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <p/>Only works for "special" APN types,
10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * i.e., not the default APN.
10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param type The desired APN type. Cannot be {@link #APN_TYPE_DEFAULT}.
10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return <code>APN_ALREADY_ACTIVE</code> if the default APN
10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * is already active.<br/>
10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_STARTED</code> if the request to switch to the default
10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN has been initiated.<br/>
10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <code>APN_REQUEST_FAILED</code> if the request was invalid.<br/>
10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * A <code>ACTION_ANY_DATA_CONNECTION_STATE_CHANGED</code> broadcast will
10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * indicate connection state progress.
10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int disableApnType(String type);
10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Report on whether data connectivity is allowed.
10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean isDataConnectivityPossible();
10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the name of the network interface used by the specified APN type.
10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getInterfaceName(String apnType);
10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the IP address of the network interface used by the specified
10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN type.
10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getIpAddress(String apnType);
10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the gateway for the network interface used by the specified APN
11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * type.
11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getGateway(String apnType);
11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the DNS servers for the network interface used by the specified
11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * APN type.
11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String[] getDnsServers(String apnType);
11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the unique device ID, e.g., IMEI for GSM phones.
11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getDeviceId();
11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the software version number for the device, e.g., IMEI/SV
11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for GSM phones.
11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getDeviceSvn();
11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the unique sbuscriber ID, e.g., IMSI for GSM phones.
11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getSubscriberId();
11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Retrieves the serial number of the SIM, if applicable.
11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getSimSerialNumber();
11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
1131