public void AddFoodItem(FoodItem item) { var quantityType = HKQuantityType.GetQuantityType(HKQuantityTypeIdentifierKey.DietaryEnergyConsumed); var quantity = HKQuantity.FromQuantity(HKUnit.Joule, item.Joules); var now = NSDate.Now; var metadata = new NSDictionary(HKMetadataKey.FoodType, item.Name); var caloriesSample = HKQuantitySample.FromType(quantityType, quantity, now, now, metadata); HealthStore.SaveObject(caloriesSample, (success, error) => { if (success) { FoodItems.Insert(item, 0); var indexPathForInsertedFoodItem = NSIndexPath.FromRowSection(0, 0); InvokeOnMainThread(() => { TableView.InsertRows(new NSIndexPath[] { indexPathForInsertedFoodItem }, UITableViewRowAnimation.Automatic); }); } else { Console.WriteLine("An error occured saving the food {0}. In your app, try to handle this gracefully. " + "The error was: {1}.", item.Name, error); } }); }
public void SaveWorkout() { // Obtain the `HKObjectType` for active energy burned. var activeEnergyType = HKQuantityType.Create(HKQuantityTypeIdentifier.ActiveEnergyBurned); if (activeEnergyType == null) { return; } var beginDate = WorkoutBeginDate; var endDate = WorkoutEndDate; var timeDifference = endDate.Subtract(beginDate); double duration = timeDifference.TotalSeconds; NSDictionary metadata = null; var workout = HKWorkout.Create(HKWorkoutActivityType.Walking, (NSDate)beginDate, (NSDate)endDate, duration, CurrentActiveEnergyQuantity, HKQuantity.FromQuantity(HKUnit.Mile, 0.0), metadata); var finalActiveEnergySamples = ActiveEnergySamples; if (HealthStore.GetAuthorizationStatus(activeEnergyType) != HKAuthorizationStatus.SharingAuthorized || HealthStore.GetAuthorizationStatus(HKObjectType.GetWorkoutType()) != HKAuthorizationStatus.SharingAuthorized) { return; } HealthStore.SaveObject(workout, (success, error) => { if (!success) { Console.WriteLine($"An error occured saving the workout. In your app, try to handle this gracefully. The error was: {error}."); return; } if (finalActiveEnergySamples.Count > 0) { HealthStore.AddSamples(finalActiveEnergySamples.ToArray(), workout, (addSuccess, addError) => { // Handle any errors if (addError != null) { Console.WriteLine($"An error occurred adding the samples. In your app, try to handle this gracefully. The error was: {error.ToString()}."); } }); } }); }
void SaveWeightIntoHealthStore(double value) { var weightQuantity = HKQuantity.FromQuantity(HKUnit.Pound, value); var weightType = HKQuantityType.GetQuantityType(HKQuantityTypeIdentifierKey.BodyMass); var weightSample = HKQuantitySample.FromType(weightType, weightQuantity, NSDate.Now, NSDate.Now, new NSDictionary()); HealthStore.SaveObject(weightSample, (success, error) => { if (!success) { Console.WriteLine("An error occured saving the weight sample {0}. " + "In your app, try to handle this gracefully. The error was: {1}.", weightSample, error.LocalizedDescription); return; } UpdateUsersWeight(); }); }
void SaveHeightIntoHealthStore(double value) { var heightQuantity = HKQuantity.FromQuantity(HKUnit.Inch, value); var heightType = HKQuantityType.GetQuantityType(HKQuantityTypeIdentifierKey.Height); var heightSample = HKQuantitySample.FromType(heightType, heightQuantity, NSDate.Now, NSDate.Now, new NSDictionary()); HealthStore.SaveObject(heightSample, (success, error) => { if (!success) { Console.WriteLine("An error occured saving the height sample {0}. " + "In your app, try to handle this gracefully. The error was: {1}.", heightSample, error); return; } UpdateUsersHeight(); }); }
public void AddStepCountEntry(StepCountEntry entry) { var date = new NSDate(); var quantityType = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.StepCount); var countUnit = HKUnit.Count; var quantity = HKQuantity.FromQuantity(countUnit, entry.Count); var sample = HKQuantitySample.FromType(quantityType, quantity, date, date); HealthStore.SaveObject(sample, new Action <bool, NSError>((success, error) => { if (!success || error != null) { //There may have been an add error for some reason. AlertManager.ShowError("Health Kit", "Unable to add step count sample: " + error); } else { //Refresh all app wide blood glucose UI fields. RefreshQuantityValue(HKQuantityTypeIdentifierKey.StepCount, quantityType); } })); }
/// <summary> /// This method handles all the HealthKit gymnastics to add a blood glucose entry to the HealthKit data. /// </summary> /// <param name="entry">Entry.</param> public void AddBloodGlucoseEntry(BloodGlucoseEntry entry) { var date = new NSDate(); var quantityType = HKObjectType.GetQuantityType(HKQuantityTypeIdentifierKey.BloodGlucose); var mgPerDL = HKUnit.FromString("mg/dL"); var quantity = HKQuantity.FromQuantity(mgPerDL, entry.BloodGlucoseValue); var sample = HKQuantitySample.FromType(quantityType, quantity, date, date); HealthStore.SaveObject(sample, new Action <bool, NSError>((success, error) => { if (!success || error != null) { //There may have been an add error for some reason. AlertManager.ShowError("Health Kit", "Unable to add glucose sample: " + error); } else { //Refresh all app wide blood glucose UI fields. RefreshQuantityValue(HKQuantityTypeIdentifierKey.BloodGlucose, quantityType); } })); }