2017-03-08 16 views
1

次のコードは、Googleカレンダーアプリにカロリーデータを挿入するためのコードです。このコードはgooglefitアプリでステップデータの挿入を完全に行いますが、カロリーやgooglefitアプリ。 これを手伝ってください。アンドロイドコードを使用してgooglefitアプリにカロリーデータを挿入する方法

Calendar cal = Calendar.getInstance(); 
    Date now = new Date(); 
    cal.setTime(now); 
    long endTime = cal.getTimeInMillis(); 
    cal.add(Calendar.HOUR_OF_DAY, -1); 
    long startTime = cal.getTimeInMillis(); 

    // Create a data source 
    DataSource dataSource = new DataSource.Builder() 
      .setAppPackageName(context) 
      .setDataType(DataType.TYPE_CALORIES_EXPENDED) 
      .setStreamName(TAG + " - Calorie") 
      .setType(DataSource.TYPE_RAW) 
      .build(); 

    // Create a data set 
    int CalDelta = 50; 
    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); 
    dataPoint.getValue(Field.FIELD_CALORIES).setFloat(CalDelta); 
    dataSet.add(dataPoint); 

答えて

0

Googleフィットアプリにデータを挿入するには、Fitness Historyで作業します。

最初にデータを作成するには、インスタンスを設定します。

// Set a start and end time for our data, using a start time of 1 hour before this moment. 
Calendar cal = Calendar.getInstance(); 
Date now = new Date(); 
cal.setTime(now); 
long endTime = cal.getTimeInMillis(); 
cal.add(Calendar.HOUR_OF_DAY, -1); 
long startTime = cal.getTimeInMillis(); 

// Create a data source 
DataSource dataSource = new DataSource.Builder() 
     .setAppPackageName(this) 
     .setDataType(DataType.TYPE_STEP_COUNT_DELTA) 
     .setStreamName(TAG + " - step count") 
     .setType(DataSource.TYPE_RAW) 
     .build(); 

// Create a data set 
int stepCountDelta = 950; 
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); 
dataPoint.getValue(Field.FIELD_STEPS).setInt(stepCountDelta); 
dataSet.add(dataPoint); 

あなたがデータセットのインスタンスを作成した後、HistoryApi.insertData メソッドを使用して 確認するためにコールバックメソッドを同期的に待つか提供挿入の状態。あなたは、データセットを作成した後

// Then, invoke the History API to insert the data and await the result, which is 
// possible here because of the {@link AsyncTask}. Always include a timeout when calling 
// await() to prevent hanging that can occur from the service being shutdown because 
// of low memory or other conditions. 
Log.i(TAG, "Inserting the dataset in the History API."); 
com.google.android.gms.common.api.Status insertStatus = 
     Fitness.HistoryApi.insertData(mClient, dataSet) 
       .await(1, TimeUnit.MINUTES); 

// Before querying the data, check to see if the insertion succeeded. 
if (!insertStatus.isSuccess()) { 
    Log.i(TAG, "There was a problem inserting the dataset."); 
    return null; 
} 

// At this point, the data has been inserted and can be read. 
Log.i(TAG, "Data insert was successful!"); 
+0

リピートに感謝します。 –

+0

ステップのコードは上ですが、私はgooglefitにCALORIESのデータを追加したい –

-1
private DataSet getCaloriesDataSet(float killoCalories) { 

    Calendar cal = Calendar.getInstance(); 

    Date now = new Date(); 
    cal.setTime(now); 
    long endTime = cal.getTimeInMillis(); 
    cal.add(Calendar.SECOND, -1); 
    long startTime = cal.getTimeInMillis(); 

    // Create a data source 
    DataSource dataSource = new DataSource.Builder() 
      .setAppPackageName("com.your.fitness.app") 
      .setDataType(DataType.TYPE_CALORIES_EXPENDED) 
      .setType(DataSource.TYPE_RAW) 
      .build(); 

    // Create a data set 
    // int stepCountDelta = 950; 
    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); 
    dataPoint.getValue(Field.FIELD_CALORIES).setFloat(killoCalories); 

    dataSet.add(dataPoint); 
    // [END build_insert_data_request] 

    return dataSet; 
} 

DataSet calorieDataSet=getCaloriesDataSet(0.1f); 
com.google.android.gms.common.api.Status insertStatus = 
    Fitness.HistoryApi.insertData(mClient, calorieDataSet) 
      .await(1, TimeUnit.MINUTES); 

注:カロリーをカロリーに設定します。 100カロリーが得られたら、このメソッドに100/1000 = 0.1を渡します。それ以外の場合、Google適合APIは範囲外の例外を介してフィールドを通過します。

+0

いいえ、動作しません! カル読み取りの変化なし –

関連する問題