2013-04-20 6 views
6

मुझे स्क्रीन चमक को प्रोग्रामेटिक रूप से बदलने की आवश्यकता है। मैंने इस Can't apply system screen brightness programmatically in Android जैसे कई समाधान पढ़े।स्क्रीन चमक को कुशलतापूर्वक बदलना

मेरी समस्या यह है कि उन समाधानों से गतिविधि प्रभावी होने के लिए बदलती है (एक डमी गतिविधि की तरह कुछ हो रहा है) और मैं एक गतिविधि स्विच के ऊपरी हिस्से से बचना चाहता हूं।

क्या कोई अन्य समाधान है ... शायद मूल कोड का उपयोग कर ताकि स्क्रीन चमक तुरंत बदल जाएगी?

उत्तर

7

निम्नलिखित एक ही गतिविधि को तुरंत प्रभावित करता है, इसे पुनरारंभ करने की कोई आवश्यकता नहीं है। गतिविधि को रोकें/फिर से शुरू करने पर स्क्रीन ब्राइटनेस विशेषता को भी याद किया जाता है।

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = 1; // 0f - no backlight ... 1f - full backlight 
getWindow().setAttributes(lp); 

लेकिन यदि आपके सिस्टम सिस्टम में स्वचालित बैकलाइट स्तर सक्षम है तो इसका कोई प्रभाव नहीं पड़ता है। This solution स्वचालित बैकलाइट को बंद करने में मदद करनी चाहिए।

+0

WindowManager का उपयोग कर स्क्रीन चमक सेट करना। LayoutParams काम करता है भले ही "स्वचालित बैकलाइट स्तर" सक्षम है। जैसा कि प्रलेखन में बताया गया है, "स्क्रीन की उपयोगकर्ता की पसंदीदा चमक को ओवरराइड करने के लिए स्क्रीनब्राइटनेस का उपयोग किया जा सकता है"। एंड्रॉइड 4.1 और 4.4 पर परीक्षण किया गया। यहां एक एंड्रॉइड फ्रेमवर्क इंजीनियर से एक पुष्टिकरण है: https://groups.google.com/forum/#!msg/android-developers/tYlCn7bvAmw/2quRf_ZZZigJ – AnAurelian

संबंधित मुद्दे