Чтение пульса от ношения часов с помощью Google Fit из парного приложения - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь получить ЧСС от моих изнашиваемых часов Android, используя Google Fit API. И мои часы, и устройства Android сопряжены.

Я попробовал 2 подхода:

1) Из приложения Android подключитесь к Google Fit и отсканируйте источники данных. Но он будет обнаруживать только датчик шага на моем устройстве Android без парных датчиков часов.

mFitnessClient = new GoogleApiClient.Builder(this)
 .addApi(Fitness.SENSORS_API)
 .addScope(Fitness.SCOPE_BODY_READ)
 .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
  @Override
  public void onConnected(Bundle bundle) {
   Log.d(TAG, "Fitness client connected");
  }

  @Override
  public void onConnectionSuspended(int i) {
   Log.d(TAG, "Fitness client suspended");
  }
 })
 .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
  @Override
  public void onConnectionFailed(ConnectionResult result) {
   Log.d(TAG, "Fitness Connection failed");
  }
 })
 .build();
mFitnessClient.connect();

DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder()
 .setDataTypes(DataType.TYPE_HEART_RATE_BPM)
 .setDataSourceTypes(DataSource.TYPE_RAW)
 .build();

ResultCallback < DataSourcesResult > dataSourcesResultCallback = new ResultCallback < DataSourcesResult > () {
 @Override
 public void onResult(DataSourcesResult dataSourcesResult) {
  for (DataSource dataSource: dataSourcesResult.getDataSources()) {

  }
 }
};

Fitness.SensorsApi.findDataSources(mFitnessClient, dataSourceRequest)
 .setResultCallback(dataSourcesResultCallback);


2) Считывание данных непосредственно с часов в качестве приложения для ношения. Но если я определяю Fitness.SENSORS_API, я склоняюсь к onConnectionFailed с кодом ошибки 5 (INVALID_ACCOUNT).

mFitnessClient = new GoogleApiClient.Builder(this)
 .addApi(Fitness.SENSORS_API)
 .addScope(Fitness.SCOPE_BODY_READ)
 .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
  @Override
  public void onConnected(Bundle bundle) {
   Log.d(LOG_TAG, "Connected to fitness API");

  }

  @Override
  public void onConnectionSuspended(int i) {

  }
 })
 .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
  @Override
  public void onConnectionFailed(ConnectionResult connectionResult) {
   Log.d(LOG_TAG, "Connection failed: " + connectionResult.getErrorCode());
  }
 })
 .build();
mFitnessClient.connect();
...