วิธีบันทึกการออกกำลังกาย

เอกสารนี้จะอธิบายวิธีบันทึกการออกกำลังกายโดยใช้ Fitness REST API

ขั้นตอนที่ 1: สร้างโปรเจ็กต์

คุณต้องตั้งค่าโปรเจ็กต์ในคอนโซล Google API และเปิดใช้งานการเข้าถึง Fitness REST API ตามที่อธิบายไว้ในเริ่มต้นใช้งาน

ขั้นตอนที่ 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
    }
  ]
}
]
}

คำขอนี้จะสร้างชุดข้อมูลที่มีจุดข้อมูลอัตราการเต้นของหัวใจ 3 จุดภายใน 1 ชั่วโมงสำหรับข้อมูล แหล่งที่มาในขั้นตอนก่อนหน้า

หากคำขอประสบความสำเร็จ การตอบกลับจะเป็นรหัสสถานะ 200 OK

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับชุดข้อมูลในข้อมูลอ้างอิง API ของ แหล่งข้อมูล Users.dataSources.datasets

สร้างการประทับเวลาที่ถูกต้อง

การประทับเวลาในตัวอย่างด้านบนเป็นหน่วยนาโนวินาที หากต้องการสร้างการประทับเวลาที่ถูกต้อง คุณสามารถใช้ สคริปต์ Python ต่อไปนี้

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: สร้างกลุ่มกิจกรรม

กลุ่มกิจกรรมช่วยให้คุณแสดงกิจกรรมที่แตกต่างกันในเซสชันได้ กลุ่มกิจกรรมคือกลุ่มเวลาที่ครอบคลุมกิจกรรมเดียว เช่น หากผู้ใช้ไป สำหรับการวิ่ง 1 ชั่วโมง คุณสามารถสร้างกลุ่มกิจกรรมประเภท running (8) สำหรับ ทั้งชั่วโมง หากผู้ใช้วิ่ง 25 นาที พักสายตา 5 นาที แล้ววิ่งอีกครึ่ง คุณก็สร้างกลุ่มกิจกรรมต่อเนื่องกัน 3 ประเภท ประเภท running unknown และ running ตามลำดับ

การสร้างกลุ่มกิจกรรมเหมือนกับการเพิ่มจุดข้อมูลอื่นๆ เพื่อสร้างกิจกรรม กลุ่ม ให้สร้างแหล่งข้อมูลของกลุ่มกิจกรรมก่อน จากนั้นจึงสร้างชุดข้อมูลและเพิ่ม ข้อมูลกลุ่มกิจกรรมจะชี้ไป

ตัวอย่างต่อไปนี้สร้างกลุ่มสามกลุ่ม (วิ่ง พัก และวิ่ง) ในกรอบเวลาเดียวกัน เป็นค่าที่อ่านได้ โดยสมมติว่าคุณสร้างกลุ่มกิจกรรมไว้แล้ว แหล่งข้อมูลและรหัสแหล่งข้อมูลคือ "raw:com.google.activity.segment:1234567890:ตัวอย่าง 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
    }
  ]
}
]
}

ระบบจะเพิ่มจุดข้อมูลกลุ่มกิจกรรมเหล่านี้ลงในแหล่งข้อมูลที่สร้างขึ้นโดยเฉพาะ เพื่อจัดการกลุ่มกิจกรรม คุณอาจสร้างแหล่งข้อมูลใหม่สำหรับกลุ่มแต่ละกลุ่ม แต่ คุณควรใช้คีย์ใหม่ที่ใช้กับเซสชันประเภทหนึ่งๆ โดยเฉพาะ เช่น การวิ่ง

เซสชันจะเป็นตัวระบุประเภทกิจกรรมซึ่งควรตรงกับกิจกรรมโดยรวมที่ผู้ใช้มีส่วนร่วม แม้ว่าผู้ใช้จะหยุดพักขณะวิ่ง แต่การออกกำลังกายโดยรวมก็ยังคงเป็นการวิ่งเช่นกัน โดยทั่วไป ประเภทกิจกรรมของเซสชันนี้จะตรงกับประเภทกลุ่มกิจกรรมหลัก

ใช้ประเภทกิจกรรม unknown (4) เพื่อระบุว่าผู้ใช้กำลังพักผ่อน เนื่องจากคุณอาจไม่ได้ รู้ว่าผู้ใช้ทำอะไรอยู่ เช่น อยู่นิ่งๆ ยืดเส้นยืดสาย ดื่มน้ำ และอื่นๆ หากคุณ หากทราบว่าผู้ใช้ไม่ได้เคลื่อนไหวอยู่ คุณสามารถใช้ยังคง (3)

ดูรายการประเภทกิจกรรมโดยละเอียดได้ที่ประเภทกิจกรรม

สรุป

ในบทแนะนำนี้ คุณได้สร้างแหล่งข้อมูลสำหรับประเภทข้อมูลและกลุ่มกิจกรรม คุณแทรก จุดข้อมูลไปยังพื้นที่เก็บข้อมูลฟิตเนส คุณได้สร้างกลุ่มกิจกรรมเพื่อแสดง กิจกรรมที่เกิดขึ้นระหว่างการออกกำลังกาย และคุณได้แทรกเซสชันที่ครอบคลุมทั้งเซสชัน ออกกำลังกาย

Google Fit เชื่อมโยงข้อมูลที่คุณแทรกและข้อมูลอื่นๆ ที่มีอยู่ในช่วงเวลานั้น ด้วยเซสชันที่แสดงการออกกำลังกายของผู้ใช้