public async void DistanceByPeriod(DateTime start, DateTime end, Action <IEnumerable <double> > act)
        {
            start = TimeZoneInfo.ConvertTimeToUtc(start);
            end   = TimeZoneInfo.ConvertTimeToUtc(end);

            using (DataReadRequest distanceRequest = CreateRequest(DataType.TypeDistanceDelta, DataType.AggregateDistanceDelta, start, end))
                using (IResult distanceResult = await ReadData(distanceRequest))
                    act?.Invoke(GetFloatFromResult(distanceResult).Select(x => (double)(x)));
        }
        public async void StepsByPeriod(DateTime start, DateTime end, Action <IEnumerable <int> > act)
        {
            start = TimeZoneInfo.ConvertTimeToUtc(start);
            end   = TimeZoneInfo.ConvertTimeToUtc(end);

            using (DataReadRequest stepRequest = CreateRequest(DataType.TypeStepCountDelta, DataType.AggregateStepCountDelta, start, end))
                using (IResult stepResult = await ReadData(stepRequest))
                    act?.Invoke(GetIntFromResult(stepResult));
        }
예제 #3
0
        async Task BuildFitnessClient()
        {
            var clientConnectionCallback = new ClientConnectionCallback();

            clientConnectionCallback.OnConnectedImpl = async() => {
                DataSet dataSet = InsertFitnessData();

                Log.Info(TAG, "Inserting the dataset in the History API");
                var insertStatus = (Statuses)FitnessClass.HistoryApi.InsertData(mClient, dataSet).Await(1, TimeUnit.Minutes);

                if (!insertStatus.IsSuccess)
                {
                    Log.Info(TAG, "There was a problem inserting the dataset.");
                    return;
                }

                Log.Info(TAG, "Data insert was successful!");

                DataReadRequest readRequest = QueryFitnessData();

                var dataReadResult = await FitnessClass.HistoryApi.ReadDataAsync(mClient, readRequest);

                PrintData(dataReadResult);
            };
            // Create the Google API Client
            mClient = new GoogleApiClient.Builder(this)
                      .AddApi(FitnessClass.HISTORY_API)
                      .AddScope(new Scope(Scopes.FitnessActivityReadWrite))
                      .AddConnectionCallbacks(clientConnectionCallback)
                      .AddOnConnectionFailedListener(result => {
                Log.Info(TAG, "Connection failed. Cause: " + result);
                if (!result.HasResolution)
                {
                    // Show the localized error dialog
                    GooglePlayServicesUtil.GetErrorDialog(result.ErrorCode, this, 0).Show();
                    return;
                }
                // The failure has a resolution. Resolve it.
                // Called typically when the app is not yet authorized, and an
                // authorization dialog is displayed to the user.
                if (!authInProgress)
                {
                    try {
                        Log.Info(TAG, "Attempting to resolve failed connection");
                        authInProgress = true;
                        result.StartResolutionForResult(this, REQUEST_OAUTH);
                    } catch (IntentSender.SendIntentException e) {
                        Log.Error(TAG, "Exception while starting resolution activity", e);
                    }
                }
            }).Build();
        }
        public async Task <double> FetchGoogleFitActiveMinutes()
        {
            DataReadRequest readRequest = queryActiveEnergy();

            var dataReadResult = await FitnessClass.HistoryApi.ReadDataAsync(mGoogleApiClient, readRequest);

            var totalActiveTime = 0.0;

            if (dataReadResult.Buckets.Count > 0)
            {
                foreach (Bucket bucket in dataReadResult.Buckets)
                {
                    if (bucket.Activity.Contains(FitnessActivities.Walking) || bucket.Activity.Contains(FitnessActivities.Running))
                    {
                        long activeTime = bucket.GetEndTime(TimeUnit.Minutes) - bucket.GetStartTime(TimeUnit.Minutes);
                        totalActiveTime = totalActiveTime + activeTime;
                    }
                }
            }
            PrintData(dataReadResult);
            return(totalActiveTime);
        }
        public async void FetchGoogleFitDistance()
        {
            DataReadRequest readRequest = queryDistance();

            var dataReadResult = await FitnessClass.HistoryApi.ReadDataAsync(mGoogleApiClient, readRequest);

            var distance = 0.0;

            if (dataReadResult.Buckets.Count > 0)
            {
                foreach (Bucket bucket in dataReadResult.Buckets)
                {
                    IList <DataSet> dataSets = bucket.DataSets;
                    foreach (DataSet dataSet in dataSets)
                    {
                        distance = distance + GetDataSetValuesSum(dataSet);
                    }
                }
            }

            PrintData(dataReadResult);
        }
 private async Task <IResult> ReadData(DataReadRequest request)
 => await FitnessClass.HistoryApi.ReadData(Client, request);
 public Task <DataReadResponse> ReadDataAsync(DataReadRequest p0)
 {
     return(ReadData(p0).AsAsync <DataReadResponse> ());
 }