CellLocation.java revision 9d72be33181f1bd1386017ce0b0ce17d8ce1cb66
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.RemoteException; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ServiceManager; 22767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.SystemProperties; 23767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.provider.Settings; 24767a662ecde33c3979bf02b793d392aca0403162Wink Saville 25767a662ecde33c3979bf02b793d392aca0403162Wink Saville 26767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.telephony.cdma.CdmaCellLocation; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.telephony.gsm.GsmCellLocation; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.internal.telephony.ITelephony; 293cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalinkimport com.android.internal.telephony.Phone; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 323cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink * Abstract class that represents the location of the device. {@more} 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class CellLocation { 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Request an update of the current location. If the location has changed, 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a broadcast will be sent to everyone registered with {@link 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * PhoneStateListener#LISTEN_CELL_LOCATION}. 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static void requestLocationUpdate() { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.getService("phone")); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (phone != null) { 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project phone.updateServiceLocation(); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException ex) { 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ignore it 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new CellLocation from a intent notifier Bundle 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This method is used by PhoneStateIntentReceiver and maybe by 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * external applications. 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bundle Bundle from intent notifier 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return newly created CellLocation 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static CellLocation newFromBundle(Bundle bundle) { 649d72be33181f1bd1386017ce0b0ce17d8ce1cb66Wink Saville // TelephonyManager.getDefault().getCurrentPhoneType() handles the case when 659bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh // ITelephony interface is not up yet. 669d72be33181f1bd1386017ce0b0ce17d8ce1cb66Wink Saville switch(TelephonyManager.getDefault().getCurrentPhoneType()) { 673cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink case Phone.PHONE_TYPE_CDMA: 68767a662ecde33c3979bf02b793d392aca0403162Wink Saville return new CdmaCellLocation(bundle); 693cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink case Phone.PHONE_TYPE_GSM: 70767a662ecde33c3979bf02b793d392aca0403162Wink Saville return new GsmCellLocation(bundle); 713cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink default: 723cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink return null; 73767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract void fillInNotifierBundle(Bundle bundle); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8241a46718b3deec95661e149b3acea2a9e54016beJohn Wang * @hide 8341a46718b3deec95661e149b3acea2a9e54016beJohn Wang */ 8441a46718b3deec95661e149b3acea2a9e54016beJohn Wang public abstract boolean isEmpty(); 8541a46718b3deec95661e149b3acea2a9e54016beJohn Wang 8641a46718b3deec95661e149b3acea2a9e54016beJohn Wang /** 873cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink * Return a new CellLocation object representing an unknown 883cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink * location, or null for unknown/none phone radio types. 89767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static CellLocation getEmpty() { 929d72be33181f1bd1386017ce0b0ce17d8ce1cb66Wink Saville // TelephonyManager.getDefault().getCurrentPhoneType() handles the case when 939bfbfbd40df381817c0c685b177a2a1d666e101dJaikumar Ganesh // ITelephony interface is not up yet. 949d72be33181f1bd1386017ce0b0ce17d8ce1cb66Wink Saville switch(TelephonyManager.getDefault().getCurrentPhoneType()) { 953cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink case Phone.PHONE_TYPE_CDMA: 96767a662ecde33c3979bf02b793d392aca0403162Wink Saville return new CdmaCellLocation(); 973cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink case Phone.PHONE_TYPE_GSM: 98767a662ecde33c3979bf02b793d392aca0403162Wink Saville return new GsmCellLocation(); 993cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink default: 1003cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink return null; 101767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 104