2014-10-15 3 views
0

Я пытаюсь использовать образец базовой библиотеки, который хранит данные, а затем читает их, но в моем случае код застревает в вызове вызова insert.await не возвращает ничего, что я пытался использовать асинхронным способом, здесь является кодомОбразец GoogleFit не работает

com.google.android.gms.common.api.Status insertStatus = 
Fitness.HistoryApi.insert(mClient, insertRequest).await(1, TimeUnit.MINUTES); 
+0

Как выглядит ваш insertRequest? И разрешен ли mClient и подключен? – Joanna

ответ

1

Вы запросили правильные разрешения?

Согласно этому образцу Google Fit, для разрешения «Активность» требуется только разрешение. Если вы измените тип данных, используемый в этом примере для других, убедитесь, что вы устанавливаете права доступа. Прочтите раздел авторизации в Google Fit Doc для получения дополнительной информации.

Вы можете добавить несколько разрешений, просто добавив новую область для клиента:

// Create the Google API Client 
    mClient = new GoogleApiClient.Builder(this) 
      .addApi(Fitness.API) 
      .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) 
      .addScope(new Scope(Scopes.FITNESS_BODY_READ_WRITE)) 
      .addScope(new Scope(Scopes.FITNESS_LOCATION_READ_WRITE)) 
    ... 
0

Чтобы вставить DATATYPE в Google подходят вы должны создать набор данных одного и того же типа и убедитесь, что вы построили GoogleApiClient с соответствующим Областей Like jose сказал выше. Ниже приведен пример установки высоты в google fit

public boolean saveUserHeight(int heightCentimiters) { 
    // to post data 
    float height = ((float) heightCentimiters)/100.0f; 
    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(); 
    DataSet heightDataSet = createDataForRequest(DataType.TYPE_HEIGHT, // for 
      DataSource.TYPE_RAW, height, // weight in kgs 
      startTime, // start time 
      endTime, // end time 
      TimeUnit.MILLISECONDS // Time Unit, for example, 
            // TimeUnit.MILLISECONDS 
    ); 
    com.google.android.gms.common.api.Status heightInsertStatus = Fitness.HistoryApi 
      .insertData(fitnessClient, heightDataSet).await(1, 
        TimeUnit.MINUTES); 
    if (heightInsertStatus.isSuccess()) { 
     //Log.e("Height", heightCentimiters+"Inserted"); 
    } else { 
     //Log.e("Height", "inserted failed"); 
    } 
    return heightInsertStatus.isSuccess(); 
}