Fitness API क्लाइंट बनाएं

इस उदाहरण में, Fitness API क्लाइंट बनाने का तरीका बताया गया है.

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

  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, फ़िटनेस से जुड़ा पुराना डेटा पढ़ने और/या उसमें बदलाव करने के लिए:

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