Standart bir Bluetooth Düşük Enerji kullanan fitness cihazları GATT Google Fit tarafından otomatik olarak desteklendiğinden emin olun. Cihazınız bu profillerden birini uygulamazsa fitness cihazıyla iletişimi yönetir ve bu cihazı Google Fit'i yazılım sensörü olarak kullanın. Ayrıca özel yazılımlar da kullanabilir, tespit edebilirsiniz.
Uygulamanızda yazılım sensörü oluşturmak için
FitnessSensorService
sınıfını açın ve bunu manifest dosyasında bir hizmet olarak tanımlayın. Kullanıcılar
Google Fit, yazılım sensörlerinizi diğer uygulamaların kullanımına sunar.
Bir uygulama, uygulamanızdaki bir yazılım sensöründen veri almak için kaydolduğunda
Google Fit, hizmetinize bağlanır.
Sensör hizmeti beyan etme
Bir yazılım sensörü tanımlamak için uygulamanızın manifest dosyasında FitnessSensorService
bildirme:
<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>
Bu örnekteki hizmet,
android:process
özelliğini gönderin. Daha fazla bilgi için bkz.
Süreçler.
Sensör hizmeti uygulayın
Yazılım sensörü uygulamak için FitnessSensorService
sınıfını genişletin ve
soyut yöntemlerini uygulamaktır. Uygulamanın ayrıntıları, kullanım alanınıza bağlıdır ancak aşağıdaki örnekte genel yönergeler verilmiştir:
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 } }