2015-01-30 3 views
3

특정 사용자에 대해 google fit 클라우드에 저장된 데이터를 어떻게 얻을 수 있습니까? 기록 API를 사용했지만 데이터가 표시되지 않았습니다. 그런 다음 일부 데이터 vai History api를 입력하려고했는데 이제는 실제 API를 통해 이러한 데이터를 볼 수 있습니다. 실제 데이터는 실제로 적합합니다.Google 피트니스 데이터를 Android 애플리케이션으로 가져 오기

DataReadRequest readRequest = queryFitnessData(); 
DataReadResult dataReadResult = 
        Fitness.HistoryApi.readData(mClient, readRequest).await(1, TimeUnit.MINUTES); 

데이터 요청

질문을 바탕으로
DataReadRequest readRequest = new DataReadRequest.Builder() 

       .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) 

       .bucketByTime(1, TimeUnit.DAYS) 
       .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
       .build(); 
+0

https://github.com/googlesamples/android-fit –

+1

예 위의 코드는 그 중에서도 일부는 Google 적합 데이터에서 데이터를 가져 오지 않습니다. –

답변

4

, 당신이 기대되지만받을 수없는 알고 어려운 것입니다. 자세한 내용이 도움이 될 것입니다.

Fit이 기본 병합 된 단계 스트림을 반환하기 때문에 그럴 것 같습니다. 기본적으로 두 앱이 모두 동일한 60 분 동안 1,000 개의 단계를보고하면 Fit은 해당 앱이 중복되어 있다고 가정하고 응답을 위해 병합합니다.

버킷 기능을 잃어 버리고 원시 단계가 있는지보십시오. 이 코드는 나를 위해 작동 : 클라우드에서 데이터를 읽으려면

final DataReadRequest readRequest = new DataReadRequest.Builder() 
      .read(DataType.TYPE_STEP_COUNT_DELTA) 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .build(); 

    DataReadResult dataReadResult = 
      Fitness.HistoryApi.readData(mGoogleApiFitnessClient, readRequest).await(1, TimeUnit.MINUTES); 

    DataSet stepData = dataReadResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA); 

    int totalSteps = 0; 

    for (DataPoint dp : stepData.getDataPoints()) { 
     for(Field field : dp.getDataType().getFields()) { 
      int steps = dp.getValue(field).asInt(); 

      totalSteps += steps; 

     } 
    } 
+0

많은 단계가 병합되기 때문에 정확하다고 생각합니다. 나는 그것을 어디에서 잃었는지 혼란 스러웠다. 다시 한 번 감사드립니다 –

+0

Google Fit에 저장된 모든 데이터를 읽을 수 없다는 문제가 해결 되었습니까? – achabacha322

+0

나는 내 자신의 질문에 대답 할 것이다. 네, 그렇습니다 – achabacha322

0

, 당신은 DataReadRequest.Builder에 다음 호출을 추가해야합니다 enableServerQueries()

그래서 코드는 다음과 같을 것이다 :

final DataReadRequest readRequest = new DataReadRequest.Builder() 
     .read(DataType.TYPE_STEP_COUNT_DELTA) 
     .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
     .enableServerQueries() 
     .build(); 
1

당신은 프리스트를 구독 했습니까? Fitness.RecordingApi.subscribe(mClient, myDataType)

myDataType이 DataType.TYPE_STEP_COUNT_DELTA 또는

+0

내 문제가 해결되었습니다. – Armin

1

난 정말 insertFitnessData 내부 스텝 카운터 값을 삽입하는 방법을 이해하지 않습니다 DataType.TYPE_STEP_COUNT_CUMULATIVE 후 나는 같은 문제 만 해결이(). 기본 내역 google 프로그램에는 이미 1000이라는 단계 값을 보유한 DataSet이 있습니다. 지난 한 시간 동안 수행 한 단계를 계산할 수 있도록 해당 부분을 어떻게 변경해야합니까?

DataSet dataSet = DataSet.create(dataSource); 
    // For each data point, specify a start time, end time, and the data 
    value -- in this case, 
    // the number of new steps. 
    DataPoint dataPoint = dataSet.createDataPoint() 
      .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS); 

콜백을 받기 위해 OnDataPointListener를 사용해야합니까? 나는 혼란 스럽다!

0

내 경우에는 여전히 버킷을 사용할 수 있으며 전혀 내게 순종하지 않을 때까지 제대로 작동했습니다. 어쨌든, 그것을 고쳤습니다. 가능한 원인은 다음과 같습니다.

1)이 유형의 데이터를 아직 가입하지 않으셨습니까?

2) 앱이 Google 서비스에 제대로 연결되지 않았습니다. Google 개발 콘솔에서 OAuth 클라이언트 ID를 생성하셨습니까? Google의 GG Fit 서비스에 연결하는 것이 의무화됩니다 (다른 앱을 복제하거나 동일한 컴퓨터에 복제하는 경우 다른 OAuth 클라이언트 ID를 다시 작성해야하며 두 가지 별도 계정이 필요함을주의하십시오). , 하나는 Google에 로그인하여 OAuth 클라이언트 ID를 생성하고 다른 하나는 앱을 시작한 후 로그인하기 위해 로그인하고 권한을 수락하기 위해 로그인하라는 메시지가 표시됩니다. 이유는 모르지만 작동 할 것입니다)

참고 : 기기에서 Google 설정에 대해 검색 할 수 있습니다 (설정 -> Google). 여기에서 GG Fit 서비스를 포함하여 Google 서비스에 연결할 앱을 찾을 수 있습니다. 모든 연결을 끊고 OAuth 클라이언트 ID, 앱을 삭제 한 다음 다시 작성하는 것이 좋습니다.

mttdat.

관련 문제