Ek sensörleri destekleme

Standart bir Bluetooth Düşük Enerji GATT profili uygulayan fitness cihazları Google Fit tarafından otomatik olarak desteklenir. Cihazınız bu profillerden birini uygulamazsa fitness cihazıyla iletişimi yöneten ve bunu Google Fit'e bir yazılım sensörü olarak gösteren bir Android uygulaması oluşturabilirsiniz. Uygulamanızda özel yazılım sensörleri de görebilirsiniz.

Uygulamanızda bir yazılım sensörü oluşturmak için FitnessSensorService sınıfını genişletir ve manifest dosyasında bir hizmet olarak belirtirsiniz. Kullanıcılar uygulamanızı yüklediklerinde Google Fit, yazılım sensörlerinizi diğer uygulamaların kullanımına sunar. Bir uygulama, uygulamanızdaki yazılım sensöründen veri almak için kaydolduğunda Google Fit, hizmetinize bağlanır.

Sensör hizmeti bildirme

Yazılım sensörü tanımlamak için uygulamanızın manifest dosyasında FitnessSensorService komutunu belirtin:

<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ğinde belirtildiği gibi ayrı bir işlemde çalışır. Daha fazla bilgi için İşlemler bölümüne bakın.

Sensör hizmeti uygulama

Yazılım sensörü uygulamak için FitnessSensorService sınıfını genişletin ve soyut yöntemlerini uygulayın. Uygulama işleminin ayrıntıları belirli kullanım alanınıza bağlı olsa da 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
    }
}