एंड्रॉइड में लाइट (परिवेश प्रकाश) सेंसर सपोर्ट जांचें
यह ट्यूटोरियल दिखाता है कि Sensor.TYPE_LIGHT का उपयोग करके कैसे जांचा जाए कि डिवाइस में एंबिएंट लाइट सेंसर है या नहीं। यह ऑटो-ब्राइटनेस के लिए उपयोग होता है।
चरण 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="#FFFDE7"
android:text="जांच हो रही है..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.lightsensorcheck;
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);
checkLightSensorSupport();
}
private void checkLightSensorSupport() {
Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if (lightSensor != 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",
lightSensor.getName(),
lightSensor.getVendor(),
lightSensor.getVersion(),
lightSensor.getMaximumRange(),
lightSensor.getResolution(),
lightSensor.getPower(),
lightSensor.getMinDelay()
);
sensorStatus.append("\n\n" + info);
} else {
sensorStatus.setText("✗ लाइट सेंसर सपोर्ट नहीं करता");
sensorStatus.setTextColor(0xFFF44336);
}
}
}
लाइट सेंसर विवरण
| विशेषता | विवरण |
|---|---|
| मापता है | परिवेश प्रकाश तीव्रता (लक्स में) |
| सामान्य रेंज | 1 - 65,000+ लक्स |
| संदर्भ मान | अंधेरा कमरा: 10-50, ऑफिस: 300-500, धूप: 10,000-100,000+ |
| प्रकार | फोटोडायोड/फोटोट्रांजिस्टर |
| मुख्य उपयोग | ऑटो-ब्राइटनेस, कीबोर्ड बैकलाइट, कैमरा एक्सपोजर |
| रिपोर्टिंग मोड | CONTINUOUS या ON_CHANGE |
लाइट सेंसर डेटा पढ़ना
SensorEventListener lightListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float lux = event.values[0];
runOnUiThread(() -> {
luxText.setText(String.format("प्रकाश: %.1f लक्स", lux));
// प्रकाश स्तर वर्गीकरण
String level;
int color;
if (lux < 50) { level = "अंधेरा"; color = 0xFF333333; }
else if (lux < 200) { level = "कम"; color = 0xFF8D6E63; }
else if (lux < 500) { level = "सामान्य (इंडोर)"; color = 0xFF4CAF50; }
else if (lux < 10000) { level = "उज्ज्वल (आउटडोर छाया)"; color = 0xFFFFC107; }
else { level = "बहुत उज्ज्वल (सीधी धूप)"; color = 0xFFF44336; }
levelText.setText(level);
levelText.setTextColor(color);
});
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};
ऑटो-ब्राइटनेस कार्यान्वयन (सरलीकृत)
// लक्स से स्क्रीन ब्राइटनेस मैपिंग (0-255)
private int luxToBrightness(float lux) {
if (lux <= 10) return 20; // न्यूनतम
if (lux <= 50) return 50;
if (lux <= 200) return 100;
if (lux <= 500) return 150;
if (lux <= 1000) return 200;
if (lux <= 5000) return 230;
return 255; // अधिकतम
}
// सिस्टम ब्राइटनेस सेट करना (WRITE_SETTINGS परमिशन चाहिए)
Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, brightness);
Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
महत्वपूर्ण नोट्स
- लगभग सभी स्मार्टफोन में लाइट सेंसर होता है (ऑटो-ब्राइटनेस के लिए)
- कुछ बजट डिवाइसेज में नहीं हो सकता
- स्क्रीन के ऊपर (नॉच/बेजल में) स्थित होता है
- केस/स्क्रीन प्रोटेक्टर सेंसर को ब्लॉक कर सकते हैं
- कैलिब्रेशन डिवाइस-विशिष्ट होता है
चरण 4: टेस्ट करें
- वास्तविक डिवाइस पर चलाएं
- "सपोर्ट करता है" दिखना चाहिए
- टॉर्च/अंधेरे कमरे में लेकर मान बदलते देखें (लाइव रीडिंग कोड के साथ)
