एंड्रॉइड डिवाइस में मैग्नेटोमीटर (कम्पास) सेंसर सपोर्ट जांचें
यह ट्यूटोरियल दिखाता है कि SensorManager और Sensor.TYPE_MAGNETIC_FIELD का उपयोग करके कैसे जांचा जाए कि डिवाइस में मैग्नेटोमीटर सेंसर है या नहीं।
चरण 1: प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं।
चरण 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="#E3F2FD"
android:text="जांच हो रही है..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.magnetometercheck;
import android.content.Context;
import android.hardware.Sensor;
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);
checkMagnetometerSupport();
}
private void checkMagnetometerSupport() {
// मैग्नेटिक फील्ड सेंसर (मैग्नेटोमीटर) जांचें
Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
if (magneticSensor != null) {
sensorStatus.setText("✓ मैग्नेटोमीटर सपोर्ट करता है");
sensorStatus.setTextColor(0xFF4CAF50);
// अतिरिक्त सेंसर जानकारी
String info = String.format(
"सेंसर: %s\nवेंडर: %s\nवर्जन: %d\nरेंज: %.1f µT\nरिजॉल्यूशन: %.3f µT\nपावर: %.3f mA",
magneticSensor.getName(),
magneticSensor.getVendor(),
magneticSensor.getVersion(),
magneticSensor.getMaximumRange(),
magneticSensor.getResolution(),
magneticSensor.getPower()
);
sensorStatus.append("\n\n" + info);
} else {
sensorStatus.setText("✗ मैग्नेटोमीटर सपोर्ट नहीं करता");
sensorStatus.setTextColor(0xFFF44336);
}
}
}
मैग्नेटोमीटर सेंसर के उपयोग
- कम्पास ऐप्स: दिशा निर्धारण
- नेविगेशन: मैप्स में हेडिंग
- AR ऐप्स: ऑगमेंटेड रियलिटी ओरिएंटेशन
- मेटल डिटेक्शन: चुंबकीय क्षेत्र परिवर्तन
सामान्य सेंसर टाइप्स
| कॉन्स्टेंट | सेंसर | उपयोग |
|---|---|---|
TYPE_MAGNETIC_FIELD | मैग्नेटोमीटर | कम्पास, चुंबकीय क्षेत्र |
TYPE_ACCELEROMETER | एक्सेलेरोमीटर | त्वरण, झुकाव, स्टेप काउंट |
TYPE_GYROSCOPE | जायरोस्कोप | रोटेशन, कोणीय वेग |
TYPE_LIGHT | लाइट सेंसर | स्क्रीन ब्राइटनेस ऑटो |
TYPE_PROXIMITY | प्रॉक्सिमिटी | कॉल के दौरान स्क्रीन ऑफ |
सेंसर डेटा सुनने के लिए (बोनस)
// सेंसर लिस्टनर रजिस्टर करें
SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0]; // X-अक्ष µT में
float y = event.values[1]; // Y-अक्ष µT में
float z = event.values[2]; // Z-अक्ष µT में
// कम्पास हेडिंग कैलकुलेट करें
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
sensorManager.registerListener(listener, magneticSensor, SensorManager.SENSOR_DELAY_UI);
// ऑनपॉज में अनरजिस्टर करना न भूलें
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(listener);
}
चरण 4: टेस्ट करें
- वास्तविक डिवाइस पर ऐप चलाएं (एमुलेटर में मैग्नेटोमीटर नहीं होता)
- परिणाम दिखाएगा कि सेंसर मौजूद है या नहीं
- यदि मौजूद है, तो सेंसर विवरण भी दिखाएगा
