2016-05-03 103 views
2

我幾個星期以來一直在構建一個相當簡單的應用程序,它將我的Fitbit Flex跟蹤器的活動推向Google Fit。這非常簡單:它創建了數據源,並使用這些數據來推動最後一小時的卡路里計數,步數和Google Fit距離。它也推動我的體重,如果我使用Fitbit應用程序登錄它。通過Google Fit REST API提交重量信息/距離

每小時,它會將這三個指標推送到三個不同的數據集中,每個數據集都有一個數據點。例如:從10:00到10:59,451步。這對所有這三個指標都很有效。

每天一次,範圍爲00:00至23:59的數據集將我的體重傳達給Google健身。這個數據集也有一個數據點。

這個系統似乎適用於我的步數和卡路里數。這並不完美,因爲我的步數沒有任何相關的活動。但Google Fit成功接收數據並將其存儲起來。

但是,Google Fit看起來並不符合我報告的體重。 Google Fit也沒有記得我提交它的距離。

我使用的數據類型有:

  • com.google.calories.expended
  • com.google.distance.delta
  • com.google.step_count.delta
  • 融爲一體。 google.weight

我的應用程序的源代碼是在Github上:https://github.com/JC5/fitsync

任何提示或技巧?這是我可以使用REST API的嗎?

+0

你可以看看這個[前面的SO問題](http://stackoverflow.com/questions/26929699/add-read-weight-and-height-in-googlefit-android)由Jose回答。他演示瞭如何爲重量創建新的DataSet對象。他還指出,添加[正確的權限](http://stackoverflow.com/questions/26390192/googlefit-sample-not-working/26959071#26959071)。我希望這可以幫助 –

+1

我可能找到了解決方案。它與權限無關,但可能與我的數據集有關:我沒有給它一個「即時」時間戳,而是「今天開始直到今天結束」。這可能會混淆Google Fit。我會回報。 –

+0

當然,只要更新任何進度,那麼如果您遇到另一個問題,只要將它發佈在這裏,如果它仍然與您的原始帖子有關。 :) –

回答

1

是的。這question帶領我在正確的方向。事實證明,我使用的字段類型是瞬時字段類型(見上文)。他們只在一個時刻測量。相反的是一個聚合的字段類型。

我的體重是在這裏和現在測量的,並且價值不是在一天或一週內彙總,而是一次即時測量。在這個時刻,我體重82.1公斤。

因此,當您使用單個數據點創建數據集時(您需要向Google發送這種即時字段類型),則必須確保開始時間和結束時間相同。畢竟,如果不是即時的,它將不是一個正確的條目。

數據集我發送給谷歌飛度,這在谷歌配合正確註冊,如下:

{ 
    "minStartTimeNs":1462358894000000000, 
    "maxEndTimeNs":1462358894000000000, 
    "dataSourceId":"your-data-id", 
    "point":[ 
     { 
     "dataTypeName":"com.google.weight", 
     "originDataSourceId":"", 
     "startTimeNanos":1462358894000000000, 
     "endTimeNanos":1462358894000000000, 
     "value":[ 
      { 
       "fpVal":81.2 
      } 
     ] 
     } 
    ] 
} 

的距離度量還沒有註冊,但可能還有其他未公佈的特性存在。