AI-generated Key Takeaways
- 
          This class is deprecated; use Health Connect for reading and writing historical fitness data instead. 
- 
          The HistoryClient allows inserting, deleting, and reading data in Google Fit. 
- 
          The readDatamethod is used for querying historical data, which can be combined with a subscription for background data collection.
- 
          The insertDatamethod facilitates batch insertion of data collected outside of Google Fit.
- 
          The History Client is accessed via the Fitness entry point. 
This class is deprecated.
      For reading and writing historical fitness data, use Health Connect
      instead.
Client for inserting, deleting, and reading data in Google Fit.
The 
      readData(DataReadRequest) method should be used whenever historical data is
      needed. It can be combined with a subscription in the Recording
      Client to collect data in the background and query it later for displaying.
The 
      insertData(DataSet) method can be used for batch insertion of data that was
      collected outside of Google Fit. It can be useful when data is entered directly by the user
      or imported from a device that isn't supported by the platform.
The History Client should be accessed via the Fitness entry
      point. Example:
    GoogleSignInOptionsExtension fitnessOptions =
        FitnessOptions.builder()
            .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
            .build();
    GoogleSignInAccount googleSignInAccount =
        GoogleSignIn.getAccountForExtension(this, fitnessOptions);
    Task<DataReadResponse> response = Fitness.getHistoryClient(this, googleSignInAccount)
        .readData(new DataReadRequest.Builder()
            .read(DataType.TYPE_STEP_COUNT_DELTA)
            .setTimeRange(startTime.getMillis(), endTime.getMillis(), TimeUnit.MILLISECONDS)
            .build());
    DataReadResponse readDataResponse = Tasks.await(response);
    DataSet dataSet = readDataResponse.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
 Public Method Summary
| Task<Void> | |
| Task<Void> | 
                  
                  insertData(DataSet
                  dataSet)
                   
                    Inserts data collected from a data source directly into the user's Google Fit
                    history, on behalf of the current application.
                   | 
| Task<DataSet> | |
| Task<DataSet> | 
                  
                  readDailyTotalFromLocalDevice(DataType
                  dataType)
                   
                    Reads the current daily total for the given  dataTypefrom the
                    local device only. | 
| Task<DataReadResponse> | |
| Task<Void> | 
                  
                  registerDataUpdateListener(DataUpdateListenerRegistrationRequest
                  request)
                   
                    Adds a  PendingIntentlistener to Google fitness store. | 
| Task<Void> | 
                  
                  unregisterDataUpdateListener(PendingIntent
                  pendingIntent)
                   
                    Removes  PendingIntent,
                    previously registered for receiving data update notifications, from Google
                    Fitness Store. | 
| Task<Void> | 
                  
                  updateData(DataUpdateRequest
                  request)
                   
                    Updates data collected from a data source directly into the user's Google Fit
                    history, on behalf of the current application.
                   | 
Inherited Method Summary
Public Methods
public Task<Void> deleteData (DataDeleteRequest request)
Deletes data from the user's Google Fit history. This request will fail if the requesting app tries to delete data that it hasn't inserted.
Parameters
| request | Specifying the data source/type and time range to delete. | 
|---|
Returns
- A taskcontaining status of the request.
public Task<Void> insertData (DataSet dataSet)
Inserts data collected from a data source directly into the user's Google Fit history, on behalf of the current application. Useful when the data source isn't compatible with Google Fit or for importing historical data.
If the data source can be exposed via a BLE GATT
            profile, an application-exposed
            sensor, or some other method compatible with Google Fit, it's preferable to
            create a subscription via the Recording Client instead of inserting data directly.
Parameters
| dataSet | The data you're adding. | 
|---|
Returns
- A taskcontaining the status of the request.
public Task<DataSet> readDailyTotal (DataType dataType)
Reads the current daily total for the given dataType. The daily total
            will be computed from midnight of the current day on the device's current timezone. The
            method can be used as follows:
   Task<DataSet> response =
       Fitness.getHistoryClient(this, googleSignInAccount)
           .readDailyTotal(TYPE_STEP_COUNT_DELTA);
   DataSet totalSet = Tasks.await(response, 30, SECONDS);
   if (totalResult.getStatus().isSuccess()) {
     long total = totalSet.isEmpty()
         ? 0
         : totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt();
   } else {
     // handle failure
   }
 This is a simplified version of 
            readData(). When the requested data type is 
            DataType.TYPE_STEP_COUNT_DELTA, authentication is not required to call this
            method, making it specially suited for use by Watchface and Widget activities that
            don't have the ability to show an authentication panel to the user.
This method is equivalent to:
   Fitness.getHistoryClient(this, googleSignInAccount).readData(
        new DataReadRequest.Builder()
          .setTimeRange(midnight.getMillis(), now.getMillis(), TimeUnit.MILLISECONDS)
          .bucketByTime(1, TimeUnit.DAYS)
          .aggregate(DataType.STEP_COUNT_DELTA, AggregateDataTypes.STEP_COUNT_DELTA)
          .build());
 This method aggregates data across different user devices, for instance a watch and
            a phone. To aggregate data from the local device only, see 
            readDailyTotalFromLocalDevice(DataType)
public Task<DataSet> readDailyTotalFromLocalDevice (DataType dataType)
Reads the current daily total for the given dataType from the local
            device only. The daily total will be computed from midnight of the current day on the
            device's current timezone.
This method aggregates local data only. To aggregate data across different devices,
            see 
            readDailyTotal(DataType)
public Task<DataReadResponse> readData (DataReadRequest request)
Reads data from the user's Google Fit 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 sources you're interested in reading and the time range of the returned data. | 
|---|
Returns
- A taskcontaining the requested data. Includes a data set for each requested data source.
public Task<Void> registerDataUpdateListener (DataUpdateListenerRegistrationRequest request)
Adds a PendingIntent
            listener to Google fitness store. This method can be called to listen on updates in
            Google Fitness Store based on the request parameters. For instance, a listener may be
            registered to the com.google.weight data type to receive updates whenever new weight
            entries are added.
Once the register request succeeds, notification for updates in the Fitness Store
            are delivered to the pendingIntent in the request. Historic data is not delivered, but
            can be queried via the History
            Client. When the application is closing, or once data update notifications
            are no longer needed, the listener should be removed.
The application specifies a PendingIntent callback (typically an IntentService),
            wrapped in 
            DataUpdateListenerRegistrationRequest, which will be called when updates
            happen in the Fitness Store. When the PendingIntent is called, the application can use
            
            DataUpdateNotification.getDataUpdateNotification(android.content.Intent) to
            extract the DataUpdateNotification from the intent. See the documentation of
            PendingIntent
            for more details.
Any previously registered requests that have the same PendingIntent (as defined by
            
            PendingIntent.equals(Object)) will be replaced by this request.
Currently the Client allows registering listeners using dataType
            and dataSource
            for following data types:
Parameters
| request | Request containing the parameters to identify the data updates which should trigger notification to the pendingIntent. | 
|---|
public Task<Void> unregisterDataUpdateListener (PendingIntent pendingIntent)
Removes PendingIntent,
            previously registered for receiving data update notifications, from Google Fitness
            Store. Should be called whenever data update notifications are no longer needed.
Parameters
| pendingIntent | The PendingIntentthat was used in the
                registerDataUpdateListener(DataUpdateListenerRegistrationRequest)request or is equal as defined by
                PendingIntent.equals(Object). | 
|---|
Throws
| IllegalStateException | If client is not connected. | 
|---|
public Task<Void> updateData (DataUpdateRequest request)
Updates data collected from a data source directly into the user's Google Fit history, on behalf of the current application. For the provided time range, data is deleted for the given data source and new data is added to the system.
Useful when the data source isn't compatible with Google Fit or for importing historical data.
Parameters
| request | Specifying the time range to update and data. | 
|---|
Returns
- A taskcontaining the status of the request.