2013-05-12 94 views
1

我在那裏,我的應用程序中有一個seekbar來改變亮度和工作。 那麼問題是,當我按下返回鍵導航到另一個活動時,亮度會恢復爲默認..按下後退按鈕時亮度不會保存

這裏是我的代碼來改變亮度:提前

private void applyBrightnessListener() { 
    SeekBar brightnessControl = (SeekBar) findViewById(R.id.brightnessControl); 

    brightnessControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) { 
      // TODO Auto-generated method stub 
      float BackLightValue = (float)arg1/100; 
      WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
      layoutParams.screenBrightness = BackLightValue; 
      getWindow().setAttributes(layoutParams); 
      android.provider.Settings.System.putInt(
       GeneralSettings.this.getContentResolver(), 
       android.provider.Settings.System.SCREEN_BRIGHTNESS, 
       (int)BackLightValue); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar arg0) { 
     // TODO Auto-generated method stub 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar arg0) { 
     // TODO Auto-generated method stub 
     } 
    }); 
} 

非常感謝; )

+0

看起來你試圖改變全局設備的亮度級別,你是否檢查自動模式是否啓用? – ozbek 2013-05-12 16:04:38

+0

自動模式被禁用 – TiagoM 2013-05-12 16:07:18

回答

1

很遺憾,您需要跟蹤亮度併爲每項活動進行設置。你不能設置一次並保持它。

因此,您需要將值存儲在您的偏好設置中或其他方式,然後在開始每個活動時加載首選項並將其設置在您的活動中。

一個好方法是將Activity的子類放入onCreate方法中。

   WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
       layoutParams.screenBrightness = savedBackLightValue; 
       getWindow().setAttributes(layoutParams); 
+0

感謝您的回覆!哦我的天哪!真的嗎?每次我在我的應用程序上做一個新的活動,我都需要延長那一個? :s – TiagoM 2013-05-12 16:01:51

+1

是的。這聽起來像是一種痛苦,但是如果你繼承了一些東西,你只需要寫一次(或幾次,如果你有幾種類型的活動) – HalR 2013-05-12 16:03:00

+0

是的我有10個活動,但是我會測試它,如果它起作用,至少是一個解決方案:/比沒有好 – TiagoM 2013-05-12 16:05:48

相關問題