Ghi lại dữ liệu thể dục

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.
        });
}