2013-05-12 85 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

相关问题