پشتیبانی از سنسورهای اضافی
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
دستگاههای تناسب اندام که نمایه استاندارد گات کم مصرف بلوتوث را اجرا میکنند، بهطور خودکار توسط 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
را گسترش داده و روش های انتزاعی آن را پیاده سازی کنید. جزئیات پیاده سازی به مورد استفاده خاص شما بستگی دارد، اما مثال زیر دستورالعمل های کلی را ارائه می دهد:
کاتلین
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
}
}
جاوا
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 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی."],[[["\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```"]]