18ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh/* 28ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * Copyright (C) 2013 The Android Open Source Project 38ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 48ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * Licensed under the Apache License, Version 2.0 (the "License"); 58ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * you may not use this file except in compliance with the License. 68ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * You may obtain a copy of the License at 78ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 88ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * http://www.apache.org/licenses/LICENSE-2.0 98ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 108ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * Unless required by applicable law or agreed to in writing, software 118ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * distributed under the License is distributed on an "AS IS" BASIS, 128ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * See the License for the specific language governing permissions and 148ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * limitations under the License. 158ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh */ 168ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 178ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshpackage com.android.location.provider; 188ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 198ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshimport android.hardware.location.GeofenceHardware; 208ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshimport android.hardware.location.IGeofenceHardware; 218ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshimport android.os.IBinder; 228ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 238ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshimport android.location.IGeofenceProvider; 248ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 258ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh/** 268ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * Base class for geofence providers implemented as unbundled services. 278ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 288ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * <p>Geofence providers can be implemented as services and return the result of 298ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * {@link com.android.location.provider.GeofenceProvider#getBinder()} in its getBinder() method. 308ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 318ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * <p>IMPORTANT: This class is effectively a public API for unbundled 328ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * applications, and must remain API stable. See README.txt in the root 338ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * of this package for more information. 348ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh */ 358ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshpublic abstract class GeofenceProvider { 368ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 378ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh private GeofenceHardware mGeofenceHardware; 388ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 398ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh private IGeofenceProvider.Stub mProvider = new IGeofenceProvider.Stub() { 408ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh public void setGeofenceHardware(IGeofenceHardware hardwareProxy) { 418ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh mGeofenceHardware = new GeofenceHardware(hardwareProxy); 428ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh onGeofenceHardwareChange(mGeofenceHardware); 438ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 448ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh }; 458ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 468ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh /** 478ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * Returns the Binder interface for the geofence provider. 488ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * This is intended to be used for the onBind() method of 498ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * a service that implements a geofence service. 508ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 518ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * @return the IBinder instance for the provider 528ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh */ 538ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh public IBinder getBinder() { 548ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return mProvider; 558ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 568ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 578ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh /** 588ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * Called when GeofenceHardware object becomes available. 598ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * 608ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * @param geofenceHardware Geofence Hardware object. This can be null 618ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh * when for some reason the service connection gets disconnected. 628ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh */ 638ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh public abstract void onGeofenceHardwareChange(GeofenceHardware geofenceHardware); 648ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 65