एंड्रॉइड में ह्यूमिडिटी (आर्द्रता) सेंसर सपोर्ट जांचें
यह ट्यूटोरियल दिखाता है कि Sensor.TYPE_RELATIVE_HUMIDITY का उपयोग करके कैसे जांचा जाए कि डिवाइस में सापेक्ष आर्द्रता सेंसर है या नहीं।
चरण 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="#F3E5F5"
android:text="जांच हो रही है..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.humiditycheck;
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);
checkHumiditySupport();
}
private void checkHumiditySupport() {
// सापेक्ष आर्द्रता सेंसर
Sensor humiditySensor = sensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
if (humiditySensor != null) {
sensorStatus.setText("✓ ह्यूमिडिटी सेंसर सपोर्ट करता है");
sensorStatus.setTextColor(0xFF4CAF50);
String info = String.format(
"सेंसर: %s\nवेंडर: %s\nवर्जन: %d\nरेंज: %.1f %%\nरिजॉल्यूशन: %.3f %%\nपावर: %.3f mA\nन्यूनतम डिले: %d µs",
humiditySensor.getName(),
humiditySensor.getVendor(),
humiditySensor.getVersion(),
humiditySensor.getMaximumRange(),
humiditySensor.getResolution(),
humiditySensor.getPower(),
humiditySensor.getMinDelay()
);
sensorStatus.append("\n\n" + info);
} else {
sensorStatus.setText("✗ ह्यूमिडिटी सेंसर सपोर्ट नहीं करता");
sensorStatus.setTextColor(0xFFF44336);
sensorStatus.append("\n\nमहत्वपूर्ण: लगभग किसी भी स्मार्टफोन में\nडेडिकेटेड ह्यूमिडिटी सेंसर नहीं होता।\n\nविकल्प:\n• मौसम API (OpenWeatherMap, आदि)\n• ब्लूटूथ ह्यूमिडिटी सेंसर (BLE)\n• वियरेबल्स (कुछ स्मार्टवॉच)\n• IoT डिवाइसेज (स्मार्ट होम हब)");
}
}
}
ह्यूमिडिटी सेंसर तथ्य
| विशेषता | विवरण |
|---|---|
| मापता है | सापेक्ष आर्द्रता (% RH) |
| रेंज | 0% - 100% |
| स्मार्टफोन में उपलब्धता | लगभग कभी नहीं (सैमसंग गैलेक्सी S4 में था, फिर हटा दिया गया) |
| उपलब्ध डिवाइस | कुछ रग्ड फोन, विशेष IoT डिवाइस, वियरेबल्स |
| API लेवल | API 14+ (Android 4.0) |
आर्द्रता डेटा पढ़ना (यदि उपलब्ध हो)
SensorEventListener humidityListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float humidity = event.values[0]; // % में
runOnUiThread(() -> {
humidityText.setText(String.format("आर्द्रता: %.1f%%", humidity));
// कम्फर्ट लेवल
String comfort;
if (humidity < 30) comfort = "शुष्क";
else if (humidity < 60) comfort = "आरामदायक";
else comfort = "आर्द्र";
comfortText.setText(comfort);
});
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
व्यावहारिक विकल्प: मौसम API
// OpenWeatherMap API उदाहरण
// निर्भरता: implementation 'com.squareup.retrofit2:retrofit:2.9.0'
interface WeatherApi {
@GET("weather")
Call getWeather(@Query("lat") double lat,
@Query("lon") double lon,
@Query("appid") String apiKey,
@Query("units") String units);
}
data class WeatherResponse(
val main: Main,
val weather: List
) {
data class Main(val humidity: Int, val temp: Float)
data class Weather(val description: String)
}
// उपयोग
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.openweathermap.org/data/2.5/")
.addConverterFactory(GsonConverterFactory.create())
.build();
WeatherApi api = retrofit.create(WeatherApi.class);
api.getWeather(lat, lon, "YOUR_API_KEY", "metric")
.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
int humidity = response.body().main.humidity;
// UI अपडेट करें
}
@Override
public void onFailure(Call call, Throwable t) {}
});
चरण 4: टेस्ट करें
- किसी भी वास्तविक डिवाइस पर चलाएं
- "सपोर्ट नहीं करता" दिखना चाहिए (लगभग सभी फोन के लिए)
- सैमसंग गैलेक्सी S4 (2013) पर "सपोर्ट करता है" दिख सकता है
