static DataReadRequest queryStepsData() { DateTime endTime = DateTime.Now; //DateTime startTime = endTime.Subtract(TimeSpan.FromDays(7)); DateTime startTime = DateTime.Today; long endTimeElapsed = GetMsSinceEpochAsLong(endTime); long startTimeElapsed = GetMsSinceEpochAsLong(startTime); Log.Info("googleFitFetch", "Range Start: " + startTime.ToString(DATE_FORMAT)); Log.Info("googleFitFetch", "Range End: " + endTime.ToString(DATE_FORMAT)); DataSource source = new DataSource.Builder() .SetAppPackageName("com.google.android.gms") .SetDataType(Android.Gms.Fitness.Data.DataType.TypeStepCountDelta) .SetType(DataSource.TypeDerived) .SetStreamName("estimated_steps") .Build(); var readRequest = new DataReadRequest.Builder() .Aggregate(source, Android.Gms.Fitness.Data.DataType.AggregateStepCountDelta) .BucketByTime(1, TimeUnit.Days) .SetTimeRange(startTimeElapsed, endTimeElapsed, TimeUnit.Milliseconds) .Build(); return(readRequest); }
DataSet InsertFitnessData() { Log.Info(TAG, "Creating a new data insert request"); // Set a start and end time for our data, using a start time of 1 hour before this moment. DateTime endTime = DateTime.Now; DateTime startTime = endTime.Subtract(TimeSpan.FromHours(1)); long endTimeElapsed = GetMsSinceEpochAsLong(endTime); long startTimeElapsed = GetMsSinceEpochAsLong(startTime); // Create a data source var dataSource = new DataSource.Builder() .SetAppPackageName(this) .SetDataType(DataType.TypeStepCountDelta) .SetName(TAG + " - step count") .SetType(DataSource.TypeRaw) .Build(); // Create a data set const int stepCountDelta = 1000; var dataSet = DataSet.Create(dataSource); DataPoint dataPoint = dataSet.CreateDataPoint() .SetTimeInterval(startTimeElapsed, endTimeElapsed, TimeUnit.Milliseconds); dataPoint.GetValue(Field.FieldSteps).SetInt(stepCountDelta); dataSet.Add(dataPoint); return(dataSet); }
DataSet InsertFitnessData() { Log.Info(TAG, "Creating a new data insert request"); var epoch = new DateTime(1970, 1, 1); var now = DateTime.UtcNow; var endTime = (now - epoch).TotalMilliseconds; var startTime = (now.Subtract(TimeSpan.FromHours(1)) - epoch).TotalMilliseconds; // Create a data source var dataSource = new DataSource.Builder() .SetAppPackageName(this) .SetDataType(DataType.TypeStepCountDelta) .SetName(TAG + " - step count") .SetType(DataSource.TypeRaw) .Build(); // Create a data set const int stepCountDelta = 1000; var dataSet = DataSet.Create(dataSource); var dataPoint = dataSet.CreateDataPoint() .SetTimeInterval((long)startTime, (long)endTime, TimeUnit.Milliseconds); dataPoint.GetValue(Field.FieldSteps).SetInt(stepCountDelta); dataSet.Add(dataPoint); return(dataSet); }
private async Task testSteps3() { DataSource dataSource = new DataSource.Builder() .SetAppPackageName("com.google.android.gms") .SetDataType(DataType.TypeStepCountDelta) //.SetDataType(DataType.AggregateStepCountDelta) .SetType(DataSource.TypeDerived) .SetStreamName("estimated_steps") .Build(); var cal = Calendar.Instance; var now = new Date(); cal.Time = now; var endTime = cal.TimeInMillis; cal.Add(CalendarField.WeekOfYear, -1); var startTime = cal.TimeInMillis; DataReadRequest readRequest = new DataReadRequest.Builder() //.Aggregate(DataType.TypeStepCountDelta, DataType.AggregateStepCountDelta) //.Aggregate(dataSource, DataType.AggregateStepCountDelta) .Aggregate(dataSource, DataType.TypeStepCountDelta) .BucketByTime(1, TimeUnit.Days) .SetTimeRange(startTime, endTime, TimeUnit.Milliseconds) .Build(); var dataReadResult = await FitnessClass.HistoryApi.ReadDataAsync(client, readRequest); if (dataReadResult.Status.IsSuccess) { foreach (var item in dataReadResult.DataSets) { var a = item; } foreach (Bucket item in dataReadResult.Buckets) { var t = item.DataSets; var a = item; foreach (var ds in item.DataSets) { foreach (var dp in ds.DataPoints) { foreach (var field in dp.DataType.Fields) { var b = dp.GetValue(field); } } } } } }
public async void AddStepCountEntry(StepCountEntry entry) { Log.Info(TAG, "Creating a new data insert request"); // Set a start and end time for our data, using a start time of 1 hour before this moment. DateTime endTime = DateTime.Now; DateTime startTime = endTime.Subtract(TimeSpan.FromHours(1)); long endTimeElapsed = GetMsSinceEpochAsLong(endTime); long startTimeElapsed = GetMsSinceEpochAsLong(startTime); // Create a data source var dataSource = new DataSource.Builder() .SetAppPackageName(this._activity) .SetDataType(Android.Gms.Fitness.Data.DataType.TypeStepCountDelta) .SetName(TAG + " - step count") .SetType(DataSource.TypeRaw) .Build(); // Create a data set //const int stepCountDelta = 1000; var dataSet = DataSet.Create(dataSource); DataPoint dataPoint = dataSet.CreateDataPoint() .SetTimeInterval(startTimeElapsed, endTimeElapsed, TimeUnit.Milliseconds); dataPoint.GetValue(Field.FieldSteps).SetInt(Convert.ToInt32(entry.Count)); dataSet.Add(dataPoint); Log.Info(TAG, "Inserting the dataset in the History API"); var insertStatus = await FitnessClass.HistoryApi.InsertDataAsync(mClient, dataSet); if (!insertStatus.IsSuccess) { Log.Info(TAG, "There was a problem inserting the dataset."); return; } Log.Info(TAG, "Data insert was successful!"); RefreshHealthStateData(); }
SessionInsertRequest InsertFitnessSession() { Log.Info(TAG, "Creating a new session for an afternoon run"); var epoch = new DateTime(1970, 1, 1); var now = DateTime.UtcNow; long endTime = (long)(now - epoch).TotalMilliseconds; long endWalkTime = (long)(now.Subtract(TimeSpan.FromDays(10)) - epoch).TotalMilliseconds; long startWalkTime = (long)(now.Subtract(TimeSpan.FromDays(20)) - epoch).TotalMilliseconds; long startTime = (long)(now.Subtract(TimeSpan.FromMinutes(30)) - epoch).TotalMilliseconds; var speedDataSource = new DataSource.Builder() .SetAppPackageName(PackageName) .SetDataType(DataType.TypeSpeed) .SetName(SAMPLE_SESSION_NAME + "- speed") .SetType(DataSource.TypeRaw) .Build(); const float runSpeedMps = 10; const float walkSpeedMps = 3; // Create a data set of the run speeds to include in the session. DataSet speedDataSet = DataSet.Create(speedDataSource); DataPoint firstRunSpeed = speedDataSet.CreateDataPoint() .SetTimeInterval(startTime, startWalkTime, TimeUnit.Milliseconds); firstRunSpeed.GetValue(Field.FieldSpeed).SetFloat(runSpeedMps); speedDataSet.Add(firstRunSpeed); DataPoint walkSpeed = speedDataSet.CreateDataPoint() .SetTimeInterval(startWalkTime, endWalkTime, TimeUnit.Milliseconds); walkSpeed.GetValue(Field.FieldSpeed).SetFloat(walkSpeedMps); speedDataSet.Add(walkSpeed); DataPoint secondRunSpeed = speedDataSet.CreateDataPoint() .SetTimeInterval(endWalkTime, endTime, TimeUnit.Milliseconds); secondRunSpeed.GetValue(Field.FieldSpeed).SetFloat(runSpeedMps); speedDataSet.Add(secondRunSpeed); // [START build_insert_session_request_with_activity_segments] // Create a second DataSet of ActivitySegments to indicate the runner took a 10-minute walk // in the middle of the run. var activitySegmentDataSource = new DataSource.Builder() .SetAppPackageName(PackageName) .SetDataType(DataType.TypeActivitySegment) .SetName(SAMPLE_SESSION_NAME + "-activity segments") .SetType(DataSource.TypeRaw) .Build(); DataSet activitySegments = DataSet.Create(activitySegmentDataSource); DataPoint firstRunningDp = activitySegments.CreateDataPoint() .SetTimeInterval(startTime, startWalkTime, TimeUnit.Milliseconds); firstRunningDp.GetValue(Field.FieldActivity).SetActivity(FitnessActivities.Running); activitySegments.Add(firstRunningDp); DataPoint walkingDp = activitySegments.CreateDataPoint() .SetTimeInterval(startWalkTime, endWalkTime, TimeUnit.Milliseconds); walkingDp.GetValue(Field.FieldActivity).SetActivity(FitnessActivities.Walking); activitySegments.Add(walkingDp); DataPoint secondRunningDp = activitySegments.CreateDataPoint() .SetTimeInterval(endWalkTime, endTime, TimeUnit.Milliseconds); secondRunningDp.GetValue(Field.FieldActivity).SetActivity(FitnessActivities.Running); activitySegments.Add(secondRunningDp); var 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(); var insertRequest = new SessionInsertRequest.Builder() .SetSession(session) .AddDataSet(speedDataSet) .AddDataSet(activitySegments) .Build(); return(insertRequest); }
DataSet InsertFitnessData () { Log.Info (TAG, "Creating a new data insert request"); // Set a start and end time for our data, using a start time of 1 hour before this moment. DateTime endTime = DateTime.Now; DateTime startTime = endTime.Subtract (TimeSpan.FromHours (1)); long endTimeElapsed = GetMsSinceEpochAsLong (endTime); long startTimeElapsed = GetMsSinceEpochAsLong (startTime); // Create a data source var dataSource = new DataSource.Builder () .SetAppPackageName (this) .SetDataType (DataType.TypeStepCountDelta) .SetName (TAG + " - step count") .SetType (DataSource.TypeRaw) .Build (); // Create a data set const int stepCountDelta = 1000; var dataSet = DataSet.Create (dataSource); DataPoint dataPoint = dataSet.CreateDataPoint () .SetTimeInterval (startTimeElapsed, endTimeElapsed, TimeUnit.Milliseconds); dataPoint.GetValue (Field.FieldSteps).SetInt (stepCountDelta); dataSet.Add (dataPoint); return dataSet; }
SessionInsertRequest InsertFitnessSession() { Log.Info(TAG, "Creating a new session for an afternoon run"); var epoch = new DateTime (1970, 1, 1); var now = DateTime.UtcNow; long endTime = (long)(now - epoch).TotalMilliseconds; long endWalkTime = (long)(now.Subtract (TimeSpan.FromMinutes (10)) - epoch).TotalMilliseconds; long startWalkTime = (long)(now.Subtract (TimeSpan.FromMinutes (20)) - epoch).TotalMilliseconds; long startTime = (long)(now.Subtract (TimeSpan.FromMinutes (30)) - epoch).TotalMilliseconds; var speedDataSource = new DataSource.Builder() .SetAppPackageName (PackageName) .SetDataType (DataType.TypeSpeed) .SetName (SAMPLE_SESSION_NAME + "- speed") .SetType (DataSource.TypeRaw) .Build (); const float runSpeedMps = 10; const float walkSpeedMps = 3; // Create a data set of the run speeds to include in the session. DataSet speedDataSet = DataSet.Create (speedDataSource); DataPoint firstRunSpeed = speedDataSet.CreateDataPoint () .SetTimeInterval (startTime, startWalkTime, TimeUnit.Milliseconds); firstRunSpeed.GetValue (Field.FieldSpeed).SetFloat (runSpeedMps); speedDataSet.Add (firstRunSpeed); DataPoint walkSpeed = speedDataSet.CreateDataPoint () .SetTimeInterval (startWalkTime, endWalkTime, TimeUnit.Milliseconds); walkSpeed.GetValue (Field.FieldSpeed).SetFloat (walkSpeedMps); speedDataSet.Add (walkSpeed); DataPoint secondRunSpeed = speedDataSet.CreateDataPoint () .SetTimeInterval (endWalkTime, endTime, TimeUnit.Milliseconds); secondRunSpeed.GetValue (Field.FieldSpeed).SetFloat(runSpeedMps); speedDataSet.Add (secondRunSpeed); // [START build_insert_session_request_with_activity_segments] // Create a second DataSet of ActivitySegments to indicate the runner took a 10-minute walk // in the middle of the run. var activitySegmentDataSource = new DataSource.Builder() .SetAppPackageName (PackageName) .SetDataType (DataType.TypeActivitySegment) .SetName (SAMPLE_SESSION_NAME + "-activity segments") .SetType (DataSource.TypeRaw) .Build (); DataSet activitySegments = DataSet.Create (activitySegmentDataSource); DataPoint firstRunningDp = activitySegments.CreateDataPoint () .SetTimeInterval (startTime, startWalkTime, TimeUnit.Milliseconds); firstRunningDp.GetValue (Field.FieldActivity).SetActivity (FitnessActivities.Running); activitySegments.Add (firstRunningDp); DataPoint walkingDp = activitySegments.CreateDataPoint () .SetTimeInterval (startWalkTime, endWalkTime, TimeUnit.Milliseconds); walkingDp.GetValue (Field.FieldActivity).SetActivity (FitnessActivities.Walking); activitySegments.Add (walkingDp); DataPoint secondRunningDp = activitySegments.CreateDataPoint () .SetTimeInterval (endWalkTime, endTime, TimeUnit.Milliseconds); secondRunningDp.GetValue (Field.FieldActivity).SetActivity (FitnessActivities.Running); activitySegments.Add (secondRunningDp); var 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 (); var insertRequest = new SessionInsertRequest.Builder() .SetSession (session) .AddDataSet (speedDataSet) .AddDataSet (activitySegments) .Build (); return insertRequest; }
private async Task testSteps2() { DataSource dataSource = new DataSource.Builder() .SetAppPackageName("com.google.android.gms") .SetDataType(DataType.TypeStepCountDelta) //.SetDataType(DataType.AggregateStepCountDelta) .SetType(DataSource.TypeDerived) .SetStreamName("estimated_steps") .Build(); var cal = Calendar.Instance; var now = new Date(); cal.Time = now; var endTime = cal.TimeInMillis; cal.Add(CalendarField.WeekOfYear, -1); var startTime = cal.TimeInMillis; DataReadRequest readRequest = new DataReadRequest.Builder() //.Aggregate(DataType.TypeStepCountDelta, DataType.AggregateStepCountDelta) .Aggregate(dataSource, DataType.AggregateStepCountDelta) .BucketByTime(1, TimeUnit.Days) .SetTimeRange(startTime, endTime, TimeUnit.Milliseconds) .Build(); var dataReadResult = await FitnessClass.HistoryApi.ReadDataAsync(client, readRequest); //foreach (var dataSet in dataReadResult.DataSets) //{ // var d = dataSet.DataType; //} //var test = dataReadResult.GetDataSet(DataType.TypeStepCountDelta); //var aggregatedSteps = dataReadResult.GetDataSet(DataType.AggregateStepCountDelta); //foreach (var dataPoint in aggregatedSteps.DataPoints) //{ // var a = dataPoint.GetValue(Field.FieldSteps); //} //foreach (var bucket in dataReadResult.Buckets) //{ // var dataSet = bucket.DataSets[0]; // var activity = bucket.Activity; // var bucketType = bucket.BucketType; //} DataSet test = dataReadResult.GetDataSet(DataType.TypeStepCountDelta); var stepData = dataReadResult.GetDataSet(DataType.AggregateStepCountDelta); foreach (var dp in test.DataPoints) { foreach (var field in dp.DataType.Fields) { var a = dp.GetValue(field); } } int totalSteps = 0; foreach (DataPoint dp in stepData.DataPoints) { foreach (Field field in dp.DataType.Fields) { int steps = dp.GetValue(field).AsInt(); totalSteps += steps; } } }