/******************************************************************************* Copyright © 2015-2022 PICO Technology Co., Ltd.All rights reserved. NOTICE:All information contained herein is, and remains the property of PICO Technology Co., Ltd. The intellectual and technical concepts contained herein are proprietary to PICO Technology Co., Ltd. and may be covered by patents, patents in process, and are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is strictly forbidden unless prior written permission is obtained from PICO Technology Co., Ltd. *******************************************************************************/ using System; using Pico.Platform.Models; using UnityEngine; namespace Pico.Platform { /** * \ingroup Platform * * SportService provides multiple APIs for you to access * users' exercise data from the built-in PICO app — PICO Fitness. * When users are working out with PICO VR headsets, the app records * their exercise data, including exercise duration, calories burned, * exercise plan, preferences, and more. * With the APIs provided by the service, you can gather data to * understand the exercise habits of individuals, thereby providing * users with a better exercise experience. */ public static class SportService { /// /// Gets a user's basic information and exercise plan. /// /// The \ref Pico.Platform.Models.SportUserInfo class containing the following: /// * `Gender` /// * `Birthday` /// * `Stature`: The natural height in centimeters. /// * `Weight`: The weight in kilograms. /// * `SportLevel`: `1`-low; `2`-medium; `3`-high. /// * `DailyDurationInMinutes`: The planned daily exercise duration (in minutes). /// * `DaysPerWeek`: The planned days for exercise per week. /// * `SportTarget`: "lose weight" or "stay healthy". /// public static Task GetUserInfo() { if (!CoreService.Initialized) { Debug.LogError(CoreService.NotInitializedError); return null; } return new Task(CLIB.ppf_Sport_GetUserInfo()); } /// /// Gets a summary of the user's daily exercise data for a specified period within the recent 90 days. /// For example, if the period you set is between 2022/08/16 and 2022/08/18, the exercise data generated on 08/16, 08/17, and 08/18 will be returned. /// /// A DateTime struct defining the begin time of the period. The begin time should be no earlier than 90 days before the current time. /// A DateTime struct defining the end time of the period, . /// The \ref Pico.Platform.Models.SportDailySummaryList class containing the exercise data generated on each day within the specified period, including: /// * `Id`: Summary ID. /// * `Date`: The date when the data was generated. /// * `DurationInSeconds`: The actual daily exercise duration in seconds. /// * `PlanDurationInMinutes`: The planned daily exercise duration in minutes. /// * `Calorie`: The actual daily calorie burned. /// * `PlanCalorie`: The planned daily calorie to burn. /// public static Task GetDailySummary(DateTime beginTime, DateTime endTime) { if (!CoreService.Initialized) { Debug.LogError(CoreService.NotInitializedError); return null; } return new Task(CLIB.ppf_Sport_GetDailySummary(TimeUtil.DateTimeToMilliSeconds(beginTime), TimeUtil.DateTimeToMilliSeconds(endTime))); } /// /// Get a summary of the user's exercise data for a specified period within /// the recent 24 hours. The period should not exceed 24 hours. /// /// A DateTime struct defining the begin time of the period. The begin time should be no earlier than 24 hours before the current time. /// A DateTime struct defining the end time of the period. /// The \ref Pico.Platform.Models.SportSummary class containing the following: /// * `DurationInSeconds`: The actual exercise duration. /// * `Calorie`: The actual calorie burned. /// * `StartTime`: The start time you defined. /// * `EndTime`: The end time you defined. /// public static Task GetSummary(DateTime beginTime, DateTime endTime) { if (!CoreService.Initialized) { Debug.LogError(CoreService.NotInitializedError); return null; } return new Task(CLIB.ppf_Sport_GetSummary(TimeUtil.DateTimeToMilliSeconds(beginTime), TimeUtil.DateTimeToMilliSeconds(endTime))); } } }