Получение данных о частоте сердечных сокращений от Sony Band SWR12

Я работаю над получением данных о частоте сердечных сокращений из Sony Band 2 (SWR12). Я хотел бы сделать это с помощью API Google Fit Sensors. Я следовал примеру и учебным пособиям в Google здесь: https://github.com/googlesamples/android-fit/blob/master/BasicSensorsApi/app/src/main/AndroidManifest.xml

После включения Fit API и создания моего токена аутентификации я могу читать местоположение устройства.

Однако, когда я изменяю источник данных на: .setDataTypes(DataType.AGGREGATE_HEART_RATE_SUMMARY), приложение вылетает.

Любой, кто ранее работал с Fit API и Sony Band, помогите мне подключиться к группе.

1 ответ

Мне удалось записать и прочитать сгруппированные данные с помощью следующего кода:

private void suscribeDataFitness(){
    Fitness.RecordingApi.subscribe(mApiClient, DataType.AGGREGATE_HEART_RATE_SUMMARY)
            .setResultCallback(mSubscribeResultCallback);

}


private void readDataFitnessHistory()
{
    // Setting a start and end date using a range of 1 week before this moment.
    Calendar cal = Calendar.getInstance();
    Date now = new Date();
    cal.setTime(now);
    long endTime = cal.getTimeInMillis();

    cal.add(Calendar.DAY_OF_YEAR, -1);
    long startTime = cal.getTimeInMillis();

    java.text.DateFormat dateFormat = getDateInstance();
    Log.d(TAG, "Range Start: " + dateFormat.format(startTime) + " Millis : " + startTime);
    Log.d(TAG, "Range End: " + dateFormat.format(endTime)  + " Millis : " + endTime);

   final DataReadRequest readRequest = new DataReadRequest.Builder()
            //.read(DataType.TYPE_STEP_COUNT_DELTA)
            //.read(DataType.TYPE_HEART_RATE_BPM)
            //.read(ESTIMATED_STEP_DELTAS)
            .aggregate(DataType.AGGREGATE_HEART_RATE_SUMMARY)
            .enableServerQueries()
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .bucketByTime(1, TimeUnit.HOURS)
            .build();


    // Invoke the History API to fetch the data with the query and await the result of
    // the read request.
    DataReadResult dataReadResult =
            Fitness.HistoryApi.readData(mApiClient, readRequest).await(1, TimeUnit.MINUTES);
    showDataBuckets(dataReadResult);

}

final DataReadRequest readRequest = new DataReadRequest.Builder()
            //.read(DataType.TYPE_STEP_COUNT_DELTA)
            //.read(DataType.TYPE_HEART_RATE_BPM)
            //.read(ESTIMATED_STEP_DELTAS)
            .aggregate(DataType.AGGREGATE_HEART_RATE_SUMMARY)
            .enableServerQueries()
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .bucketByTime(1, TimeUnit.HOURS)
            .build();


private void showDataBuckets(DataReadResult dataReadResult) {
    //Used for aggregated data
    if (dataReadResult.getBuckets().size() > 0) {
        Log.d(TAG,"History: "+ "Number of buckets: " + dataReadResult.getBuckets().size());
        for (Bucket bucket : dataReadResult.getBuckets()) {
            List<DataSet> dataSets = bucket.getDataSets();
            for (DataSet dataSet : dataSets) {
                showDataSet(dataSet);
            }
        }
    }
}

Я надеюсь, что смогу помочь тебе. Приветствие

Другие вопросы по тегам