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 android.location;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.PendingIntent;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.Address;
2103ca216ac19ea4e7afcb183c20c7c780f0d97756Mike Lockwoodimport android.location.Criteria;
2234901409a404c8c66914c5a8ad0f29b1bcde0e78Mike Lockwoodimport android.location.GeocoderParams;
236fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pellyimport android.location.Geofence;
24ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaaimport android.location.IGpsMeasurementsListener;
254b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport android.location.IGpsNavigationMessageListener;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.IGpsStatusListener;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.ILocationListener;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.Location;
296fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pellyimport android.location.LocationRequest;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
326fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pellyimport com.android.internal.location.ProviderProperties;
336fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * System private API for talking with the location service.
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
376fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly * @hide
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectinterface ILocationManager
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
416fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void requestLocationUpdates(in LocationRequest request, in ILocationListener listener,
426fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly            in PendingIntent intent, String packageName);
436fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void removeUpdates(in ILocationListener listener, in PendingIntent intent, String packageName);
446fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
456fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void requestGeofence(in LocationRequest request, in Geofence geofence,
466fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly            in PendingIntent intent, String packageName);
476fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void removeGeofence(in Geofence fence, in PendingIntent intent, String packageName);
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
494035f5a7c191a68bc9a5912ce44c43c82e9e5dbfNick Pelly    Location getLastLocation(in LocationRequest request, String packageName);
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
51a06de0f29b58df9246779cc4bfd8f06f7205ddb6Dianne Hackborn    boolean addGpsStatusListener(IGpsStatusListener listener, String packageName);
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void removeGpsStatusListener(IGpsStatusListener listener);
5348f17518223a2917fd82195004fbb206cb9a05a3Mike Lockwood
54e15735a9e0c0b1448b68f2d6b3247404fc1df417Mike Lockwood    boolean geocoderIsPresent();
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getFromLocation(double latitude, double longitude, int maxResults,
5634901409a404c8c66914c5a8ad0f29b1bcde0e78Mike Lockwood        in GeocoderParams params, out List<Address> addrs);
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    String getFromLocationName(String locationName,
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        double lowerLeftLatitude, double lowerLeftLongitude,
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        double upperRightLatitude, double upperRightLongitude, int maxResults,
6034901409a404c8c66914c5a8ad0f29b1bcde0e78Mike Lockwood        in GeocoderParams params, out List<Address> addrs);
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
626fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    boolean sendNiResponse(int notifId, int userResponse);
636fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
64ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa    boolean addGpsMeasurementsListener(in IGpsMeasurementsListener listener, in String packageName);
656568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa    void removeGpsMeasurementsListener(in IGpsMeasurementsListener listener);
66ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa
674b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    boolean addGpsNavigationMessageListener(
684b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            in IGpsNavigationMessageListener listener,
694b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            in String packageName);
706568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa    void removeGpsNavigationMessageListener(in IGpsNavigationMessageListener listener);
714b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
726fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    // --- deprecated ---
736fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    List<String> getAllProviders();
746fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    List<String> getProviders(in Criteria criteria, boolean enabledOnly);
756fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    String getBestProvider(in Criteria criteria, boolean enabledOnly);
766fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    boolean providerMeetsCriteria(String provider, in Criteria criteria);
776fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    ProviderProperties getProviderProperties(String provider);
786fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    boolean isProviderEnabled(String provider);
796fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
806fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void addTestProvider(String name, in ProviderProperties properties);
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void removeTestProvider(String provider);
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setTestProviderLocation(String provider, in Location loc);
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void clearTestProviderLocation(String provider);
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setTestProviderEnabled(String provider, boolean enabled);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void clearTestProviderEnabled(String provider);
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setTestProviderStatus(String provider, int status, in Bundle extras, long updateTime);
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void clearTestProviderStatus(String provider);
88e932f7f2a47b770c636443d411436bd29cc4bb43Mike Lockwood
896fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    boolean sendExtraCommand(String provider, String command, inout Bundle extras);
906fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
916fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    // --- internal ---
926fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
936fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    // Used by location providers to tell the location manager when it has a new location.
946fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    // Passive is true if the location is coming from the passive provider, in which case
956fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    // it need not be shared with other providers.
966fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void reportLocation(in Location location, boolean passive);
976fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
986fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    // for reporting callback completion
996fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly    void locationCallbackFinished(ILocationListener listener);
1006fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
1016fa9ad4afcd762aea519ff61811386c23d18ddb2Nick Pelly
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
103