2014-11-10 2 views
1

Работа с API Google Fit в настоящий момент и с небольшим количеством проблем с API сеансов. Я пытаюсь вставить сеанс для тренировок моего приложения, но документация немного запутанна.Объект DataSet для API Google Fit

В этом фрагменте кода приведен пример информационной страницы Google. Где именно вы получаете DataSet объекты и/или как создать их из существующих данных

// Create a session with metadata about the activity. 
    Session session = new Session.Builder() 
      .setName(SAMPLE_SESSION_NAME) 
      .setDescription("Long run around Shoreline Park") 
      .setIdentifier("UniqueIdentifierHere") 
      .setActivity(FitnessActivities.RUNNING) 
      .setStartTime(startTime, TimeUnit.MILLISECONDS) 
      .setEndTime(endTime, TimeUnit.MILLISECONDS) 
      .build(); 

    // Build a session insert request 
    SessionInsertRequest insertRequest = new SessionInsertRequest.Builder() 
      .setSession(session) 
      .addDataSet(runningDataSet) //where does this come from??? 
      .build(); 

Вот ссылка на страницу API Google Sessions (что я использую для этого кода):

Google Fit API (Sessions API)

ответ

2

DataSet происходит от DataSource, так что вам придется создать DataSource первый, а затем просто DataSet.create (yourDataSource);

Например:

DataSource dataSource = new DataSource.Builder() 
       .setType(DataSource.TYPE_RAW) 
       .setDataType(exerciseDataType) 
       .setName(exercise.name) 
       .setAppPackageName(this) 
       .build(); 

    DataSet dataSet = DataSet.create(dataSource); 

    ... 

    dataSet.createDataPoint()....insert values :-) 
0

Я работаю на одно и то же прямо сейчас.

Если вы хотите просмотреть полные образцы с использованием Google Fit API, вы можете посетить следующую ссылку: https://github.com/googlesamples/android-fit.

Недостающий код ищете

Calendar cal = Calendar.getInstance(); 
    Date now = new Date(); 
    cal.setTime(now); 
    // Set a range of the run, using a start time of 10 minutes before this moment, 
    long endTime = cal.getTimeInMillis(); 
    cal.add(Calendar.MINUTE, -10); 
    long startTime = cal.getTimeInMillis(); 

    // Create a data source 
    DataSource runningDataSource = new DataSource.Builder() 
      .setAppPackageName(this.getPackageName()) 
      .setDataType(DataType.TYPE_SPEED) 
      .setName(SAMPLE_SESSION_NAME + "-running speed") 
      .setType(DataSource.TYPE_RAW) 
      .build(); 

    float runSpeedMps = 10; 
    // Create a data set of the running speeds to include in the session. 
    DataSet runningDataSet = DataSet.create(runningDataSource); 
    runningDataSet.add(
      runningDataSet.createDataPoint() 
        .setTimeInterval(startTime, startTime, TimeUnit.MILLISECONDS) 
        .setFloatValues(runSpeedMps) 
    ); 
Смежные вопросы