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

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

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

تتوفر البيانات المسجَّلة في سجلّ المستخدم المتعلق باللياقة البدنية. إذا كنت تريد أيضًا لعرض البيانات في تطبيقك في الوقت الفعلي، استخدِم Sensors API مع واجهة برمجة تطبيقات التسجيل. للتسجيل بيانات اللياقة البدنية مع بيانات تعريف الجلسة، فاستخدم واجهة برمجة تطبيقات الجلسات:

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

لطلب جمع بيانات جهاز الاستشعار في الخلفية في تطبيقك، يُرجى استخدام 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.
        });
}