Merekam data kebugaran

Recording API memungkinkan aplikasi Anda meminta penyimpanan otomatis data sensor secara efisien baterai dengan membuat langganan. Langganan dikaitkan dengan aplikasi Android dan terdiri dari jenis data kebugaran atau sumber data tertentu.

Anda dapat membuat beberapa langganan untuk berbagai jenis data atau sumber data di aplikasi Anda. Google Fit menyimpan data kebugaran dari langganan yang aktif, bahkan saat aplikasi Anda tidak berjalan, dan sistem akan memulihkan langganan ini saat sistem dimulai ulang.

Data yang direkam tersedia di riwayat kebugaran pengguna. Jika Anda juga ingin menampilkan data di aplikasi secara real time, gunakan Sensors API bersama dengan Recording API. Untuk merekam data kebugaran dengan metadata sesi, gunakan Sessions API.

Berlangganan ke data kebugaran

Untuk meminta pengumpulan data sensor di latar belakang di aplikasi Anda, gunakan metode RecordingClient.subscribe, seperti yang ditunjukkan dalam cuplikan kode berikut:

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

Jika langganan berhasil ditambahkan, Google Fit akan menyimpan data kebugaran jenis TYPE_STEP_COUNT_DELTA di histori kebugaran atas nama aplikasi Anda. Langganan ini muncul di daftar langganan aktif untuk aplikasi Anda.

Untuk berlangganan lebih banyak jenis data kebugaran di aplikasi Anda, ikuti langkah-langkah dalam contoh sebelumnya, tetapi berikan jenis data kebugaran yang berbeda setiap kali.

Mencantumkan langganan aktif

Untuk mendapatkan daftar langganan aktif bagi aplikasi Anda, gunakan metode RecordingClient.listSubscriptions, seperti yang ditunjukkan dalam cuplikan kode berikut:

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

Berhenti berlangganan data kebugaran

Untuk menghentikan pengumpulan data sensor di aplikasi Anda, gunakan metode RecordingClient.unsubscribe, seperti yang ditunjukkan dalam cuplikan kode berikut:

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