Cách ghi lại bài tập thể dục

Tài liệu này mô tả cách ghi lại bài tập thể dục bằng API Fitness REST.

Bước 1: Thiết lập dự án

Bạn cần thiết lập dự án trong Google API Console và kích hoạt quyền truy cập vào Fitness REST API, như mô tả trong phần Bắt đầu.

Bước 2: Xác thực ứng dụng

Ứng dụng của bạn cần xác thực các yêu cầu tới API Fitness bằng mã truy cập. Để có được mã truy cập, ứng dụng của bạn sẽ bao gồm thông tin xác thực dành riêng cho ứng dụng khách và phạm vi truy cập, như mô tả trong phần Ủy quyền yêu cầu.

Bước 3: Tạo một nguồn dữ liệu

Một nguồn dữ liệu đại diện cho một nguồn dữ liệu cảm biến thuộc một loại cụ thể. Đã chèn tất cả dữ liệu vào kho dữ liệu thể dục phải được liên kết với một nguồn dữ liệu. Bạn có thể tạo nguồn dữ liệu một lần và sử dụng lại chúng cho các phiên trong tương lai.

Để tạo nguồn dữ liệu, hãy gửi một yêu cầu HTTP đã xác thực kèm theo các tham số sau:

Phương thức HTTP
SAU KHI TRIỂN KHAI
Tài nguyên

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

Mã nhận dạng người dùng me là người dùng có mã truy cập cho phép yêu cầu.

Nội dung yêu cầu
{
"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"
}

Yêu cầu này tạo ra một nguồn dữ liệu đại diện cho một thiết bị theo dõi nhịp tim cung cấp thông tin về hoạt động thể dục dữ liệu thuộc loại com.google.heart_rate.bpm. Bạn phải chỉ định mã nhận dạng của nguồn dữ liệu và nguồn dữ liệu đó có thể là giá trị bất kỳ. Mã nguồn dữ liệu trong ví dụ này tuân theo một quy ước đặt tên hợp lý mà bạn có thể áp dụng. Thành phần thiết bị là không bắt buộc nếu dữ liệu chỉ do một ứng dụng tạo ra.

Nếu yêu cầu thành công, phản hồi sẽ là mã trạng thái 200 OK.

Để biết thêm thông tin về nguồn dữ liệu, hãy xem tài liệu tham khảo API cho Tài nguyên Users.dataSources.

Bước 4: Thêm điểm dữ liệu

Bạn sử dụng tập dữ liệu để chèn các điểm dữ liệu vào kho dữ liệu thể dục. Tập dữ liệu là một tập hợp dữ liệu các điểm từ một nguồn dữ liệu bị giới hạn theo thời gian.

Để tạo một tập dữ liệu và thêm điểm vào tập dữ liệu đó, hãy gửi yêu cầu HTTP đã xác thực cùng với những thông tin này thông số:

Phương thức HTTP
GIẤY TỜ
Tài nguyên

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 này bao gồm mã nguồn dữ liệu, thời gian bắt đầu và thời gian kết thúc của tập dữ liệu tính bằng nano giây.

Nội dung yêu cầu
{
"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
    }
  ]
}
]
}

Yêu cầu này tạo ra một tập dữ liệu gồm 3 điểm dữ liệu nhịp tim trong vòng một giờ cho dữ liệu nguồn ở bước trước.

Nếu yêu cầu thành công, phản hồi sẽ là mã trạng thái 200 OK.

Để biết thêm thông tin về tập dữ liệu, hãy xem tài liệu tham khảo API cho Tài nguyên Users.dataSources.datasets.

Tạo dấu thời gian hợp lệ

Dấu thời gian trong ví dụ trên được tính bằng nano giây. Để tạo dấu thời gian hợp lệ, bạn có thể sử dụng tập lệnh Python sau:

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))

Bước 5: Tạo một phiên

Bây giờ, bạn đã chèn dữ liệu vào kho dữ liệu thể dục, bạn có thể chèn một phiên để cung cấp siêu dữ liệu bổ sung cho bài tập thể dục này. Phiên hoạt động biểu thị khoảng thời gian mà người dùng thực hiện một hoạt động thể dục.

Để tạo một phiên cho bài tập thể dục này, hãy gửi yêu cầu HTTP đã xác thực kèm theo các tham số sau:

Phương thức HTTP
ĐẶT
Tài nguyên

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

sessionId là tuỳ ý và phải là duy nhất cho tất cả các phiên liên kết với người dùng đã xác thực.

Nội dung yêu cầu
{
"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
}

Chọn tên phiên dễ đọc và mang tính mô tả vì các ứng dụng khác có thể sử dụng tên này để tóm tắt phiên đào tạo. Thời gian bắt đầu và kết thúc của các phiên hoạt động được tính bằng mili giây (không phải nano giây). Sử dụng cùng một tên gói cho các phiên hoạt động và nguồn dữ liệu của bạn; điều này khiến cho dữ liệu nhất quán hơn và đảm bảo rằng phân bổ dữ liệu sẽ liên kết trở lại ứng dụng của bạn.

Khoảng thời gian được chỉ định trong phiên này bao gồm dữ liệu tần số tim được chèn trước đó, vì vậy Google Fit liên kết các điểm dữ liệu đó với phiên này.

Để biết thêm thông tin về phiên, hãy xem tài liệu tham khảo API cho Tài nguyên Users.sessions.

Bước 6: Tạo phân đoạn hoạt động

Phân đoạn hoạt động giúp bạn trình bày nhiều hoạt động trong một phiên. Phân đoạn hoạt động là phân đoạn thời gian bao gồm một hoạt động. Ví dụ: nếu người dùng tham gia trong thời gian chạy một giờ, bạn có thể tạo phân đoạn hoạt động thuộc loại running (8) cho thuộc tính trong cả giờ. Nếu người dùng chạy trong 25 phút, nghỉ giải lao trong 5 phút, sau đó chạy thêm nửa phút nữa giờ, bạn có thể tạo ba phân đoạn hoạt động liên tiếp thuộc loại running, unknownrunning tương ứng.

Việc tạo phân đoạn hoạt động giống như thêm bất kỳ điểm dữ liệu nào khác. Để tạo hoạt động trước tiên, hãy tạo một nguồn dữ liệu cho phân khúc hoạt động, sau đó tạo một tập dữ liệu và thêm dữ liệu phân khúc hoạt động trỏ đến đó.

Ví dụ sau đây tạo ra 3 phân đoạn (chạy, nghỉ và chạy) trong cùng một khung thời gian làm chỉ số tần số tim, giả sử bạn đã tạo một phân đoạn hoạt động nguồn dữ liệu và mã nguồn dữ liệu là "raw:com.google.activity.segment:1234567890:Example Fit:example-fit-hrm-1:123456":

Phương thức HTTP
GIẤY TỜ
Tài nguyên
https://www.googleapis.com/fitness/v1/users/me/dataSources/
raw:com.google.activity.segment:1234567890/datasets/1411053997000000000-1411057556000000000
Nội dung yêu cầu
{
"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
    }
  ]
}
]
}

Các điểm dữ liệu phân khúc hoạt động này được thêm vào một nguồn dữ liệu đã được tạo riêng để xử lý các phân đoạn hoạt động. Bạn có thể tạo một nguồn dữ liệu mới cho từng nhóm phân khúc, nhưng bạn nên sử dụng lại phiên bản dành riêng cho một loại phiên cụ thể, chẳng hạn như chạy.

Phiên hoạt động chỉ định một loại hoạt động, và phải khớp với hoạt động tổng thể mà người dùng tham gia. Ngay cả khi người dùng nghỉ giải lao trong khi chạy, thì tổng thể bài tập thể dục vẫn là một lần chạy. Nhìn chung, loại hoạt động của phiên sẽ khớp với loại phân đoạn hoạt động chính.

Sử dụng loại hoạt động không xác định (4) để cho biết người dùng đang nghỉ ngơi, vì bạn có thể không phải biết người dùng đang làm gì: họ có thể đứng yên, hoặc giãn cơ, uống nước, v.v. Nếu bạn biết người dùng hiện không di chuyển, bạn có thể sử dụng lệnh still (3).

Để biết danh sách chi tiết các loại hoạt động, hãy xem Loại hoạt động.

Tóm tắt

Trong hướng dẫn này, bạn đã tạo nguồn dữ liệu cho các loại dữ liệu và phân đoạn hoạt động; bạn đã chèn các điểm dữ liệu vào kho dữ liệu thể dục; bạn đã tạo các phân đoạn hoạt động để đại diện cho các hoạt động diễn ra trong một bài tập thể dục; và bạn đã chèn một phiên hoạt động bao gồm toàn bộ bài tập thể dục của bạn.

Google Fit liên kết dữ liệu bạn đã chèn với bất kỳ dữ liệu nào khác có sẵn trong khoảng thời gian đó bằng một phiên hoạt động đại diện cho bài tập thể dục của người dùng.