เอกสารนี้จะอธิบายวิธีบันทึกการออกกำลังกายโดยใช้ Fitness REST API
ขั้นตอนที่ 1: ตั้งค่าโปรเจ็กต์
คุณต้องตั้งค่าโปรเจ็กต์ในคอนโซล Google API และเปิดใช้งานการเข้าถึง Fitness REST API ตามที่อธิบายไว้ในการเริ่มต้นใช้งาน
ขั้นตอนที่ 2: ตรวจสอบสิทธิ์ของแอป
แอปของคุณต้องตรวจสอบสิทธิ์คําขอที่ส่งไปยัง Fitness API โดยใช้โทเค็นเพื่อการเข้าถึง หากต้องการรับโทเค็นเพื่อการเข้าถึง แอปของคุณจะมีข้อมูลเข้าสู่ระบบเฉพาะไคลเอ็นต์และขอบเขตการเข้าถึงตามที่อธิบายไว้ในการให้สิทธิ์คำขอ
ขั้นตอนที่ 3: สร้างแหล่งข้อมูล
แหล่งข้อมูลแสดงแหล่งที่มาของข้อมูลเซ็นเซอร์ประเภทหนึ่งๆ ข้อมูลทั้งหมดที่แทรกในสโตร์การออกกำลังกายต้องเชื่อมโยงกับแหล่งข้อมูล คุณสามารถสร้างแหล่งข้อมูลได้เพียงครั้งเดียว และนำมาใช้ซ้ำในเซสชันในอนาคตได้
หากต้องการสร้างแหล่งข้อมูล ให้ส่งคำขอ HTTP ที่ตรวจสอบสิทธิ์แล้วพร้อมพารามิเตอร์ต่อไปนี้
- เมธอด HTTP
- POST
- ทรัพยากร
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
- PATCH
- ทรัพยากร
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-1411057556000000000URL ประกอบด้วยรหัสแหล่งข้อมูลและเวลาเริ่มต้นและเวลาสิ้นสุดของชุดข้อมูลในหน่วยนาโนวินาที
- เนื้อหาของคำขอ
{ "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
- PUT
- ทรัพยากร
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) สำหรับทั้ง 1 ชั่วโมงได้ หากผู้ใช้วิ่ง 25 นาที หยุดพัก 5 นาที จากนั้นวิ่งอีกครึ่งชั่วโมง คุณอาจสร้างกลุ่มกิจกรรมต่อเนื่อง 3 กลุ่มในประเภท running
, unknown
และ running
ตามลำดับ
การสร้างกลุ่มกิจกรรมเหมือนกับการเพิ่มจุดข้อมูลอื่นๆ หากต้องการสร้างกลุ่มกิจกรรม ให้สร้างแหล่งข้อมูลของกลุ่มกิจกรรมก่อน จากนั้นสร้างชุดข้อมูลและเพิ่มจุดข้อมูลกลุ่มกิจกรรมลงในชุดข้อมูล
ตัวอย่างต่อไปนี้จะสร้างกลุ่ม 3 กลุ่ม (การวิ่ง การพัก และการวิ่ง) ในกรอบเวลาเดียวกับการอ่านอัตราการเต้นของหัวใจ สมมติว่าคุณสร้างกลุ่มกิจกรรมแล้ว และรหัสแหล่งข้อมูลคือ "raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456"
- เมธอด HTTP
- PATCH
- ทรัพยากร
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 จะเชื่อมโยงข้อมูลที่คุณแทรกและข้อมูลอื่นๆ ที่มีในช่วงเวลาดังกล่าวกับเซสชันที่แสดงการออกกำลังกายของผู้ใช้