एंड्रॉइड में डायनामिक सेंसर डिस्कवरी सपोर्ट जांचें
यह ट्यूटोरियल दिखाता है कि SensorManager.isDynamicSensorDiscoverySupported() का उपयोग करके कैसे जांचा जाए कि डिवाइस रनटाइम पर सेंसर्स की डायनामिक खोज सपोर्ट करता है या नहीं।
चरण 1: प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं (API 24+ आवश्यक)।
चरण 2: लेआउट (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="24dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/sensorStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="28sp"
android:textStyle="bold"
android:layout_marginTop="30dp"
android:padding="24dp"
android:background="#F3E5F5"
android:text="जांच हो रही है..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.dynamicsensorcheck;
import android.content.Context;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.TextView;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView sensorStatus;
private SensorManager sensorManager;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorStatus = findViewById(R.id.sensorStatus);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
checkDynamicSensorDiscovery();
}
private void checkDynamicSensorDiscovery() {
// API 24 (Android 7.0 Nougat) में जोड़ा गया
boolean supported = sensorManager.isDynamicSensorDiscoverySupported();
if (supported) {
sensorStatus.setText("✓ डायनामिक सेंसर डिस्कवरी सपोर्ट करता है");
sensorStatus.setTextColor(0xFF4CAF50);
} else {
sensorStatus.setText("✗ डायनामिक सेंसर डिस्कवरी सपोर्ट नहीं करता");
sensorStatus.setTextColor(0xFFF44336);
}
sensorStatus.append("\n\nAPI लेवल: " + Build.VERSION.SDK_INT);
}
}
डायनामिक सेंसर डिस्कवरी क्या है?
- परिभाषा: रनटाइम पर नए सेंसर्स की खोज और कनेक्ट करने की क्षमता
- उदाहरण: ब्लूटूथ LE सेंसर्स, बाहरी एक्सेसरीज, वियरेबल सेंसर्स
- API 24+ में पेश किया गया:
SensorManager.isDynamicSensorDiscoverySupported() - संबंधित API:
SensorManager.registerDynamicSensorCallback()- कॉलबैक रजिस्टर करेंDynamicSensorCallback.onDynamicSensorConnected()- नया सेंसर कनेक्ट होने परDynamicSensorCallback.onDynamicSensorDisconnected()- सेंसर डिस्कनेक्ट होने पर
डायनामिक सेंसर कॉलबैक उदाहरण
// API 24+
SensorManager.DynamicSensorCallback callback = new SensorManager.DynamicSensorCallback() {
@Override
public void onDynamicSensorConnected(Sensor sensor) {
// नया सेंसर उपलब्ध हुआ
Log.d("SENSOR", "कनेक्टेड: " + sensor.getName() + " (टाइप: " + sensor.getType() + ")");
// सेंसर के लिए लिस्टनर रजिस्टर करें
}
@Override
public void onDynamicSensorDisconnected(Sensor sensor) {
// सेंसर अब उपलब्ध नहीं
Log.d("SENSOR", "डिस्कनेक्टेड: " + sensor.getName());
}
};
// रजिस्टर करें
sensorManager.registerDynamicSensorCallback(callback, handler);
// अनरजिस्टर करें (onDestroy में)
sensorManager.unregisterDynamicSensorCallback(callback);
डायनामिक सेंसर्स के उदाहरण
- ब्लूटूथ LE हार्ट रेट मॉनिटर (TYPE_HEART_RATE)
- बाहरी तापमान सेंसर (TYPE_AMBIENT_TEMPERATURE)
- वियरेबल्स सेंसर्स (घड़ी से फोन तक)
- चिकित्सा उपकरण (ग्लूकोज, SpO2, आदि)
चरण 4: टेस्ट करें
- Android 7.0+ डिवाइस पर चलाएं
- अधिकांश आधुनिक फोन true लौटाएंगे
- पुराने डिवाइसेज false दिखा सकते हैं
