Java 如何在android中设置亮度最小值和最大值的范围

Java 如何在android中设置亮度最小值和最大值的范围,java,android,screen-brightness,light-sensor,Java,Android,Screen Brightness,Light Sensor,我想慢慢地、逐渐地降低亮度,用户不会感觉到亮度的变化,但问题是每次勒克斯值改变时,当我降低亮度值并使用线程睡眠时,应用程序就会挂起。有没有其他方法来处理勒克斯值,并获得准确的亮度。。。。 这是代码 什么时候 eEXecuteEquation()方法调用b_v1(亮度值) 更新 假设最小值=20,最大值=70 @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Se

我想慢慢地、逐渐地降低亮度,用户不会感觉到亮度的变化,但问题是每次勒克斯值改变时,当我降低亮度值并使用线程睡眠时,应用程序就会挂起。有没有其他方法来处理勒克斯值,并获得准确的亮度。。。。 这是代码

什么时候 eEXecuteEquation()方法调用b_v1(亮度值) 更新

假设最小值=20,最大值=70

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
        mLux = (int) event.values[0];
        String luxStr = String.valueOf(mLux);



        pr_lux = mLux;    //both are int
        eEXecuteEquation();



        tv.setText("Max: " + maxb + " Min: " + minb + "   Lux: " + luxStr
                + "  Brightness Value: " + b_v1 );

        if (b_v1 > -1) {

            if (b_v1 < minb) {

                try {
                    setBrightnessLevel(minb);
                } catch (SettingNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            } else if (b_v1 > maxb) {


                try {
                    setBrightnessLevel(maxb);

                } catch (SettingNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            } else if (b_v1 >= minb && b_v1 < maxb) {


                try {
                    b2 = b_v1;
                    setBrightnessLevel(b_v1);

                    sendvalue=1;
                    while (b_v1 == b2) {
                        try {
                            setBrightnessLevel(b2--);
                        } catch (SettingNotFoundException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }

                    }
                    sendvalue=0;

                    //new LongOperation().execute("");


                } catch (SettingNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }
        }



    }

}

int temp_max;

private void setBrightnessLevel(int SysBackLightValue11)
        throws SettingNotFoundException {

    int brightnessMode = Settings.System.getInt(getContentResolver(),
            Settings.System.SCREEN_BRIGHTNESS_MODE);
    if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
        Settings.System.putInt(getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
    }

    Settings.System.putInt(this.getContentResolver(),
            Settings.System.SCREEN_BRIGHTNESS, SysBackLightValue11);

    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.screenBrightness = (float) SysBackLightValue11 / 100;// 100 / 100.0f;
    getWindow().setAttributes(lp);
}
@覆盖
传感器更改时的公共无效(传感器事件){
if(event.sensor.getType()==sensor.TYPE\u LIGHT){
mLux=(int)event.values[0];
String luxStr=String.valueOf(mLux);
pr_lux=mLux;//两者都是int
eEXecuteEquation();
tv.setText(“最大:”+maxb+“最小:”+minb+“勒克斯:”+luxStr
+“亮度值:”+b_v1);
如果(b_v1>-1){
如果(b_v1maxb){
试一试{
设置正确级别(maxb);
}捕获(设置NotFound异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}else if(b_v1>=minb&&b_v1
检查此链接我认为很有帮助-兄弟我想处理自动亮度亮度值必须在我尝试的范围内,但如果你有解决方案或其他方法,它将无法处理