API Ghi cho phép ứng dụng của bạn yêu cầu lưu trữ tự động dữ liệu cảm biến trong một tiết kiệm pin bằng cách tạo gói thuê bao. Đã liên kết một gói thuê bao bằng ứng dụng Android và chứa một loại dữ liệu hoạt động thể dục hoặc một dữ liệu cụ thể nguồn.
Bạn có thể tạo nhiều gói thuê bao cho nhiều loại dữ liệu hoặc nguồn dữ liệu trong ứng dụng của bạn. Google Fit lưu trữ dữ liệu hoạt động thể dục từ các gói thuê bao đang hoạt động, ngay cả khi ứng dụng của bạn không chạy đồng thời khôi phục các gói thuê bao này khi hệ thống khởi động lại.
Dữ liệu đã ghi có trong nhật ký tập thể dục của người dùng. Nếu bạn cũng muốn hiển thị dữ liệu trong ứng dụng của bạn theo thời gian thực, hãy sử dụng API Cảm biến cùng với API Bản ghi. Để ghi dữ liệu hoạt động thể dục với siêu dữ liệu về phiên hoạt động, hãy sử dụng API phiên.
Đăng ký dữ liệu thể dục
Để yêu cầu thu thập dữ liệu cảm biến ở chế độ nền trong ứng dụng của bạn, hãy sử dụng
RecordingClient.subscribe
như minh hoạ trong đoạn mã sau đây:
Kotlin
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows subscribing to a DataType, across all possible data // sources. Alternatively, a specific DataSource can be used. .subscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener { Log.i(TAG, "Successfully subscribed!") } .addOnFailureListener { e -> Log.w(TAG, "There was a problem subscribing.", e) }
Java
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows subscribing to a DataType, across all possible // data sources. Alternatively, a specific DataSource can be used. .subscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener(unused -> Log.i(TAG, "Successfully subscribed!")) .addOnFailureListener( e -> Log.w(TAG, "There was a problem subscribing.", e));
Nếu bạn thêm gói thuê bao thành công, Google Fit sẽ lưu trữ dữ liệu thể dục
dữ liệu thuộc loại
TYPE_STEP_COUNT_DELTA
trong lịch sử thể dục thay mặt cho ứng dụng của bạn. Gói thuê bao này xuất hiện trong
danh sách các gói thuê bao
đang hoạt động cho ứng dụng của bạn.
Để đăng ký nhiều loại dữ liệu về hoạt động thể dục khác trong ứng dụng của bạn, hãy làm theo các bước trong ví dụ trước, nhưng mỗi lần cung cấp một loại dữ liệu thể dục khác.
Liệt kê các gói thuê bao đang hoạt động
Để xem danh sách các gói thuê bao đang hoạt động cho ứng dụng của bạn, hãy sử dụng
RecordingClient.listSubscriptions
như minh hoạ trong đoạn mã sau đây:
Kotlin
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .listSubscriptions() .addOnSuccessListener { subscriptions -> for (sc in subscriptions) { val dt = sc.dataType Log.i(TAG, "Active subscription for data type: ${dt.name}") } }
Java
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .listSubscriptions() .addOnSuccessListener(subscriptions -> { for (Subscription sc : subscriptions) { DataType dt = sc.getDataType(); Log.i(TAG, "Active subscription for data type: ${dt.name}"); } }); }
Hủy đăng ký dữ liệu thể dục
Để dừng thu thập dữ liệu cảm biến trong ứng dụng, hãy sử dụng
RecordingClient.unsubscribe
như minh hoạ trong đoạn mã sau đây:
Kotlin
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows unsubscribing from a DataType. A DataSource should // be used where the subscription was to a DataSource. Alternatively, if // the client doesn't maintain its subscription information, they can use // an element from the return value of listSubscriptions(), which is of // type Subscription. .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener { Log.i(TAG,"Successfully unsubscribed.") } .addOnFailureListener { e-> Log.w(TAG, "Failed to unsubscribe.") // Retry the unsubscribe request. }
Java
Fitness.getRecordingClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) // This example shows unsubscribing from a DataType. A DataSource // should be used where the subscription was to a DataSource. // Alternatively, if the client doesn’t maintain its subscription // information, they can use an element from the return value of // listSubscriptions(), which is of type Subscription. .unsubscribe(DataType.TYPE_STEP_COUNT_DELTA) .addOnSuccessListener(unused -> Log.i(TAG,"Successfully unsubscribed.")) .addOnFailureListener(e -> { Log.w(TAG, "Failed to unsubscribe."); // Retry the unsubscribe request. }); }