2010-12-06 17 views
9

Bir widget'dan ekran parlaklığını güncellemeye çalışıyorum ama bazı problemlerim var. Ekran görüntüsünü programla değiştirdikten sonra Brightness (Ekran Parlaklığı) Güncelleme

parlaklık seviyesini değiştirmek için i kullanın:

Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200); 

Bu (> Görüntü- aslında seviye doğrudur Parlaklık) ekran ayarını değiştirir ama ekranın etkili parlaklık değişmez. Ekranı kilitler ve kilidi açarsam, parlaklık nihayet ayarlanan değere dönüşür.

Bunun bir Ayarlar Güncellemesi sorunu olduğunu varsayıyorum, bu nedenle ayarlar değiştirildikten sonra ekran ayarları anında nasıl güncellenebilir?

WindowManager.LayoutParams lp = getWindow().getAttributes(); kullanılmalı, ancak bir Uygulama Widget'ında çalışıyorum, bu nedenle getWindow() yöntemi çağrılmıyor.

cevap

6

Benzer bir sorunla karşılaştım ve parlaklık değişikliğini yapmak için UI olmadan bir Etkinlik oluşturdum, Uygulama Widget'ından çalıştırmak için bir amaç kullanmıştım. İlk olarak, LayoutParams öğesinde değişiklik yapılacak değer screenBrightness.

+0

İyi fikir! Yeni bir etkinlik oluşturdunuz veya widget'ın içine mi eklediniz? – Mariux

+0

Sorunu çözdüğünüzden, açıklamak için bazı kodları yazabilir misiniz? Teşekkürler GeekYouUp! – Mariux

+0

Bir etkinlik oluşturmaya çalıştım, ancak parlaklık değişimi yalnızca etkinliğe uygulanır ... – Mariux

1

Daha sonra uygulamak için window.setAttributes yapmalısınız. GeekYouUp'un dediği gibi, Window nesnesini almak için kukla bir etkinlik yapabilirsiniz. Eğer ama size bir Aktivite uzanan değil bir kullanıcı tanımlı sınıfın içinden telefon ekran parlaklığını ayarlarken

+0

Kukla etkinliği nasıl oluşturabilirim? –

+0

dediği gibi, yalnızca UI ile ilişkilendirilmemiş bir etkinlik oluşturuyorsunuz –

0

siz, RemoteView'in içinde

Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness); 

// This makes the new screen brightness effective 
WindowManager.LayoutParams layoutParams = ((Activity)context).getWindow().getAttributes(); 
float b = brightness/255.0f; 
if(b == 0.0)  
    b = 0.01f; 
layoutParams.screenBrightness = b; 
((Activity)context).getWindow().setAttributes(layoutParams); 

Bu kod ince işler bu kodu kullanabilir miyim sadece içeriğe ihtiyacım var.

İlgili konular