एंड्रॉइड में प्रेशर (दबाव/बैरोमीटर) सेंसर सपोर्ट जांचें
यह ट्यूटोरियल दिखाता है कि Sensor.TYPE_PRESSURE का उपयोग करके कैसे जांचा जाए कि डिवाइस में बैरोमीटर (वायुमंडलीय दबाव सेंसर) है या नहीं।
चरण 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="#E0F2F1"
android:text="जांच हो रही है..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.pressurecheck;
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);
checkPressureSupport();
}
private void checkPressureSupport() {
Sensor pressureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
if (pressureSensor != null) {
sensorStatus.setText("✓ प्रेशर सेंसर (बैरोमीटर) सपोर्ट करता है");
sensorStatus.setTextColor(0xFF4CAF50);
String info = String.format(
"सेंसर: %s\nवेंडर: %s\nवर्जन: %d\nरेंज: %.1f hPa\nरिजॉल्यूशन: %.3f hPa\nपावर: %.3f mA\nन्यूनतम डिले: %d µs",
pressureSensor.getName(),
pressureSensor.getVendor(),
pressureSensor.getVersion(),
pressureSensor.getMaximumRange(),
pressureSensor.getResolution(),
pressureSensor.getPower(),
pressureSensor.getMinDelay()
);
sensorStatus.append("\n\n" + info);
} else {
sensorStatus.setText("✗ प्रेशर सेंसर सपोर्ट नहीं करता");
sensorStatus.setTextColor(0xFFF44336);
sensorStatus.append("\n\nनोट: बैरोमीटर आमतौर पर मिड-रेंज से हाई-एंड फोन में होता है।\nउपयोग: ऊंचाई मापन, मौसम पूर्वानुमान, फ्लोर डिटेक्शन।");
}
}
}
बैरोमीटर सेंसर विवरण
| विशेषता | विवरण |
|---|---|
| मापता है | वायुमंडलीय दबाव (hPa / mbar) |
| सामान्य रेंज | 300 - 1100 hPa |
| समुद्र तल पर | ~1013.25 hPa |
| रिजॉल्यूशन | ~0.01 - 0.1 hPa |
| उपयोग | ऊंचाई, मौसम परिवर्तन, फ्लोर डिटेक्शन, GPS सहायता |
| उपलब्धता | मिड-रेंज/हाई-एंड फोन (Pixel, Samsung S/Note, OnePlus, आदि) |
दबाव से ऊंचाई कैलकुलेट करना
// बैरोमेट्रिक फॉर्मूला (सरलीकृत)
// h = 44330 * (1 - (P/P0)^(1/5.255))
// P = वर्तमान दबाव, P0 = समुद्र तल दबाव (1013.25 hPa)
public float pressureToAltitude(float pressure, float seaLevelPressure) {
return 44330f * (1f - (float) Math.pow(pressure / seaLevelPressure, 1f / 5.255f));
}
// उपयोग
float currentPressure = event.values[0]; // hPa में
float altitude = pressureToAltitude(currentPressure, 1013.25f);
// नोट: मौसम परिवर्तन से दबाव बदलता है, इसलिए निरपेक्ष ऊंचाई सटीक नहीं
// सापेक्ष ऊंचाई परिवर्तन (फ्लोर बदलना) अधिक विश्वसनीय
बैरोमीटर डेटा पढ़ना
SensorEventListener pressureListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float pressure = event.values[0]; // hPa में
runOnUiThread(() -> {
pressureText.setText(String.format("दबाव: %.2f hPa", pressure));
altitudeText.setText(String.format("अनुमानित ऊंचाई: %.1f मी",
pressureToAltitude(pressure, referencePressure)));
});
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
// रेफरेंस दबाव कैलिब्रेट करें (वर्तमान ऊंचाई ज्ञात हो)
float referencePressure = currentPressure; // ज्ञात ऊंचाई पर सेट करें
अनुप्रयोग
- ऊंचाई/फ्लोर ट्रैकिंग: हाइकिंग, इंडोर नेविगेशन, लिफ्ट डिटेक्शन
- मौसम निगरानी: दबाव गिरना = तूफान आना, बढ़ना = मौसम साफ होना
- GPS सहायता: ऊंचाई लॉक तेज करने के लिए
- फिटनेस: चढ़ाई/उतराई ट्रैकिंग
- विमानन: केबिन दबाव निगरानी
चरण 4: टेस्ट करें
- वास्तविक डिवाइस पर चलाएं
- हाई-एंड फोन (Pixel, Galaxy S/Note, OnePlus 7+) पर "सपोर्ट करता है" दिखेगा
- बजट/मिड-रेंज फोन में अक्सर नहीं होता
