LocalRecordingClient

public class LocalRecordingClient extends Object

Client which enables low-power, always-on background collection of local sensor data. Sensor subscriptions are active when the requesting app is not running, and persisted through system restarts. Collected data can be queried using readData(LocalDataReadRequest).

Constant Summary

int LOCAL_RECORDING_CLIENT_MIN_VERSION_CODE The minimum version of Google Play services that LocalRecordingClient requires.

Public Method Summary

Task<LocalDataReadResponse>
readData(LocalDataReadRequest request)
Reads data from the user's local history.
Task<Void>
subscribe(LocalDataType dataType)
Subscribes to background collection of LocalDataType on behalf of the current application.
Task<Void>
unsubscribe(LocalDataType dataType)
Unsubscribes from background data collection for the current application for a particular data type.

Inherited Method Summary

Constants

public static final int LOCAL_RECORDING_CLIENT_MIN_VERSION_CODE

The minimum version of Google Play services that LocalRecordingClient requires. This version code can be used with use GoogleApiAvailability.isGooglePlayServicesAvailable(Context, int) to check whether the current version is sufficient.

Constant Value: 241500000

Public Methods

public Task<LocalDataReadResponse> readData (LocalDataReadRequest request)

Reads data from the user's local history. Values can be read in detailed or in aggregate formats. Aggregate data is presented in buckets, while detailed data is returned as a single data set.

Parameters
request A built request specifying the data types to read and the time range of the returned data
Returns
  • A Task containing the requested data
Throws
SecurityException If a required permission is missing for the requested LocalDataType
ApiException with status ConnectionResult.API_UNAVAILABLE if the calling package is not allowed to use the Recording API on mobile
ApiException with status FitnessStatusCodes.DATA_TYPE_NOT_ALLOWED_FOR_API if the requested LocalDataType is not currently supported
ApiException with status FitnessStatusCodes.API_EXCEPTION if a valid subscription for a requested data type is not found
ApiException with status ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED if the installed version of Google Play services is out of date, in which case you should request that the user updates Google Play services using GoogleApiAvailability. You can use GoogleApiAvailability.isGooglePlayServicesAvailable(Context, int) with LOCAL_RECORDING_CLIENT_MIN_VERSION_CODE.

public Task<Void> subscribe (LocalDataType dataType)

Subscribes to background collection of LocalDataType on behalf of the current application.

After the subscription is successfully added, new data points in the requested data stream are persisted for 10 days and can be queried via readData(LocalDataReadRequest).

If the requested subscription already exists, the request is a no-op.

Subscribing to a LocalDataType which derives from data collected using activity recognition requires the ACTIVITY_RECOGNITION runtime permission if your app is targeting API level 29. If the permission is lost during recording, the registration will be removed.

Parameters
dataType The LocalDataType to subscribe to
Throws
SecurityException If a required permission is missing for the requested LocalDataType
ApiException with status ConnectionResult.API_UNAVAILABLE if the calling package is not allowed to use the Recording API on mobile
ApiException with status FitnessStatusCodes.DATA_TYPE_NOT_ALLOWED_FOR_API if the requested LocalDataType is not currently supported
ApiException with status ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED if the installed version of Google Play services is out of date, in which case you should request that the user updates Google Play services using GoogleApiAvailability. You can use GoogleApiAvailability.isGooglePlayServicesAvailable(Context, int) with LOCAL_RECORDING_CLIENT_MIN_VERSION_CODE.

public Task<Void> unsubscribe (LocalDataType dataType)

Unsubscribes from background data collection for the current application for a particular data type. Should be called when the application no longer wishes to record data.

Unsubscribing from a LocalDataType for which a subscription does not already exist is no-op.

Parameters
dataType All subscriptions to the particular LocalDataType from the calling package are removed
Throws
ApiException with status ConnectionResult.API_UNAVAILABLE if the calling package is not allowed to use the Recording API on mobile
ApiException with status ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED if the installed version of Google Play services is out of date, in which case you should request that the user updates Google Play services using GoogleApiAvailability. You can use GoogleApiAvailability.isGooglePlayServicesAvailable(Context, int) with LOCAL_RECORDING_CLIENT_MIN_VERSION_CODE.