피트니스 데이터 기록

Recording API를 사용하면 앱에서 구독을 만들어 배터리 효율적인 방식으로 센서 데이터를 자동으로 저장하도록 요청할 수 있습니다. 정기 결제는 Android 앱과 연결되며 피트니스 데이터 유형 또는 특정 데이터 소스로 구성됩니다.

앱에서 다양한 데이터 유형 또는 데이터 소스에 대한 여러 개의 구독을 만들 수 있습니다. 앱이 실행되고 있지 않아도 Google 피트니스는 활성 상태의 구독의 피트니스 데이터를 저장하며, 시스템이 다시 시작되면 이러한 구독을 복원합니다.

기록된 데이터는 사용자의 피트니스 기록에서 확인할 수 있습니다. 앱의 데이터를 실시간으로 표시하려면 Recording API와 함께 Sensors 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)
    }

자바

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 피트니스가 앱을 대신하여 피트니스 기록에 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}")
        }
    }

자바

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

자바

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