सेंसर एपीआई की मदद से, आप रीयल टाइम में अपने ऐप्लिकेशन में सेंसर का रॉ डेटा पढ़ सकते हैं. इस्तेमाल की जाने वाली चीज़ें इस एपीआई से नीचे दिए गए काम करने होंगे:
- डिवाइस और साथी डिवाइसों पर उपलब्ध डेटा सोर्स की सूची बनाएं.
- रॉ सेंसर डेटा पाने के लिए लिसनर को रजिस्टर करें.
- श्रोताओं का पंजीकरण रद्द करें ताकि उन्हें अब अपरिष्कृत सेंसर डेटा न मिले.
उपलब्ध डेटा सोर्स की सूची बनाएं
डिवाइस और कंपैनियन मोड पर उपलब्ध सभी डेटा सोर्स की सूची पाने के लिए
इस्तेमाल करने के लिए,
SensorsClient.findDataSources
तरीका:
Kotlin
private val fitnessOptions = FitnessOptions.builder().addDataType(DataType.TYPE_STEP_COUNT_DELTA).build() // Note: Fitness.SensorsApi.findDataSources() requires the // ACCESS_FINE_LOCATION permission. Fitness.getSensorsClient(requireContext(), GoogleSignIn.getAccountForExtension(requireContext(), fitnessOptions)) .findDataSources( DataSourcesRequest.Builder() .setDataTypes(DataType.TYPE_STEP_COUNT_DELTA) .setDataSourceTypes(DataSource.TYPE_RAW) .build()) .addOnSuccessListener { dataSources -> dataSources.forEach { Log.i(TAG, "Data source found: ${it.streamIdentifier}") Log.i(TAG, "Data Source type: ${it.dataType.name}") if (it.dataType == DataType.TYPE_STEP_COUNT_DELTA) { Log.i(TAG, "Data source for STEP_COUNT_DELTA found!") ... } } } .addOnFailureListener { e -> Log.e(TAG, "Find data sources request failed", e) }
Java
FitnessOptions fitnessOptions = FitnessOptions.builder().addDataType(DataType.TYPE_STEP_COUNT_DELTA).build(); // Note: Fitness.SensorsApi.findDataSources() requires the // ACCESS_FINE_LOCATION permission. Fitness.getSensorsClient(getApplicationContext(), GoogleSignIn.getAccountForExtension(getApplicationContext(), fitnessOptions)) .findDataSources( new DataSourcesRequest.Builder() .setDataTypes(DataType.TYPE_STEP_COUNT_DELTA) .setDataSourceTypes(DataSource.TYPE_RAW) .build()) .addOnSuccessListener(dataSources -> { dataSources.forEach(dataSource -> { Log.i(TAG, "Data source found: ${it.streamIdentifier}"); Log.i(TAG, "Data Source type: ${it.dataType.name}"); if (dataSource.getDataType() == DataType.TYPE_STEP_COUNT_DELTA) { Log.i(TAG, "Data source for STEP_COUNT_DELTA found!"); ... } })}) .addOnFailureListener(e -> Log.e(TAG, "Find data sources request failed", e));
डेटा सोर्स के लिए डिवाइस के बारे में जानकारी पाने के लिए,
DataSource.getDevice
तरीका. डिवाइस की जानकारी, मिलते-जुलते ऐप्लिकेशन से अलग करने के लिए काम की होती है
अलग-अलग डिवाइस पर मौजूद सेंसर, सेंसर से डिवाइस की जानकारी
या डिवाइस के आधार पर डेटा को अलग-अलग तरीके से प्रोसेस करने में मदद करता है. उदाहरण के लिए, आपके पास
जिन्हें पहने जाने वाले डिवाइस पर मौजूद सेंसर का डेटा खास तौर पर पढ़ने में दिलचस्पी हो
लेकिन फ़ोन पर एक ही तरह के सेंसर से नहीं.
Device
पाने के लिए
इंस्टेंस जिस पर आपकी गतिविधि चल रही है,
Device.getLocalDevice
तरीका. यह तब काम आता है, जब आप यह देखना चाहते हैं कि डेटा सोर्स
उसी डिवाइस पर साइन इन करें जिस पर आपका ऐप्लिकेशन चल रहा है.
लिसनर जोड़ें
किसी खास तरह के फ़िटनेस डेटा टाइप का रॉ डेटा पाने के लिए, लिसनर जोड़ने के लिए या
कोई डेटा सोर्स है, तो
SensorsClient.add
तरीका:
Kotlin
val listener = OnDataPointListener { dataPoint -> for (field in dataPoint.dataType.fields) { val value = dataPoint.getValue(field) Log.i(TAG, "Detected DataPoint field: ${field.name}") Log.i(TAG, "Detected DataPoint value: $value") } } Fitness.getSensorsClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .add( SensorRequest.Builder() .setDataSource(dataSource) // Optional but recommended for custom // data sets. .setDataType(dataType) // Can't be omitted. .setSamplingRate(10, TimeUnit.SECONDS) .build(), listener ) .addOnSuccessListener { Log.i(TAG, "Listener registered!") } .addOnFailureListener { Log.e(TAG, "Listener not registered.", task.exception) }
Java
OnDataPointListener listener = dataPoint -> { for (Field field : dataPoint.getDataType().getFields()) { Value value = dataPoint.getValue(field); Log.i(TAG, "Detected DataPoint field: ${field.getName()}"); Log.i(TAG, "Detected DataPoint value: $value"); } }; Fitness.getSensorsClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .add( new SensorRequest.Builder() .setDataSource(dataSource) // Optional but recommended // for custom data sets. .setDataType(dataType) // Can't be omitted. .setSamplingRate(10, TimeUnit.SECONDS) .build(), listener ) .addOnSuccessListener(unused -> Log.i(TAG, "Listener registered!")) .addOnFailureListener(task -> Log.e(TAG, "Listener not registered.", task.getCause())); }
लिसनर हटाएं
रॉ डेटा अपडेट से किसी लिसनर को हटाने के लिए,
SensorsClient.remove
तरीका:
Kotlin
Fitness.getSensorsClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .remove(listener) .addOnSuccessListener { Log.i(TAG, "Listener was removed!") } .addOnFailureListener { Log.i(TAG, "Listener was not removed.") }
Java
Fitness.getSensorsClient(this, GoogleSignIn.getAccountForExtension(this, fitnessOptions)) .remove(listener) .addOnSuccessListener(unused -> Log.i(TAG, "Listener was removed!")) .addOnFailureListener(e -> Log.i(TAG, "Listener was not removed."));