2012-10-21 115 views
0

我正在嘗試從Widget更改屏幕亮度。基本上,我遵循了以下頁面的建議。 Changing the Screen Brightness System Setting AndroidAndroid更改屏幕蒙板的屏幕亮度

到目前爲止,這是我所能做到的。 1.我有一個主要的按鈕活動,當我點擊按鈕時,我可以改變屏幕的亮度。

  1. 我有一個按鈕的小部件。 我已確認RefreshScreen類正在從窗口小部件按鈕中調用。 我從AppWidgetProvider調用這個類。 問題 屏幕亮度不變。 當我用調試模式運行問題時,出現以下警告。

    12月10日至21日:20:21.579:W/BackupManagerService(137):dataChanged但沒有與會者PKG = 'com.android.providers.settings爲' uid = 10086

    12月10日至21日:20:21.579 :W/InputManagerService(137):窗口已經集中,忽視聚焦增益的:[email protected]

我有以下權限集。

我有以下代碼來更改亮度。 我很抱歉讓代碼混淆,但我有兩個按鈕。 當亮度按鈕更改時,屏幕應該顯示最亮。 當音量按鈕改變時,屏幕應該是最暗和最亮之間的一半。

任何輸入,非常感謝。 謝謝。

public class RefreshScreen extends Activity { 
    public static String BRIGHTNESS_VALUE = "BRIGHTNESS_VALUE"; 
    public static String BRIGHTNESS_CHANGE = "BRIGHTNESS_ACTION"; 
    public static String VOLUME_CHANGE = "VOLUME_ACTION"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     Intent intent = getIntent(); 
     String value = intent.getStringExtra(BRIGHTNESS_VALUE); 

     WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 

     if (value.equals(BRIGHTNESS_CHANGE)) { 
      Toast.makeText(this, "BRIGHTNESS CHANGE Clicked", Toast.LENGTH_LONG).show(); 
      android.provider.Settings.System.putInt(getContentResolver(), 
        android.provider.Settings.System.SCREEN_BRIGHTNESS, 255); 

      layoutParams.screenBrightness = 1F; 
      getWindow().setAttributes(layoutParams); 
     } 
     if (value.equals(VOLUME_CHANGE)) { 
      Toast.makeText(this, "VOLUME CHANGE Clicked", Toast.LENGTH_LONG).show(); 
      android.provider.Settings.System.putInt(getContentResolver(), 
        android.provider.Settings.System.SCREEN_BRIGHTNESS, 125); 

      layoutParams.screenBrightness = 0.5F; 
      getWindow().setAttributes(layoutParams); 
     } 
     finish(); 
    } 

} 
+0

我發現,如果我推薦完成(),此代碼的作品。任何想法爲什麼? – Hiro

回答

0

看來你的活動是將從窗口更新配置的人......(我的意思是,你的活動是來自其他問題的虛擬活動)。如果您在顯示之前殺死您的活動,您將無法刷新系統亮度... 嘗試將finish()放入活動onResume()中...這可能正常工作。