تسجيل بيانات اللياقة البدنية

تتيح واجهة برمجة التطبيقات "التسجيل" لتطبيقك طلب تخزين بيانات جهاز الاستشعار تلقائيًا بطريقة فعالة من حيث استهلاك البطارية من خلال إنشاء اشتراكات. يكون الاشتراك مرتبطًا بتطبيق متوافق مع Android ويتألف من نوع بيانات للياقة البدنية أو مصدر بيانات معيّن.

يمكنك إنشاء عدة اشتراكات لأنواع بيانات مختلفة أو مصادر بيانات في تطبيقك. يخزّن Google Fit بيانات اللياقة البدنية من الاشتراكات النشطة، حتى عندما لا يكون تطبيقك قيد التشغيل، ويعيد هذه الاشتراكات عند إعادة تشغيل النظام.

البيانات التي تم تسجيلها متاحة في سجلّ اللياقة البدنية للمستخدم. إذا أردت أيضًا عرض البيانات في تطبيقك في الوقت الفعلي، يمكنك استخدام واجهة برمجة تطبيقات أجهزة الاستشعار مع واجهة برمجة التطبيقات للتسجيل. لتسجيل بيانات الملاءمة مع البيانات الوصفية للجلسة، استخدم واجهة برمجة تطبيقات الجلسات.

الاشتراك في بيانات اللياقة البدنية

لطلب جمع بيانات جهاز الاستشعار في الخلفية في تطبيقك، استخدِم الطريقة RecordingClient.subscribe كما هو موضّح في مقتطف الرمز التالي:

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

في حال إضافة الاشتراك بنجاح، يحفظ تطبيق Google Fit بيانات اللياقة البدنية من النوع TYPE_STEP_COUNT_DELTA في سجلّ اللياقة البدنية نيابةً عن تطبيقك. ويظهر هذا الاشتراك في قائمة الاشتراكات النشطة لتطبيقك.

للاشتراك في المزيد من أنواع بيانات اللياقة البدنية في تطبيقك، اتّبِع الخطوات الواردة في المثال السابق مع تقديم نوع مختلف من بيانات اللياقة البدنية في كل مرة.

إدراج الاشتراكات النشطة

للحصول على قائمة بالاشتراكات النشطة لتطبيقك، استخدِم طريقة RecordingClient.listSubscriptions كما هو موضّح في مقتطف الرمز التالي:

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

إلغاء الاشتراك في بيانات اللياقة البدنية

لإيقاف جمع بيانات جهاز الاستشعار في تطبيقك، استخدِم الطريقة RecordingClient.unsubscribe كما هو موضّح في مقتطف الرمز التالي:

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