ServiceState.java revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 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 android.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.Phone; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Contains phone state and service related information. 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The following phone information is included in returned ServiceState: 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <ul> 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Service state: IN_SERVICE, OUT_OF_SERVICE, EMERGENCY_ONLY, POWER_OFF 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Roaming indicator 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Operator name, short name and numeric id 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <li>Network selection mode 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * </ul> 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ServiceState implements Parcelable { 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Normal operation condition, the phone is registered 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with an operator either in home network or in roaming. 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_IN_SERVICE = 0; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Phone is not registered with any operator, the phone 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can be currently searching a new operator to register to, or not 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * searching to registration at all, or registration is denied, or radio 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * signal is not available. 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_OUT_OF_SERVICE = 1; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The phone is registered and locked. Only emergency numbers are allowed. {@more} 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_EMERGENCY_ONLY = 2; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Radio of telephony is explictly powered off. 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int STATE_POWER_OFF = 3; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mState = STATE_OUT_OF_SERVICE; 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mRoaming; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorAlphaLong; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorAlphaShort; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private String mOperatorNumeric; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mIsManualNetworkSelection; 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new ServiceState from a intent notifier Bundle 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This method is used by PhoneStateIntentReceiver and maybe by 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * external applications. 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m Bundle from intent notifier 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return newly created ServiceState 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static ServiceState newFromBundle(Bundle m) { 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceState ret; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret = new ServiceState(); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ret.setFromNotifierBundle(m); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ret; 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Empty constructor 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState() { 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copy constructors 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param s Source service state 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState(ServiceState s) { 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project copyFrom(s); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void copyFrom(ServiceState s) { 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = s.mState; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = s.mRoaming; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = s.mOperatorAlphaLong; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = s.mOperatorAlphaShort; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = s.mOperatorNumeric; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = s.mIsManualNetworkSelection; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Construct a ServiceState object from the given parcel. 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState(Parcel in) { 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = in.readInt(); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = in.readInt() != 0; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = in.readString(); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = in.readString(); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = in.readString(); 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = in.readInt() != 0; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mState); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mRoaming ? 1 : 0); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorAlphaLong); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorAlphaShort); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeString(mOperatorNumeric); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project out.writeInt(mIsManualNetworkSelection ? 1 : 0); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<ServiceState> CREATOR = new Parcelable.Creator() { 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState createFromParcel(Parcel in) { 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceState(in); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceState[] newArray(int size) { 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ServiceState[size]; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current servcie state of phone 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_IN_SERVICE 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_OUT_OF_SERVICE 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_EMERGENCY_ONLY 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #STATE_POWER_OFF 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getState() { 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mState; 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current roaming indicator of phone 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * (note: not just decoding from TS 27.007 7.2) 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if TS 27.007 7.2 roaming is true 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and ONS is different from SPN 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getRoaming() { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRoaming; 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current registered operator name in long alphanumeric format 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMTS, long format can be upto 16 characters long 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return long name of operator, null if unregistered or unknown 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorAlphaLong() { 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorAlphaLong; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current registered operator name in short lphanumeric format 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMST, short format can be upto 8 characters long 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return short name of operator, null if unregistered or unknown 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorAlphaShort() { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorAlphaShort; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current registered operator numeric id 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * In GSM/UMTS, numeric format is 3 digit country code plus 2 or 3 digit 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * network code 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The country code can be decoded using MccTable.countryCodeForMcc() 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return numeric format of operator, null if unregistered or unknown 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getOperatorNumeric() { 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mOperatorNumeric; 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get current network selection mode 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if manual mode, false if automatic mode 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getIsManualSelection() { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mIsManualNetworkSelection; 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int hashCode() { 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (mState * 0x1234) 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (mRoaming ? 1 : 0) 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + (mIsManualNetworkSelection ? 1 : 0) 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorAlphaLong) ? 0 : mOperatorAlphaLong.hashCode()) 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorAlphaShort) ? 0 : mOperatorAlphaShort.hashCode()) 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ((null == mOperatorNumeric) ? 0 : mOperatorNumeric.hashCode()); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean equals (Object o) { 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceState s; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s = (ServiceState) o; 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (ClassCastException ex) { 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (o == null) { 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mState == s.mState 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mRoaming == s.mRoaming 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && mIsManualNetworkSelection == s.mIsManualNetworkSelection 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorAlphaLong, s.mOperatorAlphaLong) 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorAlphaShort, s.mOperatorAlphaShort) 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project && equalsHandlesNulls(mOperatorNumeric, s.mOperatorNumeric); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mState + " " + (mRoaming ? "roaming" : "home") 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorAlphaLong 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorAlphaShort 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + mOperatorNumeric 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + (mIsManualNetworkSelection ? "(manual)" : ""); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setStateOutOfService() { 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = STATE_OUT_OF_SERVICE; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = false; 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = null; 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = null; 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = null; 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = false; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setStateOff() { 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = STATE_POWER_OFF; 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = false; 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = null; 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = null; 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = null; 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = false; 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setState(int state) { 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = state; 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setRoaming(boolean roaming) { 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = roaming; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setOperatorName(String longName, String shortName, String numeric) { 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = longName; 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = shortName; 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = numeric; 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setIsManualSelection(boolean isManual) { 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = isManual; 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Test whether two objects hold the same data values or both are null 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param a first obj 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param b second obj 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if two objects equal or both are null 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static boolean equalsHandlesNulls (Object a, Object b) { 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (a == null) ? (b == null) : a.equals (b); 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set ServiceState based on intent notifier map 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m intent notifier map 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private void setFromNotifierBundle(Bundle m) { 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mState = m.getInt("state"); 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRoaming = m.getBoolean("roaming"); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaLong = m.getString("operator-alpha-long"); 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorAlphaShort = m.getString("operator-alpha-short"); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mOperatorNumeric = m.getString("operator-numeric"); 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mIsManualNetworkSelection = m.getBoolean("manual"); 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set intent notifier Bundle based on service state 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param m intent notifier Bundle 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void fillInNotifierBundle(Bundle m) { 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putInt("state", mState); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putBoolean("roaming", Boolean.valueOf(mRoaming)); 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-alpha-long", mOperatorAlphaLong); 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-alpha-short", mOperatorAlphaShort); 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putString("operator-numeric", mOperatorNumeric); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m.putBoolean("manual", Boolean.valueOf(mIsManualNetworkSelection)); 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 332