LocationManagerCompat

Added in 1.1.0

class LocationManagerCompat


Helper for accessing features in LocationManager.

Summary

Public functions

java-static Unit
@RequiresPermission(anyOf = )
getCurrentLocation(
    locationManager: LocationManager,
    provider: String,
    cancellationSignal: CancellationSignal?,
    executor: Executor,
    consumer: Consumer<Location!>
)

Asynchronously returns a single current location fix from the given provider.

java-static Unit
@RequiresPermission(anyOf = )
getCurrentLocation(
    locationManager: LocationManager,
    provider: String,
    cancellationSignal: CancellationSignal?,
    executor: Executor,
    consumer: Consumer<Location!>
)

This function is deprecated.

Use getCurrentLocation

java-static String?

Returns the model name (including vendor and hardware/software version) of the GNSS hardware driver, or null if this information is not available.

java-static Int

Returns the model year of the GNSS hardware and software build, or 0 if the model year is before 2016.

java-static Boolean
hasProvider(locationManager: LocationManager, provider: String)

Returns true if the given location provider exists on this device, irrespective of whether it is currently enabled or not.

java-static Boolean

Returns the current enabled/disabled state of location.

java-static Boolean
@RequiresApi(value = VERSION_CODES.N)
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
registerGnssMeasurementsCallback(
    locationManager: LocationManager,
    callback: GnssMeasurementsEvent.Callback,
    handler: Handler
)

Registers a GNSS measurement callback.

java-static Boolean
@RequiresApi(value = VERSION_CODES.N)
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
registerGnssMeasurementsCallback(
    locationManager: LocationManager,
    executor: Executor,
    callback: GnssMeasurementsEvent.Callback
)

Registers a GNSS measurement callback.

java-static Boolean
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
registerGnssStatusCallback(
    locationManager: LocationManager,
    callback: GnssStatusCompat.Callback,
    handler: Handler
)

Registers a platform agnostic GnssStatusCompat.Callback.

java-static Boolean
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
registerGnssStatusCallback(
    locationManager: LocationManager,
    executor: Executor,
    callback: GnssStatusCompat.Callback
)

Registers a platform agnostic GnssStatusCompat.Callback.

java-static Unit
@RequiresPermission(anyOf = )
removeUpdates(
    locationManager: LocationManager,
    listener: LocationListenerCompat
)

Removes all location updates for the specified LocationListener.

java-static Unit
@RequiresPermission(anyOf = )
requestLocationUpdates(
    locationManager: LocationManager,
    provider: String,
    locationRequest: LocationRequestCompat,
    executor: Executor,
    listener: LocationListenerCompat
)

Register for location updates from the specified provider, using a LocationRequestCompat, and a callback on the specified Executor.

java-static Unit
@RequiresPermission(anyOf = )
requestLocationUpdates(
    locationManager: LocationManager,
    provider: String,
    locationRequest: LocationRequestCompat,
    listener: LocationListenerCompat,
    looper: Looper
)

Register for location updates from the specified provider, using a LocationRequestCompat, and a callback on the specified Looper.

java-static Unit
@RequiresApi(value = VERSION_CODES.N)
unregisterGnssMeasurementsCallback(
    locationManager: LocationManager,
    callback: GnssMeasurementsEvent.Callback
)

Unregisters a GNSS measurement callback.

java-static Unit
unregisterGnssStatusCallback(
    locationManager: LocationManager,
    callback: GnssStatusCompat.Callback
)

Unregisters a platform agnostic GnssStatusCompat.Callback.

Public functions

getCurrentLocation

@RequiresPermission(anyOf = )
java-static fun getCurrentLocation(
    locationManager: LocationManager,
    provider: String,
    cancellationSignal: CancellationSignal?,
    executor: Executor,
    consumer: Consumer<Location!>
): Unit

Asynchronously returns a single current location fix from the given provider. This may activate sensors in order to compute a new location. The given callback will be invoked once and only once, either with a valid location or with a null location if the provider was unable to generate a valid location.

A client may supply an optional CancellationSignal. If this is used to cancel the operation, no callback should be expected after the cancellation.

This method may return locations from the very recent past (on the order of several seconds), but will never return older locations (for example, several minutes old or older). Clients may rely upon the guarantee that if this method returns a location, it will represent the best estimation of the location of the device in the present moment.

Clients calling this method from the background may notice that the method fails to determine a valid location fix more often than while in the foreground. Background applications may be throttled in their location accesses to some degree.

getCurrentLocation

Added in 1.6.0
Deprecated in 1.13.0-alpha05
@RequiresPermission(anyOf = )
java-static fun getCurrentLocation(
    locationManager: LocationManager,
    provider: String,
    cancellationSignal: CancellationSignal?,
    executor: Executor,
    consumer: Consumer<Location!>
): Unit

Asynchronously returns a single current location fix from the given provider. This may activate sensors in order to compute a new location. The given callback will be invoked once and only once, either with a valid location or with a null location if the provider was unable to generate a valid location.

A client may supply an optional CancellationSignal. If this is used to cancel the operation, no callback should be expected after the cancellation.

This method may return locations from the very recent past (on the order of several seconds), but will never return older locations (for example, several minutes old or older). Clients may rely upon the guarantee that if this method returns a location, it will represent the best estimation of the location of the device in the present moment.

Clients calling this method from the background may notice that the method fails to determine a valid location fix more often than while in the foreground. Background applications may be throttled in their location accesses to some degree.

getGnssHardwareModelName

Added in 1.6.0
java-static fun getGnssHardwareModelName(locationManager: LocationManager): String?

Returns the model name (including vendor and hardware/software version) of the GNSS hardware driver, or null if this information is not available.

No device-specific serial number or ID is returned from this API.

getGnssYearOfHardware

Added in 1.6.0
java-static fun getGnssYearOfHardware(locationManager: LocationManager): Int

Returns the model year of the GNSS hardware and software build, or 0 if the model year is before 2016.

hasProvider

Added in 1.7.0
java-static fun hasProvider(locationManager: LocationManager, provider: String): Boolean

Returns true if the given location provider exists on this device, irrespective of whether it is currently enabled or not. If called on Android Q and below for the FUSED_PROVIDER, this method may return incorrect results if the client does not hold at least the ACCESS_COARSE_LOCATION permission.

isLocationEnabled

Added in 1.1.0
java-static fun isLocationEnabled(locationManager: LocationManager): Boolean

Returns the current enabled/disabled state of location.

NOTE: Calling this method on API levels prior to 20 may require the ACCESS_FINE_LOCATION or ACCESS_COARSE_LOCATION permission if run on non-standard Android devices. The vast majority of devices should not require either permission to be present for this method.

Returns
Boolean

true if location is enabled or false if location is disabled

registerGnssMeasurementsCallback

Added in 1.9.0
@RequiresApi(value = VERSION_CODES.N)
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
java-static fun registerGnssMeasurementsCallback(
    locationManager: LocationManager,
    callback: GnssMeasurementsEvent.Callback,
    handler: Handler
): Boolean

Registers a GNSS measurement callback. See registerGnssMeasurementsCallback.

The primary purpose for this compatibility method is to help avoid crashes when delivering GNSS measurements to client on Android R. This bug was fixed in Android R QPR1, but since it's possible not all Android R devices have upgraded to QPR1, this compatibility method is provided to ensure GNSS measurements can be delivered successfully on all platforms.

registerGnssMeasurementsCallback

Added in 1.9.0
@RequiresApi(value = VERSION_CODES.N)
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
java-static fun registerGnssMeasurementsCallback(
    locationManager: LocationManager,
    executor: Executor,
    callback: GnssMeasurementsEvent.Callback
): Boolean

Registers a GNSS measurement callback. See registerGnssMeasurementsCallback.

In addition to allowing the use of Executors on older platforms, this compatibility method also helps avoid crashes when delivering GNSS measurements to clients on Android R. This bug was fixed in Android R QPR1, but since it's possible not all Android R devices have upgraded to QPR1, this compatibility method is provided to ensure GNSS measurements can be delivered successfully on all platforms.

registerGnssStatusCallback

Added in 1.5.0
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
java-static fun registerGnssStatusCallback(
    locationManager: LocationManager,
    callback: GnssStatusCompat.Callback,
    handler: Handler
): Boolean

Registers a platform agnostic GnssStatusCompat.Callback. See addGpsStatusListener and registerGnssStatusCallback.

registerGnssStatusCallback

Added in 1.5.0
@RequiresPermission(value = "android.permission.ACCESS_FINE_LOCATION")
java-static fun registerGnssStatusCallback(
    locationManager: LocationManager,
    executor: Executor,
    callback: GnssStatusCompat.Callback
): Boolean

Registers a platform agnostic GnssStatusCompat.Callback. See addGpsStatusListener and registerGnssStatusCallback.

Internally, this API will always utilize GnssStatus APIs and instances on Android N and above, and will always utilize GpsStatus APIs and instances below Android N. Callbacks will always occur on the given executor.

If invoked on Android M or below, this will result in GpsStatus registration being run on either the current Looper or main Looper. If the thread this function is invoked on is different from that Looper, the caller must ensure that the Looper thread cannot be blocked by the thread this function is invoked on. The easiest way to avoid this is to ensure this function is invoked on a Looper thread.

Throws
java.lang.IllegalStateException

on Android M or below, if the current Looper or main Looper is blocked by the thread this function is invoked on

removeUpdates

Added in 1.7.0
@RequiresPermission(anyOf = )
java-static fun removeUpdates(
    locationManager: LocationManager,
    listener: LocationListenerCompat
): Unit

Removes all location updates for the specified LocationListener.

See removeUpdates for more information.

requestLocationUpdates

Added in 1.7.0
@RequiresPermission(anyOf = )
java-static fun requestLocationUpdates(
    locationManager: LocationManager,
    provider: String,
    locationRequest: LocationRequestCompat,
    executor: Executor,
    listener: LocationListenerCompat
): Unit

Register for location updates from the specified provider, using a LocationRequestCompat, and a callback on the specified Executor.

See requestLocationUpdates for more information.

requestLocationUpdates

Added in 1.7.0
@RequiresPermission(anyOf = )
java-static fun requestLocationUpdates(
    locationManager: LocationManager,
    provider: String,
    locationRequest: LocationRequestCompat,
    listener: LocationListenerCompat,
    looper: Looper
): Unit

Register for location updates from the specified provider, using a LocationRequestCompat, and a callback on the specified Looper.

See requestLocationUpdates for more information.

unregisterGnssMeasurementsCallback

Added in 1.9.0
@RequiresApi(value = VERSION_CODES.N)
java-static fun unregisterGnssMeasurementsCallback(
    locationManager: LocationManager,
    callback: GnssMeasurementsEvent.Callback
): Unit

Unregisters a GNSS measurement callback. See unregisterGnssMeasurementsCallback.

unregisterGnssStatusCallback

Added in 1.5.0
java-static fun unregisterGnssStatusCallback(
    locationManager: LocationManager,
    callback: GnssStatusCompat.Callback
): Unit

Unregisters a platform agnostic GnssStatusCompat.Callback. See removeGpsStatusListener and unregisterGnssStatusCallback.