163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn/* 263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * Copyright (C) 2010 The Android Open Source Project 363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * 463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * you may not use this file except in compliance with the License. 663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * You may obtain a copy of the License at 763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * 863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * 1063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * Unless required by applicable law or agreed to in writing, software 1163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 1263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * See the License for the specific language governing permissions and 1463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * limitations under the License. 1563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn */ 1663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 1763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornpackage com.android.location.provider; 1863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 1963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornimport android.os.IBinder; 2063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 2163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornimport android.location.Address; 2263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornimport android.location.GeocoderParams; 2363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornimport android.location.IGeocodeProvider; 2463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 2563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornimport java.util.List; 2663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 2763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn/** 28b03c8c508dcbbef364e624ad5bc0ab6fa6733dc7Nick Pelly * Base class for geocode providers implemented as unbundled services. 29b03c8c508dcbbef364e624ad5bc0ab6fa6733dc7Nick Pelly * 30b03c8c508dcbbef364e624ad5bc0ab6fa6733dc7Nick Pelly * <p>Geocode providers can be implemented as services and return the result of 3163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * {@link GeocodeProvider#getBinder()} in its getBinder() method. 3263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * 33b03c8c508dcbbef364e624ad5bc0ab6fa6733dc7Nick Pelly * <p>IMPORTANT: This class is effectively a public API for unbundled 34b03c8c508dcbbef364e624ad5bc0ab6fa6733dc7Nick Pelly * applications, and must remain API stable. See README.txt in the root 35b03c8c508dcbbef364e624ad5bc0ab6fa6733dc7Nick Pelly * of this package for more information. 3663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn */ 3763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackbornpublic abstract class GeocodeProvider { 3863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 3963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn private IGeocodeProvider.Stub mProvider = new IGeocodeProvider.Stub() { 4063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn public String getFromLocation(double latitude, double longitude, int maxResults, 4163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn GeocoderParams params, List<Address> addrs) { 4263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn return GeocodeProvider.this.onGetFromLocation(latitude, longitude, maxResults, 4363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn params, addrs); 4463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn } 4563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 4663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn public String getFromLocationName(String locationName, 4763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn double lowerLeftLatitude, double lowerLeftLongitude, 4863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn double upperRightLatitude, double upperRightLongitude, int maxResults, 4963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn GeocoderParams params, List<Address> addrs) { 5063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn return GeocodeProvider.this.onGetFromLocationName(locationName, lowerLeftLatitude, 5163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn lowerLeftLongitude, upperRightLatitude, upperRightLongitude, 5263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn maxResults, params, addrs); 5363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn } 5463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn }; 5563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 5663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn /** 5763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * This method is overridden to implement the 5863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * {@link android.location.Geocoder#getFromLocation(double, double, int)} method. 5963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * Classes implementing this method should not hold a reference to the params parameter. 6063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn */ 6163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn public abstract String onGetFromLocation(double latitude, double longitude, int maxResults, 6263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn GeocoderParams params, List<Address> addrs); 6363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 6463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn /** 6563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * This method is overridden to implement the 6663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * {@link android.location.Geocoder#getFromLocationName(String, int, double, double, double, double)} method. 6763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * Classes implementing this method should not hold a reference to the params parameter. 6863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn */ 6963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn public abstract String onGetFromLocationName(String locationName, 7063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn double lowerLeftLatitude, double lowerLeftLongitude, 7163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn double upperRightLatitude, double upperRightLongitude, int maxResults, 7263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn GeocoderParams params, List<Address> addrs); 7363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn 7463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn /** 7563c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * Returns the Binder interface for the geocode provider. 7663c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * This is intended to be used for the onBind() method of 7763c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * a service that implements a geocoder service. 7863c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * 7963c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn * @return the IBinder instance for the provider 8063c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn */ 8163c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn public IBinder getBinder() { 8263c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn return mProvider; 8363c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn } 8463c82c027bb3bd2b803e3225c9135c77b1f92b7bDianne Hackborn} 85