إنّ واجهات برمجة تطبيقات Google Fit، بما في ذلك Google Fit REST API، لن تعود متاحة بعد 30 حزيران (يونيو) 2025. اعتبارًا من 1 أيار (مايو) 2024، لن يتمكّن المطوّرون من الاشتراك لاستخدام واجهات برمجة التطبيقات هذه.
للحصول على تعليمات حول واجهة برمجة التطبيقات أو المنصة المطلوب نقل البيانات إليها، انتقِل إلى دليل نقل البيانات إلى Health Connect. للمقارنة بين Health Connect وواجهات برمجة تطبيقات Google Fit وواجهات برمجة تطبيقات الويب Fitbit، يُرجى الانتقال إلى دليل المقارنة في Health Connect.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يوضح هذا المثال كيفية إنشاء عميل Fitness API.
أنشئ عميل واجهة برمجة التطبيقات على النحو التالي:
يمكنك إنشاء مثيل FitnessOptions، مع توضيح
أنواع البيانات ونوع الوصول (قراءة و/أو كتابة)
الذي يحتاجه تطبيقك:
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.build()
احصل على مثيل للعنصر Account لاستخدامه مع واجهة برمجة التطبيقات:
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
تحقَّق ممّا إذا كان المستخدم قد منح في السابق أذونات الوصول اللازمة إلى البيانات، وإذا لم يكن كذلك، ابدأ مسار التفويض:
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this, // your activity
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
account,
fitnessOptions)
} else {
accessGoogleFit()
}
إذا كان مسار التفويض مطلوبًا، يمكنك التعامل مع ردّ المستخدم:
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
}
}
}
بعد أن يمنح المستخدم إذنًا بالوصول إلى البيانات المطلوبة، يمكنك إنشاء عميل لياقة بدنية (على سبيل المثال، 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) })
}