سيتم إيقاف واجهات برمجة تطبيقات Google Fit نهائيًا في عام 2026، بما في ذلك واجهة برمجة التطبيقات Google Fit REST API. اعتبارًا من 1 أيار (مايو) 2024، لن يتمكّن المطوّرون من الاشتراك لاستخدام واجهات برمجة التطبيقات هذه.
للحصول على تعليمات حول واجهة برمجة التطبيقات أو المنصة التي تريد نقل البيانات إليها، يُرجى الانتقال إلى دليل نقل البيانات في Health Connect. للاطّلاع على مقارنة بين Health Connect وGoogle Fit API وFitbit Web API، يُرجى الانتقال إلى دليل مقارنة Health Connect.
مزيد من المعلومات حول Health Connect وكيفية الدمج مع واجهة برمجة التطبيقات
إتاحة أدوات استشعار إضافية
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
أجهزة اللياقة البدنية التي تستخدم البلوتوث منخفض الطاقة
GATT
بشكل تلقائي مع تطبيق Google Fit. إذا كان جهازك
لم ينفّذ أحد هذه الملفات الشخصية، يمكنك إنشاء تطبيق Android
الاتصال بجهاز اللياقة البدنية ويعرضه
استخدام Google Fit كأداة استشعار للبرامج يمكنك أيضًا كشف البرامج المخصَّصة
أدوات الاستشعار في تطبيقك.
لإنشاء أداة استشعار برمجية في تطبيقك، عليك توسيع
FitnessSensorService
التعريف عنها كخدمة في ملف البيان. عندما يثبّت المستخدمون
فإن Google Fit يتيح أدوات استشعار برامجك للتطبيقات الأخرى.
عندما يسجِّل تطبيق ما لتلقّي البيانات من أداة استشعار برنامج في تطبيقك،
يرتبط Google Fit بخدمتك.
الإعلان عن خدمة جهاز استشعار
لتحديد جهاز استشعار برمجي، عليك تحديد
FitnessSensorService
في ملف البيان لتطبيقك:
<service android:name="com.example.MySensorService"
android:process=":sensor">
<intent-filter>
<action android:name="com.google.android.gms.fitness.service.FitnessSensorService" />
<!-- include at least one mimeType filter for the supported data types -->
<data android:mimeType="vnd.google.fitness.data_type/com.google.heart_rate.bpm" />
</intent-filter>
</service>
يتم تشغيل الخدمة في هذا المثال من خلال عملية منفصلة، كما هو محدد من خلال
android:process
. لمزيد من المعلومات، يُرجى مراجعة
العمليات:
تنفيذ خدمة أجهزة استشعار
لتنفيذ أداة استشعار برمجية، عليك تمديد فئة FitnessSensorService
وتنفيذ أساليبه التجريدية. تعتمد تفاصيل التنفيذ على
حالة استخدام معينة، لكن المثال التالي يقدم إرشادات عامة:
Kotlin
class MySensorService : FitnessSensorService() {
override fun onCreate() {
super.onCreate()
// 1. Initialize your software sensor(s).
// 2. Create DataSource representations of your software sensor(s).
// 3. Initialize some data structure to keep track of a registration
// for each sensor.
}
override fun onFindDataSources(dataTypes: List<DataType>): List<DataSource> {
// 1. Find which of your software sensors provide the data types requested.
// 2. Return those as a list of DataSource objects.
}
override fun onRegister(request: FitnessSensorServiceRequest): Boolean {
// 1. Determine which sensor to register with request.dataSource.
// 2. If a registration for this sensor already exists, replace it with
// this one.
// 3. Keep (or update) a reference to the request object.
// 4. Configure your sensor according to the request parameters.
// 5. When the sensor has new data, deliver it to the platform by
// calling request.dispatcher.publish(dataPoints)
}
override fun onUnregister(dataSource: DataSource): Boolean {
// 1. Configure this sensor to stop delivering data to the platform
// 2. Discard the reference to the registration request object
}
}
Java
public class MySensorService extends FitnessSensorService {
@Override
public void onCreate() {
super.onCreate();
// 1. Initialize your software sensor(s).
// 2. Create DataSource representations of your software sensor(s).
// 3. Initialize some data structure to keep track of a registration
// for each sensor.
}
@NonNull
@Override
public List<DataSource> onFindDataSources(@NonNull List<DataType> list) {
// 1. Find which of your software sensors provide the data types
// requested.
// 2. Return those as a list of DataSource objects.
}
@Override
public boolean onRegister(
@NonNull FitnessSensorServiceRequest fitnessSensorServiceRequest) {
// 1. Determine which sensor to register with request.dataSource.
// 2. If a registration for this sensor already exists, replace it with
// this one.
// 3. Keep (or update) a reference to the request object.
// 4. Configure your sensor according to the request parameters.
// 5. When the sensor has new data, deliver it to the platform by
// calling request.getDispatcher.publish(dataPoints);
}
@Override
public boolean onUnregister(@NonNull DataSource dataSource) {
// 1. Configure this sensor to stop delivering data to the platform
// 2. Discard the reference to the registration request object
}
}
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eGoogle Fit automatically supports fitness devices using standard Bluetooth Low Energy GATT profiles.\u003c/p\u003e\n"],["\u003cp\u003eFor devices lacking standard profiles, an Android app can bridge communication with Google Fit using software sensors.\u003c/p\u003e\n"],["\u003cp\u003eSoftware sensors are created by extending the \u003ccode\u003eFitnessSensorService\u003c/code\u003e class and declaring it as a service in the app's manifest.\u003c/p\u003e\n"],["\u003cp\u003eGoogle Fit exposes your software sensors to other apps upon installation, facilitating data sharing.\u003c/p\u003e\n"],["\u003cp\u003eImplementation of a software sensor involves initializing sensors, handling data source requests, and managing sensor registration and data delivery.\u003c/p\u003e\n"]]],[],null,["# Support additional sensors\n\nFitness devices that implement a standard [Bluetooth Low Energy\nGATT](https://www.bluetooth.com/bluetooth-resources/intro-to-bluetooth-gap-gatt/)\nprofile are automatically supported by Google Fit. If your device\ndoesn't implement one of these profiles, you can create an Android app that\nmanages the communication with the fitness device and exposes it to\nGoogle Fit as a software sensor. You can also expose custom software\nsensors in your app.\n\nTo create a software sensor in your app, you extend the\n[`FitnessSensorService`](/android/reference/com/google/android/gms/fitness/service/FitnessSensorService)\nclass and declare it as a service in the manifest file. When users install your\napp, Google Fit makes your software sensors available to other apps.\nWhen an app registers to receive data from a software sensor in your app,\nGoogle Fit binds to your service.\n| **Note:** For best practices when you manage user data, see [Google Fit Developer and User Data Policy](/fit/policy).\n\nDeclare a sensor service\n------------------------\n\nTo define a software sensor, declare a\n[`FitnessSensorService`](/android/reference/com/google/android/gms/fitness/service/FitnessSensorService)\nin your app's manifest file: \n\n```carbon\n\u003cservice android:name=\"com.example.MySensorService\"\n android:process=\":sensor\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"com.google.android.gms.fitness.service.FitnessSensorService\" /\u003e\n \u003c!-- include at least one mimeType filter for the supported data types --\u003e\n \u003cdata android:mimeType=\"vnd.google.fitness.data_type/com.google.heart_rate.bpm\" /\u003e\n \u003c/intent-filter\u003e\n\u003c/service\u003e\n```\n\nThe service in this example runs in a separate process, as specified by the\n[`android:process`](https://developer.android.com/guide/topics/manifest/service-element#proc)\nattribute. For more information, see\n[Processes](https://developer.android.com/guide/components/processes-and-threads#Processes).\n\nImplement a sensor service\n--------------------------\n\nTo implement a software sensor, extend the `FitnessSensorService` class and\nimplement its abstract methods. The details of the implementation depend on your\nparticular use case, but the following example provides general guidelines: \n\n### Kotlin\n\n```kotlin\nclass MySensorService : FitnessSensorService() {\n override fun onCreate() {\n super.onCreate()\n // 1. Initialize your software sensor(s).\n // 2. Create DataSource representations of your software sensor(s).\n // 3. Initialize some data structure to keep track of a registration\n // for each sensor.\n }\n\n override fun onFindDataSources(dataTypes: List\u003cDataType\u003e): List\u003cDataSource\u003e {\n // 1. Find which of your software sensors provide the data types requested.\n // 2. Return those as a list of DataSource objects.\n }\n\n override fun onRegister(request: FitnessSensorServiceRequest): Boolean {\n // 1. Determine which sensor to register with request.dataSource.\n // 2. If a registration for this sensor already exists, replace it with\n // this one.\n // 3. Keep (or update) a reference to the request object.\n // 4. Configure your sensor according to the request parameters.\n // 5. When the sensor has new data, deliver it to the platform by\n // calling request.dispatcher.publish(dataPoints)\n }\n\n override fun onUnregister(dataSource: DataSource): Boolean {\n // 1. Configure this sensor to stop delivering data to the platform\n // 2. Discard the reference to the registration request object\n }\n}\n```\n\n### Java\n\n```java\npublic class MySensorService extends FitnessSensorService {\n @Override\n public void onCreate() {\n super.onCreate();\n // 1. Initialize your software sensor(s).\n // 2. Create DataSource representations of your software sensor(s).\n // 3. Initialize some data structure to keep track of a registration\n // for each sensor.\n }\n\n @NonNull\n @Override\n public List\u003cDataSource\u003e onFindDataSources(@NonNull List\u003cDataType\u003e list) {\n // 1. Find which of your software sensors provide the data types\n // requested.\n // 2. Return those as a list of DataSource objects.\n }\n\n @Override\n public boolean onRegister(\n @NonNull FitnessSensorServiceRequest fitnessSensorServiceRequest) {\n // 1. Determine which sensor to register with request.dataSource.\n // 2. If a registration for this sensor already exists, replace it with\n // this one.\n // 3. Keep (or update) a reference to the request object.\n // 4. Configure your sensor according to the request parameters.\n // 5. When the sensor has new data, deliver it to the platform by\n // calling request.getDispatcher.publish(dataPoints);\n }\n\n @Override\n public boolean onUnregister(@NonNull DataSource dataSource) {\n // 1. Configure this sensor to stop delivering data to the platform\n // 2. Discard the reference to the registration request object\n }\n}\n```"]]