Google Fit รองรับอุปกรณ์ฟิตเนสที่ใช้โปรไฟล์ Bluetooth Low Energy (BLE) 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
และทำให้เมธอดนามธรรมของคลาสทำงาน รายละเอียดการใช้งานขึ้นอยู่กับ
Use Case เฉพาะ แต่ตัวอย่างต่อไปนี้มีหลักเกณฑ์ทั่วไป
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
}
}