הקלטה של נתוני כושר

באמצעות יצירת מינויים, API להקלטה מאפשר לאפליקציה לבקש אחסון אוטומטי של נתוני חיישנים, תוך ניצול יעיל של סוללה. מינוי משויך לאפליקציה ל-Android ומורכב מסוג נתונים של כושר או ממקור נתונים ספציפי.

ניתן ליצור מספר מינויים לסוגי נתונים או למקורות נתונים שונים באפליקציה. Google Fit שומרת נתוני כושר ממינויים פעילים, גם כשהאפליקציה לא פועלת, ומשחזרת את המינויים האלה כשהמערכת מופעלת מחדש.

הנתונים המוקלטים זמינים בהיסטוריית הכושר של המשתמש. אם רוצים גם להציג את הנתונים באפליקציה בזמן אמת, צריך להשתמש ב-Sensors API בשילוב עם Recording API. כדי לתעד נתוני כושר גופני בעזרת מטא-נתונים של סשנים, השתמשו ב-Sessions 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.
        });
}