0

设置新亮度后屏幕不刷新。我用谷歌搜索了它,尝试了一些东西,我做错了什么?

public class  Brightness  extends  Activity { 

@Override

public void onCreate(Bundle savedInstanceState) {  

    super.onCreate(savedInstanceState);

    setContentView(R.layout.brightness); 
    setResult(RESULT_OK);
    Button low = (Button)findViewById(R.id.low);

     low.setOnClickListener( new Button.OnClickListener() 
     {
            public void   onClick(View arg0)
            {
                setUp(100);

    }});
     Button medium = (Button)findViewById(R.id.medium);
     medium.setOnClickListener( new Button.OnClickListener()
     {
            public void   onClick(View arg0)
            {
                setUp(200);

    }});
     Button high = (Button)findViewById(R.id.high);
     high.setOnClickListener( new Button.OnClickListener()
     {
            public void   onClick(View arg0)
            {
                setUp(255);

    }});         
}
    public void setUp(int SysBackLightValue)
    {
        android.provider.Settings.System.putInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS,  SysBackLightValue);
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.screenBrightness = SysBackLightValue;
        getWindow().setAttributes(layoutParams);
        finish();
    }
}

这是它调用 Brightness.java 的活动

if (resultCode == Activity.RESULT_OK && requestCode == 10)
    {
        Log.i("login", "In ActivityRedult My screen brightness is ");
        try 
        {
            oldBrightness = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);
            WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
            layoutParams.screenBrightness = oldBrightness;
            getWindow().setAttributes(layoutParams);
                    } 
        catch (SettingNotFoundException e1) 
        {
            Log.i("login", "CATCH My screen brightness is " + e1.toString());
            e1.printStackTrace();
        }            
    }
}
4

1 回答 1

0

我不记得这样做的原因,但是有两种设置亮度的方法,并且它们在不同的时间使用(或者可能由不同的api支持)

这是我在市场上用于我的应用程序 Super Dimmer 的代码的一部分(针对您的情况进行了重构)。尝试改用此代码:

oldBrightness = Settings.System.getInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, oldBrightness);    
WindowManager.LayoutParams llayoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = (float) (oldBrightness/ 255.0);
getWindow().setAttributes(layoutParams);

我认为不同之处在于您缺少 putInt()。另外,你的屏幕总是全亮吗?我可能是错的,但在我的应用程序中,当我设置 layoutParams 属性时,我除以 255,它就像一个魅力。

于 2013-05-20T14:36:34.003 回答