फ़िटनेस एपीआई क्लाइंट बनाना

इस उदाहरण में फ़िटनेस एपीआई क्लाइंट बनाने का तरीका बताया गया है.

एपीआई क्लाइंट को इस तरह बनाएं:

  1. FitnessOptions इंस्टेंस बनाएं. अपने ऐप्लिकेशन के लिए ज़रूरी डेटा टाइप और ऐक्सेस टाइप (पढ़ने और/या लिखने) का एलान करें:

    val fitnessOptions = FitnessOptions.builder()
        .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
        .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
        .build()
    
  2. एपीआई के साथ इस्तेमाल करने के लिए, Account ऑब्जेक्ट का इंस्टेंस पाएं:

    val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
    
  3. देखें कि क्या उपयोगकर्ता ने पहले ज़रूरी डेटा ऐक्सेस किया है. अगर नहीं है, तो अनुमति देने का फ़्लो शुरू करें:

    if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
        GoogleSignIn.requestPermissions(
            this, // your activity
            GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
            account,
            fitnessOptions)
    } else {
        accessGoogleFit()
    }
    
  4. अगर अनुमति देने की प्रक्रिया ज़रूरी है, तो उपयोगकर्ता के जवाब मैनेज करें:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        when (resultCode) {
            Activity.RESULT_OK -> when (requestCode) {
                GOOGLE_FIT_PERMISSIONS_REQUEST_CODE -> accessGoogleFit()
                else -> {
                    // Result wasn't from Google Fit
                }
            }
            else -> {
                // Permission not granted
            }
        }
    }
    
  5. उपयोगकर्ता के अनुरोध किए गए डेटा को ऐक्सेस करने की अनुमति देने के बाद, अपने ऐप्लिकेशन के मकसद और ज़रूरतों के आधार पर फ़िटनेस क्लाइंट बनाएं. उदाहरण के लिए, HistoryClient फ़िटनेस से जुड़ा डेटा पढ़ने और/या लिखने के लिए HistoryClient बनाएं:

    private fun accessGoogleFit() {
        val end = LocalDateTime.now()
        val start = end.minusYears(1)
        val endSeconds = end.atZone(ZoneId.systemDefault()).toEpochSecond()
        val startSeconds = start.atZone(ZoneId.systemDefault()).toEpochSecond()
    
        val readRequest = DataReadRequest.Builder()
            .aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
            .setTimeRange(startSeconds, endSeconds, TimeUnit.SECONDS)
            .bucketByTime(1, TimeUnit.DAYS)
            .build()
        val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
        Fitness.getHistoryClient(this, account)
            .readData(readRequest)
            .addOnSuccessListener({ response ->
                // Use response data here
                Log.i(TAG, "OnSuccess()")
            })
            .addOnFailureListener({ e -> Log.d(TAG, "OnFailure()", e) })
    }