תיעוד נתוני כושר

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

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

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