2013-04-20 19 views
6

Ekran parlaklığını programsal olarak değiştirmem gerekiyor. Bu Can't apply system screen brightness programmatically in Android gibi çoklu çözümler okudum.Ekran parlaklığını etkin bir şekilde değiştirme

Sorunum, bu çözümlerin etkinliğin etkin olmasını (anında bir kukla aktivite gibi bir şey olması) gerektirdiğini ve bir etkinlik anahtarının ek yükünden kaçınmak istediğimi göstermesidir.

Başka bir çözüm var mı? Belki de yerel kodu kullanarak ekran parlaklığı hemen değişecek?

cevap

7

Aşağıdakiler tek bir etkinliği hemen etkiler, yeniden başlatmaya gerek yoktur. Etkinlik ayrıca duraklat/devam ettirme üzerindeki screenBrightness özelliğini de hatırlar.

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

Sistem ayarlarında otomatik arka ışık seviyesine sahipseniz, bunun hiçbir etkisi yoktur. Otomatik arka aydınlatmayı kapatmak için This solution yardımcı olmalıdır.

+0

WindowManager.LayoutParams kullanarak ekran parlaklığını ayarlamak, "otomatik arka ışık seviyesi" IS etkin olsa bile çalışır. Dokümantasyonda belirtildiği gibi, "screenBrightness, kullanıcının tercih edilen ekran parlaklığını geçersiz kılmak için kullanılabilir". Android 4.1 ve 4.4 üzerinde test edilmiştir. İşte bir Android çerçeve mühendisinin onayı: https://groups.google.com/forum/#!msg/android-developers/tYlCn7bvAmw/2quRf_ZZZigJ – AnAurelian

İlgili konular