Google Fit จะรองรับอุปกรณ์ออกกำลังกายที่ใช้โปรไฟล์ GATT พลังงานต่ำสำหรับบลูทูธพลังงานต่ำมาตรฐานโดยอัตโนมัติ หากอุปกรณ์ไม่ได้ใช้โปรไฟล์ใดโปรไฟล์หนึ่งเหล่านี้ คุณสามารถสร้างแอป Android ที่จัดการการสื่อสารกับอุปกรณ์ออกกำลังกายและเปิดเผยโปรไฟล์ดังกล่าวไปยัง Google Fit เป็นเซ็นเซอร์ซอฟต์แวร์ และคุณยังแสดงเซ็นเซอร์ ซอฟต์แวร์ที่กำหนดเองในแอปได้ด้วย
หากต้องการสร้างเซ็นเซอร์ซอฟต์แวร์ในแอป ให้ขยายคลาส FitnessSensorService
และประกาศว่าเป็นบริการในไฟล์ Manifest เมื่อผู้ใช้ติดตั้งแอป Google Fit จะทำให้แอปอื่นๆ ใช้งานเซ็นเซอร์ซอฟต์แวร์ของคุณได้
เมื่อแอปลงทะเบียนเพื่อรับข้อมูลจากเซ็นเซอร์ซอฟต์แวร์ในแอป
Google Fit จะเชื่อมโยงกับบริการของคุณ
ประกาศบริการเซ็นเซอร์
หากต้องการกำหนดเซ็นเซอร์ซอฟต์แวร์ ให้ประกาศ FitnessSensorService
ในไฟล์ Manifest ของแอป ดังนี้
<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 } }