Loading core/java/android/hardware/location/GeofenceHardwareImpl.java +10 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import java.util.Iterator; public final class GeofenceHardwareImpl { private static final String TAG = "GeofenceHardwareImpl"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final int FIRST_VERSION_WITH_CAPABILITIES = 2; private final Context mContext; private static GeofenceHardwareImpl sInstance; Loading @@ -54,6 +55,7 @@ public final class GeofenceHardwareImpl { private IFusedGeofenceHardware mFusedService; private IGpsGeofenceHardware mGpsService; private int mCapabilities; private int mVersion = 1; private int[] mSupportedMonitorTypes = new int[GeofenceHardware.NUM_MONITORS]; Loading Loading @@ -145,8 +147,10 @@ public final class GeofenceHardwareImpl { private void updateFusedHardwareAvailability() { boolean fusedSupported; try { final boolean hasGnnsCapabilities = (mVersion < FIRST_VERSION_WITH_CAPABILITIES) || (mCapabilities & CAPABILITY_GNSS) != 0; fusedSupported = (mFusedService != null ? mFusedService.isSupported() && (mCapabilities & CAPABILITY_GNSS) != 0 ? mFusedService.isSupported() && hasGnnsCapabilities : false); } catch (RemoteException e) { Log.e(TAG, "RemoteException calling LocationManagerService"); Loading Loading @@ -177,6 +181,11 @@ public final class GeofenceHardwareImpl { updateFusedHardwareAvailability(); } public void setVersion(int version) { mVersion = version; updateFusedHardwareAvailability(); } public void setFusedGeofenceHardware(IFusedGeofenceHardware service) { if(mFusedService == null) { mFusedService = service; Loading core/java/android/hardware/location/IFusedLocationHardware.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -121,4 +121,9 @@ interface IFusedLocationHardware { * of the locations returned in this call. */ void flushBatchedLocations() = 11; /** * Returns the version of this FLP HAL implementation. */ int getVersion() = 12; } location/lib/java/com/android/location/provider/FusedLocationHardware.java +20 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,26 @@ public final class FusedLocationHardware { } } /** * Returns the version of the FLP HAL. * * <p>Version 1 is the initial release. * <p>Version 2 adds the ability to use {@link #flushBatchedLocations}, * {@link FusedLocationHardwareSink#onCapabilities}, and * {@link FusedLocationHardwareSink#onStatusChanged}. * * <p>This method is only available on API 23 or later. Older APIs have version 1. */ public int getVersion() { try { return mLocationHardware.getVersion(); } catch(RemoteException e) { Log.e(TAG, "RemoteException at getVersion"); } return 1; } /* * Helper methods and classes */ Loading location/lib/java/com/android/location/provider/FusedLocationHardwareSink.java +2 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,8 @@ public class FusedLocationHardwareSink { /** * Called when the status changes in the underlying FLP HAL * implementation (the ability to compute location). This * callback will only be made on API 23 or later. * callback will only be made on version 2 or later * (see {@link FusedLocationHardware#getVersion()}). * * @param status One of FLP_STATUS_LOCATION_AVAILABLE or * FLP_STATUS_LOCATION_UNAVAILABLE as defined in Loading services/core/java/com/android/server/location/FlpHardwareProvider.java +18 −1 Original line number Diff line number Diff line Loading @@ -42,11 +42,13 @@ import android.util.Log; * {@hide} */ public class FlpHardwareProvider { private static final int FIRST_VERSION_WITH_FLUSH_LOCATIONS = 2; private GeofenceHardwareImpl mGeofenceHardwareSink = null; private IFusedLocationHardwareSink mLocationSink = null; // Capabilities provided by FlpCallbacks private boolean mHaveBatchingCapabilities; private int mBatchingCapabilities; private int mVersion; private static FlpHardwareProvider sSingletonInstance = null; Loading Loading @@ -150,6 +152,11 @@ public class FlpHardwareProvider { } } private void setVersion(int version) { mVersion = version; getGeofenceHardwareSink().setVersion(version); } private void maybeSendCapabilities() { IFusedLocationHardwareSink sink; boolean haveBatchingCapabilities; Loading Loading @@ -366,7 +373,12 @@ public class FlpHardwareProvider { @Override public void flushBatchedLocations() { if (mVersion >= FIRST_VERSION_WITH_FLUSH_LOCATIONS) { nativeFlushBatchedLocations(); } else { Log.wtf(TAG, "Tried to call flushBatchedLocations on an unsupported implementation"); } } @Override Loading @@ -388,6 +400,11 @@ public class FlpHardwareProvider { public void injectDeviceContext(int deviceEnabledContext) { nativeInjectDeviceContext(deviceEnabledContext); } @Override public int getVersion() { return mVersion; } }; private final IFusedGeofenceHardware mGeofenceHardwareService = Loading Loading
core/java/android/hardware/location/GeofenceHardwareImpl.java +10 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import java.util.Iterator; public final class GeofenceHardwareImpl { private static final String TAG = "GeofenceHardwareImpl"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final int FIRST_VERSION_WITH_CAPABILITIES = 2; private final Context mContext; private static GeofenceHardwareImpl sInstance; Loading @@ -54,6 +55,7 @@ public final class GeofenceHardwareImpl { private IFusedGeofenceHardware mFusedService; private IGpsGeofenceHardware mGpsService; private int mCapabilities; private int mVersion = 1; private int[] mSupportedMonitorTypes = new int[GeofenceHardware.NUM_MONITORS]; Loading Loading @@ -145,8 +147,10 @@ public final class GeofenceHardwareImpl { private void updateFusedHardwareAvailability() { boolean fusedSupported; try { final boolean hasGnnsCapabilities = (mVersion < FIRST_VERSION_WITH_CAPABILITIES) || (mCapabilities & CAPABILITY_GNSS) != 0; fusedSupported = (mFusedService != null ? mFusedService.isSupported() && (mCapabilities & CAPABILITY_GNSS) != 0 ? mFusedService.isSupported() && hasGnnsCapabilities : false); } catch (RemoteException e) { Log.e(TAG, "RemoteException calling LocationManagerService"); Loading Loading @@ -177,6 +181,11 @@ public final class GeofenceHardwareImpl { updateFusedHardwareAvailability(); } public void setVersion(int version) { mVersion = version; updateFusedHardwareAvailability(); } public void setFusedGeofenceHardware(IFusedGeofenceHardware service) { if(mFusedService == null) { mFusedService = service; Loading
core/java/android/hardware/location/IFusedLocationHardware.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -121,4 +121,9 @@ interface IFusedLocationHardware { * of the locations returned in this call. */ void flushBatchedLocations() = 11; /** * Returns the version of this FLP HAL implementation. */ int getVersion() = 12; }
location/lib/java/com/android/location/provider/FusedLocationHardware.java +20 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,26 @@ public final class FusedLocationHardware { } } /** * Returns the version of the FLP HAL. * * <p>Version 1 is the initial release. * <p>Version 2 adds the ability to use {@link #flushBatchedLocations}, * {@link FusedLocationHardwareSink#onCapabilities}, and * {@link FusedLocationHardwareSink#onStatusChanged}. * * <p>This method is only available on API 23 or later. Older APIs have version 1. */ public int getVersion() { try { return mLocationHardware.getVersion(); } catch(RemoteException e) { Log.e(TAG, "RemoteException at getVersion"); } return 1; } /* * Helper methods and classes */ Loading
location/lib/java/com/android/location/provider/FusedLocationHardwareSink.java +2 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,8 @@ public class FusedLocationHardwareSink { /** * Called when the status changes in the underlying FLP HAL * implementation (the ability to compute location). This * callback will only be made on API 23 or later. * callback will only be made on version 2 or later * (see {@link FusedLocationHardware#getVersion()}). * * @param status One of FLP_STATUS_LOCATION_AVAILABLE or * FLP_STATUS_LOCATION_UNAVAILABLE as defined in Loading
services/core/java/com/android/server/location/FlpHardwareProvider.java +18 −1 Original line number Diff line number Diff line Loading @@ -42,11 +42,13 @@ import android.util.Log; * {@hide} */ public class FlpHardwareProvider { private static final int FIRST_VERSION_WITH_FLUSH_LOCATIONS = 2; private GeofenceHardwareImpl mGeofenceHardwareSink = null; private IFusedLocationHardwareSink mLocationSink = null; // Capabilities provided by FlpCallbacks private boolean mHaveBatchingCapabilities; private int mBatchingCapabilities; private int mVersion; private static FlpHardwareProvider sSingletonInstance = null; Loading Loading @@ -150,6 +152,11 @@ public class FlpHardwareProvider { } } private void setVersion(int version) { mVersion = version; getGeofenceHardwareSink().setVersion(version); } private void maybeSendCapabilities() { IFusedLocationHardwareSink sink; boolean haveBatchingCapabilities; Loading Loading @@ -366,7 +373,12 @@ public class FlpHardwareProvider { @Override public void flushBatchedLocations() { if (mVersion >= FIRST_VERSION_WITH_FLUSH_LOCATIONS) { nativeFlushBatchedLocations(); } else { Log.wtf(TAG, "Tried to call flushBatchedLocations on an unsupported implementation"); } } @Override Loading @@ -388,6 +400,11 @@ public class FlpHardwareProvider { public void injectDeviceContext(int deviceEnabledContext) { nativeInjectDeviceContext(deviceEnabledContext); } @Override public int getVersion() { return mVersion; } }; private final IFusedGeofenceHardware mGeofenceHardwareService = Loading