نحوه ضبط یک تمرین

این سند نحوه ضبط یک تمرین با استفاده از Fitness REST API را شرح می دهد.

مرحله 1: راه اندازی یک پروژه

باید پروژه ای را در Google API Console راه اندازی کنید و دسترسی به Fitness REST API را فعال کنید، همانطور که در Getting Started توضیح داده شده است.

مرحله 2: برنامه خود را تأیید اعتبار کنید

برنامه شما باید درخواست‌های مربوط به Fitness API را با استفاده از یک نشانه دسترسی تأیید کند. برای به دست آوردن رمز دسترسی، برنامه شما دارای اعتبارنامه های خاص مشتری و محدوده دسترسی است، همانطور که در درخواست های مجاز توضیح داده شده است.

مرحله 3: یک منبع داده ایجاد کنید

منبع داده منبعی از داده های حسگر از نوع خاصی را نشان می دهد. همه داده‌های درج شده در فروشگاه تناسب اندام باید با منبع داده مرتبط باشند. می توانید یک بار منابع داده ایجاد کنید و از آنها برای جلسات بعدی استفاده مجدد کنید.

برای ایجاد یک منبع داده، یک درخواست HTTP تأیید شده با این پارامترها ارسال کنید:

روش HTTP
ارسال کنید
منبع

https://www.googleapis.com/fitness/v1/users/me/dataSources

شناسه کاربری me به کاربری اشاره دارد که توکن دسترسی او درخواست را مجاز می کند.

درخواست بدن
{
"name": "example-fit-heart-rate",
"dataStreamId":
    "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456",
"dataType": {
    "field": [{
        "name": "bpm",
        "format": "floatPoint"
    }],
    "name": "com.google.heart_rate.bpm"
},
"application": {
    "packageName": "com.example.fit.someapp",
    "version": "1.0"
},
"device": {
    "model": "example-fit-hrm-1",
    "version": "1",
    "type": "watch",
    "uid": "123456",
    "manufacturer":"Example Fit"
},
"type": "raw"
}

این درخواست یک منبع داده ایجاد می‌کند که نشان‌دهنده یک نمایشگر ضربان قلب است که داده‌های تناسب اندام از نوع com.google.heart_rate.bpm را ارائه می‌کند. شما باید شناسه منبع داده را مشخص کنید و می تواند هر مقداری باشد. شناسه منبع داده در این مثال از یک قرارداد نامگذاری معقول پیروی می کند که می توانید آن را اتخاذ کنید. اگر داده‌ها فقط توسط یک برنامه تولید شوند، مؤلفه دستگاه اختیاری است.

اگر درخواست موفقیت آمیز باشد، پاسخ یک کد وضعیت 200 OK است.

برای اطلاعات بیشتر در مورد منابع داده، به مرجع API برای منبع Users.dataSources مراجعه کنید.

مرحله 4: نقاط داده را اضافه کنید

شما از مجموعه داده ها برای درج نقاط داده در فروشگاه تناسب اندام استفاده می کنید. مجموعه داده مجموعه ای از نقاط داده از یک منبع داده واحد است که با زمان محدود شده است.

برای ایجاد یک مجموعه داده و افزودن امتیاز به آن، یک درخواست HTTP تأیید شده با این پارامترها ارسال کنید:

روش HTTP
پچ
منبع

https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.heart_rate.bpm:1234567890:Example%20Fit:example-fit-hrm-1:123456/datasets/1411053997000000000-1411057556000000000

URL شامل شناسه منبع داده و زمان شروع و پایان مجموعه داده در نانوثانیه است.

درخواست بدن
{
"minStartTimeNs": 1411053997000000000,
"maxEndTimeNs": 1411057556000000000,
"dataSourceId":
  "raw:com.google.heart_rate.bpm:1234567890:Example Fit:example-fit-hrm-1:123456",
"point": [
{
  "startTimeNanos": 1411053997000000000,
  "endTimeNanos": 1411053997000000000,
  "dataTypeName": "com.google.heart_rate.bpm",
  "value": [
    {
      "fpVal": 78.8
    }
  ]
},
{
  "startTimeNanos": 1411055000000000000,
  "endTimeNanos": 1411055000000000000,
  "dataTypeName": "com.google.heart_rate.bpm",
  "value": [
    {
      "fpVal": 89.1
    }
  ]
},
{
  "startTimeNanos": 1411057556000000000,
  "endTimeNanos": 1411057556000000000,
  "dataTypeName": "com.google.heart_rate.bpm",
  "value": [
    {
      "fpVal": 62.45
    }
  ]
}
]
}

این درخواست یک مجموعه داده با سه نقطه داده ضربان قلب در یک ساعت برای منبع داده در مرحله قبل ایجاد می کند.

اگر درخواست موفقیت آمیز باشد، پاسخ یک کد وضعیت 200 OK است.

برای اطلاعات بیشتر در مورد مجموعه داده ها، به مرجع API برای منبع Users.dataSources.datasets مراجعه کنید.

مهر زمانی معتبر ایجاد کنید

مهرهای زمانی در مثال بالا بر حسب نانوثانیه هستند. برای ایجاد مهر زمانی معتبر، می توانید از اسکریپت پایتون زیر استفاده کنید:

from datetime import datetime, timedelta
import calendar

def date_to_nano(ts):
    """
    Takes a datetime object and returns POSIX UTC in nanoseconds
    """
    return calendar.timegm(ts.utctimetuple()) * int(1e9)

if __name__ == '__main__':
    print 'Current time is %d' % date_to_nano(datetime.now())
    print 'Time 1 hour ago was %d' % date_to_nano(datetime.now() +
       timedelta(hours=-1))

مرحله 5: یک جلسه ایجاد کنید

اکنون که داده‌ها را در فروشگاه تناسب اندام درج کرده‌اید، می‌توانید جلسه‌ای را برای ارائه متادیتای اضافی برای این تمرین وارد کنید. جلسات بازه زمانی را نشان می دهد که در طی آن کاربران یک فعالیت تناسب اندام را انجام می دهند.

برای ایجاد یک جلسه برای این تمرین، یک درخواست HTTP تأیید شده با این پارامترها ارسال کنید:

روش HTTP
قرار دادن
منبع

https://www.googleapis.com/fitness/v1/users/me/sessions/ sessionId

sessionId دلخواه است و باید برای تمام جلسات مرتبط با کاربر احراز هویت شده منحصر به فرد باشد.

درخواست بدن
{
"id": "example-fit-1411053997",
"name": "Example Fit Run on Sunday Afternoon",
"description": "Example Fit Running Session",
"startTimeMillis": 1411053997000,
"endTimeMillis": 1411057556000,
"application": {
"name": "Foo Example App",
"version": "1.0"
},
"activityType": 8
}

نام جلسه ای را انتخاب کنید که برای انسان قابل خواندن و توصیفی باشد، زیرا ممکن است توسط سایر برنامه ها برای خلاصه کردن جلسه استفاده شود. زمان شروع و پایان جلسات بر حسب میلی ثانیه است (نه نانوثانیه). از همان نام بسته برای جلسات و منابع داده خود استفاده کنید. این باعث می‌شود داده‌ها سازگارتر باشند و اطمینان حاصل شود که اسناد داده‌ها به برنامه شما پیوند می‌یابند.

فاصله زمانی مشخص‌شده در این جلسه، داده‌های ضربان قلب را که قبلاً درج شده‌اند را پوشش می‌دهد، بنابراین Google Fit آن نقاط داده را با این جلسه مرتبط می‌کند.

برای اطلاعات بیشتر در مورد جلسات، به مرجع API برای منبع Users.sessions مراجعه کنید.

مرحله 6: بخش های فعالیت ایجاد کنید

بخش‌های فعالیت به شما کمک می‌کنند فعالیت‌های مختلف را در یک جلسه نشان دهید. بخش فعالیت یک بخش زمانی است که یک فعالیت واحد را پوشش می دهد. به عنوان مثال، اگر کاربر برای اجرای یک ساعته می رود، می توانید یک بخش فعالیت از نوع running (8) برای کل ساعت ایجاد کنید. اگر کاربر 25 دقیقه اجرا کند، 5 دقیقه استراحت کند، سپس نیم ساعت دیگر اجرا کند، می توانید سه بخش فعالیت متوالی از انواع running ، unknown و running ایجاد کنید.

ایجاد یک بخش فعالیت مانند افزودن هر نقطه داده دیگری است. برای ایجاد بخش های فعالیت، ابتدا یک منبع داده بخش فعالیت ایجاد کنید، سپس یک مجموعه داده ایجاد کنید و نقاط داده بخش فعالیت را به آن اضافه کنید.

مثال زیر سه بخش (دویدن، استراحت، و دویدن) را در بازه‌های زمانی مشابه با قرائت‌های ضربان قلب ایجاد می‌کند، با این فرض که قبلاً یک منبع داده بخش فعالیت ایجاد کرده‌اید و شناسه منبع داده "raw:com.google.activity.segment" است: 1234567890:Example Fit:example-fit-hrm-1:123456":

روش HTTP
پچ
منبع
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
درخواست بدن
{
"minStartTimeNs": 1411053997000000000,
"maxEndTimeNs": 1411057556000000000,
"dataSourceId":
  "raw:com.google.activity.segment:1234567890",
"point": [
{
  "startTimeNanos": 1411053997000000000,
  "endTimeNanos": 1411053997000000000,
  "dataTypeName": "com.google.activity.segment",
  "value": [
    {
      "intVal": 8
    }
  ]
},
{
  "startTimeNanos": 1411055000000000000,
  "endTimeNanos": 1411055000000000000,
  "dataTypeName": "com.google.activity.segment",
  "value": [
    {
      "intVal": 4
    }
  ]
},
{
  "startTimeNanos": 1411057556000000000,
  "endTimeNanos": 1411057556000000000,
  "dataTypeName": "com.google.activity.segment",
  "value": [
    {
      "intVal": 8
    }
  ]
}
]
}

این نقاط داده بخش فعالیت به منبع داده ای اضافه می شوند که به طور خاص برای رسیدگی به بخش های فعالیت ایجاد شده است. شما می توانید برای هر مجموعه ای از بخش ها یک منبع داده جدید ایجاد کنید، اما باید از منبعی که به نوع خاصی از جلسه، مانند در حال اجرا اختصاص داده شده است، مجددا استفاده کنید.

جلسات یک نوع فعالیت را مشخص می‌کنند که باید با فعالیت کلی کاربر مطابقت داشته باشد. حتی اگر کاربر هنگام دویدن استراحت کند، تمرین کلی همچنان یک دویدن است. به طور کلی نوع فعالیت برای جلسه با نوع بخش فعالیت غالب مطابقت دارد.

از نوع فعالیت ناشناخته (4) برای نشان دادن اینکه کاربر در حال استراحت است استفاده کنید، زیرا ممکن است ندانید کاربر در حال انجام چه کاری است: ممکن است ساکن باشد، یا در حال کشش باشد، در حال نوشیدن آب و غیره باشد. اگر می دانید کاربر حرکت نمی کند، می توانید از ثابت (3) استفاده کنید.

برای فهرست دقیق انواع فعالیت، به انواع فعالیت مراجعه کنید.

خلاصه

در این آموزش، شما منابع داده را برای انواع داده ها و بخش های فعالیت ایجاد کردید. شما نقاط داده را در فروشگاه تناسب اندام وارد کرده اید. بخش‌های فعالیت را برای نشان دادن فعالیت‌های مختلف در طول تمرین ایجاد کردید. و جلسه ای را وارد کردید که کل تمرین را پوشش می دهد.

Google Fit داده‌هایی را که درج کرده‌اید و سایر داده‌های موجود برای آن بازه زمانی را با جلسه‌ای مرتبط می‌کند که نشان‌دهنده تمرین کاربر است.