Google Fit에 영양 데이터 등록(PFC)
15073 단어 HealthcareAndroidGoogleFit
전언
이는 작업개발 안드로이드 앱에서 영양 데이터를 구글 핏에 로그온해 처리할 때의 발자취를 구현한 것이다.
2018년 11월까지 구글핏 앱에서 확인할 수 있는 영양데이터는 PFC 데이터뿐이어서 이 3개+칼로리를 쓰기로 했다.
PFC= 단백질(Protein) 지방(Fat) 탄수화물(Carbs)
세그먼트 생성
Google API에 연결된 클라이언트를 만들 때 History API 및 FITNESS 사용NUTRITION_READ_Scape에 WRITE를 추가하면 영양가 데이터를 읽고 쓸 수 있습니다.
// クライアント作成
mClient = new GoogleApiClient.Builder(getApplicationContext())
.addApi(Fitness.HISTORY_API)
.addScope(new Scope(Scopes.FITNESS_NUTRITION_READ_WRITE))
.addConnectionCallbacks(
new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle bundle) {
Timber.d("Connect OK");
startFitnessCooper();
}
@Override
public void onConnectionSuspended(int i) {
// If your connection to the sensor gets lost at some point,
// you'll be able to determine the reason and react to it here.
if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_NETWORK_LOST) {
Timber.i("Connection lost. Cause: Network Lost");
} else if (i
== GoogleApiClient.ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) {
Timber.i("Connection lost. Reason: Service Disconnected");
}
cleanFitnessClient();
}
}
)
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
Timber.i("Google Play services connection failed. Cause: " + result.toString());
cleanFitnessClient();
}
})
.build();
// 接続
mClient.connect();
PFC 쓰기
PFC 데이터를 비동기식으로 쓰기 전에 준비합니다.
여기서는 NutritionEnity에 영양 데이터가 저장되어 있다고 가정합니다.
또 로그인 데이터에 이름을 붙여야 하기 때문에 연월일(ymd)를 먼저 사용한다.
private class InsertAndVerifyDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// 栄養価をGoogleへ書き込む
updateFitnessDataNutrition(mYmd, mRecordNutritionValueEntity);
return null;
}
}
private void updateFitnessDataNutrition(String ymd, NutritionEntity entity) {
DataSource dataSource = new DataSource.Builder()
.setAppPackageName(getPackageName())
.setDataType(DataType.TYPE_NUTRITION)
.setName(ymd)
.setType(DataSource.TYPE_RAW)
.build();
DataPoint dataPoint = DataPoint.create(dataSource);
dataPoint.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS);
dataPoint.getValue(Field.FIELD_FOOD_ITEM).setString("Asken Diet"); // アプリ名などを記載しておくとgoogle fitアプリでデータ元みたいに表示される
float calorie = entity.values.calorie.val;
float protein = entity.values.protein.val;
float fat = entity.values.fat.val;
float carbs = entity.values.carbohydrate.val;
// 摂取カロリー (kcal)
dataPoint.getValue(Field.FIELD_NUTRIENTS).setKeyValue(Field.NUTRIENT_CALORIES, calorie);
// タンパク質(g)
dataPoint.getValue(Field.FIELD_NUTRIENTS).setKeyValue(Field.NUTRIENT_PROTEIN, protein);
// 脂肪(g)
dataPoint.getValue(Field.FIELD_NUTRIENTS).setKeyValue(Field.NUTRIENT_TOTAL_FAT, fat);
// 炭水化物(g)
dataPoint.getValue(Field.FIELD_NUTRIENTS).setKeyValue(Field.NUTRIENT_TOTAL_CARBS, carbs);
DataSet dataSet = DataSet.create(dataSource);
dataSet.add(dataPoint);
DataUpdateRequest request = new DataUpdateRequest.Builder()
.setDataSet(dataSet)
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
Status updateStatus = Fitness.HistoryApi.updateData(mClient, request).await(1, TimeUnit.MINUTES);
if (!updateStatus.isSuccess()) {
Timber.i("There was a problem inserting the dataset nutrition");
}
}
또 손 옆에만 개발하면 칼로리를 쓰지 않으면 구글 핏 앱이 붕괴할 수 있다.Google Fit 애플리케이션을 통해 등록 데이터 확인
영양 데이터 로그인이 정상적으로 완료되면 Google Fit 애플리케이션을 통해 PFC 데이터를 확인할 수 있습니다.
Reference
이 문제에 관하여(Google Fit에 영양 데이터 등록(PFC)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cozzbox/items/7e9e5da13d54e36acd72텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)