Android屏幕亮度变化不起作用

时间:2014-06-29 01:14:32

标签: android screen

当我按住按钮时,我有以下代码来改变屏幕亮度

ImageButton mfdBRTUp = (ImageButton) findViewById(R.id.imageButtonBRTup);
mfdBRTUp.setOnTouchListener(new OnTouchListener() {
    boolean mHeldDown = false;
    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {


        if (arg1.getAction()==MotionEvent.ACTION_DOWN){
            mHeldDown = true;
            Thread thread = new Thread()
            {
                @Override
                public void run() {
                    try {
                        while(mHeldDown) {
                            MainActivity.this.runOnUiThread(new Runnable() {
                                public void run() {
                                    mBackLightValue += 4;
                                    if(mBackLightValue>100)
                                        mBackLightValue=100;
                                    Log.d("onCreateOptionsMenu", "onTouch ACTION_DOWN mBackLightValue="+mBackLightValue);
                                    WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
                                    layoutParams.screenBrightness = mBackLightValue;
                                    getWindow().setAttributes(layoutParams);
                                }
                            });                                 
                            sleep(100);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            thread.start();

        }
        if (arg1.getAction()==MotionEvent.ACTION_UP){
            mHeldDown = false;
        }
        return false;
    }
});

一切似乎都很好,logcat输出显示mBackLightValue最多为100(当然我还有另一个几乎相同的按钮)

问题是,它什么也没做。我在设置中检查我的屏幕亮度控制,而不是自动。

我已经阅读了关于这个主题的几个主题并且似乎只是说必要的是这个

WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = mBackLightValue;
getWindow().setAttributes(layoutParams);

没有权限或任何额外的,所以我缺少什么?感谢。

1 个答案:

答案 0 :(得分:1)

您的代码似乎将亮度提升至100,但屏幕亮度应在 0到1 范围内,而不是 0到100 。超过1的任何内容都将被视为全亮度,这可能是导致问题的原因。尝试将代码更改为0.04,最大值为1,而不是4和100。

来源:http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness