मैं जवाब देने का प्रयास करूंगा क्योंकि मैंने कुछ समय पहले ही इसकी खोज की है। मेरा लघु उत्तर है: व्यापक शोध के बाद ऑटो मोड पर वर्तमान चमक स्तर प्राप्त करने का कोई तरीका नहीं मिला है।
मैं इसे कई उत्तरों में तोड़ दूंगा। मैं परिसर को नहीं छोड़ूंगा, ताकि googlers को यह सहायक मिल सके। छोड़ें जो आपको चाहिए नहीं है।
1- प्राप्त चमक सेटिंग मूल्य
जब screenBrightness
0 से कम है मैं वरीय स्क्रीन चमक के साथ शुरू करना चाहते हैं। मैं यह मूल्य कैसे प्राप्त कर सकता हूं?
ऐसे व्यक्ति के लिए जिसकी प्रतिष्ठा है, मुझे यकीन है कि आप खोज के बारे में पहले ही ड्रिल जानते हैं। एसओ पर इसके बारे में बहुत सारे जवाब हैं। बस इसी तरह के प्रश्नों के साथ सही पैनल की जांच करें ... जो कहा, मैं ज्यादा जानकारी नहीं दूंगा।
int oldBrightness = Settings.System.getInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS);
यह कैसे Android के BrightnessPreference.java
2.3.5 में ऐसा है (लाइन 68 देखें)। यह भी वही है (व्यावहारिक कारणों से) क्या lfor पोस्ट किया गया है।
यह नाम दिया है कुछ नहीं के लिए वर्ष चमक नहीं है। यह एक सेटिंग है जो कहीं भी संग्रहीत है, वर्तमान मूल्य नहीं। आप केवल यह सुनिश्चित कर सकते हैं कि यदि आप मैन्युअल चमक मोड में हैं तो उपयोगकर्ता यह अनुभव कर रहा है कि उपयोगकर्ता क्या अनुभव कर रहा है। अन्यथा, आप बस नहीं जानते। आप की जाँच करनी चाहिए:
int mode = Settings.System.getInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE);
2- स्क्रीन चमक को सुनें बदलता है
हम जानते हैं, आम तौर पर, जब हम एंड्रॉयड में परिवर्तन को सुनने के लिए चाहते हैं, हम Intent
कार्यों को सुनने की कोशिश कर सकते हैं, BroadcastReceiver
दर्ज की एस और वह सब।हालांकि, AFAIK, उदाहरण के लिए SCREEN_[ON|OFF]
जैसे चमक परिवर्तनों के लिए ACTION_
नहीं है। शायद सिस्टम में एक छिपा हुआ है, लेकिन मैंने इसे कभी नहीं देखा है, और यदि यह सार्वजनिक रूप से उपलब्ध नहीं है, तो आपके पास उससे निपटने के सभी संभावित नुकसान हैं।
डियान हैकबर्न से दिसम्बर 2010 का एक संदेश है, जहां वह कहती है कि "there is no broadcast for screen brightness changes"।
तो, मुझे विश्वास नहीं है कि ऐसा कुछ करने में एक तरीका है। aprox
Settings.System.putInt(getContext().getContentResolver(),
SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
3- व्यापक प्रकाश को सुनें बदलता है
आप कर सकते हैं, हालांकि,: बेशक, आप सेटिंग में ही बदल सकते हैं। प्रकाश की मात्रा का पता लगाएं। आप implements SensorEventListener
करने की जरूरत है और:
// class definition:
private SensorManager sensorManager;
@Override
public void onSensorChanged(SensorEvent event) {
float values = event.values[0]; // Ambient LUX
}
// onCreate:
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_UI);
4- अनुमान चमक परिवर्तन
कि सभी ने कहा, मैं भी Hackborn के सवाल दोहराने चाहिए के बाद: "क्या आप को पूरा करने के प्रयास कर रहे हैं" (यह बक्षीस मालिक के लिए है)। मुझे यह देखने में खुशी होगी कि कैसे एंड्रॉइड मैप्स परिवेश लक्स चमक स्क्रीन करने के लिए। मुझे पूरा यकीन है कि यह रैखिक चीज नहीं है (नक्शा Sensor.getMaximumRange()
रैखिक रूप से 0..1 फ्लोट अंतराल पर)। मैंने देखा है कि आम तौर पर यह मैप किया गया लॉगरिदमिक (निचले चमक सीमा में बेहतर समायोजन प्रदान करता है), लेकिन मुझे पैरामीटर के बारे में कोई जानकारी नहीं है। शायद एक सुझाया गया डिफ़ॉल्ट तरीका है कि हर कोई उपयोग करता है, लेकिन मैं कोई विशेषज्ञ नहीं हूं।
आप मिल सकता है कैसे एंड्रॉयड स्रोतों जहां यह है कि, यह है कि यह बहुत अच्छा होगा में जगह में देख कर यह करता है। लेकिन वैसे भी, मैं आपको एक ही प्रश्न के साथ छोड़ने के लिए इतना लंबा नहीं आया था। मुझे जो मिला है वह Sensor.getMaximumRange()
SensorEvent
values[0]
से प्राप्त होने वाली चीज़ों के अनुरूप नहीं है। यहां, मेरे पास एक तीव्र सेंसर (नेक्सस एस) है, और हालांकि रिपोर्ट अधिकतम 3,000 है, मैंने 10,240 तक के मान देखे हैं।
तो, सेंसर प्राप्त करना विश्वसनीय नहीं है (?)। मैं एंड्रॉइड का उपयोग करके देखे गए व्यवहार से अनुमान लगा रहा हूं, कि किसी भी तरह से यह अधिकतम चमक के लिए MaxaxValue() प्राप्त करता है, और इसके ऊपर कोई भी मूल्य कोई फर्क नहीं पड़ता है।
5- कहाँ यहाँ
से जाने के लिए मैं एंड्रॉयड स्रोतों में अधिक देखने के लिए चाहते हैं। कहीं, शायद निम्न स्तर पर, हार्डवेयर प्रबंधन सामग्री, आप देख सकते हैं कि वे कैसे मानचित्र करते हैं। फिर भी, मुझे आश्चर्य है कि क्या यह विश्वसनीय है, इस बात पर विचार करते हुए कि डियान हैकबर्न ने क्या कहा (वे ऐसा नहीं करना चाहते हैं कि आप ऐसा करें)। मुझे लगता है कि उनके पास इसका पर्दाफाश करने का कोई कारण नहीं था। शायद जरूरत है: ऐप को सिस्टम सेटिंग क्यों जाननी चाहिए? इसे या तो अपने स्वयं के, ऐप-वाइड लेवल, या चरम मामलों में, सिस्टम-व्यापी प्रतिस्थापन या प्रबंधक के लिए अपनी "ऑटोब्राइटनेस चेंज विधि" (ऊपर बिंदु 4 के रूप में) प्रदान करने की आवश्यकता है। शायद यही मूल डेवलपर्स सोचा था।
वैसे भी, यदि कोई अन्य विवरण ढूंढता है, तो मुझे जानकर बहुत खुशी होगी।
मुझे लगता है कि मेरे लिए सवाल का ध्यान यह है (धन्यवाद डेविड): क्या मैं स्वचालित मोड में सिस्टम द्वारा सेट की गई वास्तविक वास्तविक स्क्रीन चमक प्राप्त कर सकता हूं? – Yossi
@hpique क्या आपको इस प्रश्न/समस्या का समाधान मिल सकता है? – safari