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 một bài tập thể dục bằng API REST của Fitness.

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

Bạn cần thiết lập một dự án trong Bảng điều khiển API của Google và kích hoạt quyền truy cập vào API REST của Fit, như mô tả trong phần Bắt đầu.

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

Ứng dụng cần xác thực yêu cầu đến API thể dục bằng mã truy cập. Để có được mã truy cập, ứng dụng của bạn bao gồm thông tin đăng nhập của từng ứng dụng 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 nguồn dữ liệu

Nguồn dữ liệu đại diện cho nguồn dữ liệu cảm biến thuộc một loại cụ thể. Tất cả dữ liệu được chèn vào cửa hàng 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 các nguồn dữ liệu một lần và sử dụng lại các nguồn đó cho các phiên hoạt động trong tương lai.

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

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

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

Mã nhận dạng người dùng me đề cập đến người dùng có mã truy cập cấp phép cho 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 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 dữ liệu thể dục 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à nó 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, thì phản hồi 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 về 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 bộ nhớ các hoạt động thể dục. Tập dữ liệu là một tập hợp các điểm dữ liệu từ một nguồn dữ liệu được 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 một yêu cầu HTTP đã xác thực bằng các thông số sau:

Phương thức HTTP
LỊCH TRÌNH
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ã nhận dạng nguồn dữ liệu, thời gian bắt đầu và 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 một tập dữ liệu có ba điểm dữ liệu nhịp tim trong vòng một giờ cho nguồn dữ liệu ở bước trước.

Nếu yêu cầu thành công, thì phản hồi 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 về 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 hoạt động

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

Để tạo một phiên cho bài tập này, hãy gửi một yêu cầu HTTP đã xác thực có các thông số sau:

Phương thức HTTP
UÚ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à dễ 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. Thời gian bắt đầu và kết thúc của phiên 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 và nguồn dữ liệu của bạn; điều này giúp dữ liệu nhất quán hơn và đảm bảo rằng mô hình 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 chỉ định trong phiên này bao gồm dữ liệu nhịp tim chèn vào 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 thể hiện các hoạt động khác nhau 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 đơn lẻ. Ví dụ: nếu người dùng chạy trong 1 giờ, bạn có thể tạo một phân đoạn hoạt động thuộc loại running (8) cho toàn bộ giờ. Nếu người dùng chạy trong 25 phút, nghỉ ngơi trong 5 phút rồi chạy thêm nửa giờ nữa, bạn có thể tạo 3 phân khúc hoạt động liên tiếp thuộc các loại running, unknownrunning.

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

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

Phương thức HTTP
LỊCH TRÌNH
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 đoạn 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 đoạn, nhưng bạn nên sử dụng lại một nguồ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 phù hợp với hoạt động chung của người dùng. Ngay cả khi người dùng nghỉ ngơi trong khi chạy, bài tập thể dục tổng thể vẫn chạy. Nhìn chung, loại hoạt động cho phiên hoạt động sẽ khớp với loại phân khúc 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 biết người dùng đang làm gì: họ có thể đang đứng yên, đang kéo giãn, uống nước, v.v. Nếu biết người dùng không di chuyển, bạn có thể sử dụng vẫn (3).

Để biết danh sách chi tiết về các loại hoạt động, hãy xem phần 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 loại dữ liệu và phân đoạn hoạt động; bạn đã chèn điểm dữ liệu vào cửa hàng thể dục; bạn đã tạo phân đoạn hoạt động để thể hiện các hoạt động khác nhau diễn ra trong một bài tập thể dục; và bạn đã chèn một phiên bao gồm toàn bộ bài tập.

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