2012-06-20 2 views
0

Мое приложение - это простой «Яркость», который также изменяет яркость системы (что нелегко реализовать: D).
Я на самом деле настроил все и его работоспособность ... за исключением одной немного раздражающей вещи ... каждый раз, когда яркость меняет экран, сначала «мигает» до самой высокой яркости (например, 100% света), а через полсекунды , он изменяется на правую яркость.Вспышка при изменении яркости системы

Пример: Система Яркость должна быть 120: (макс.) 1. Изменение 255, adter половина второго изменения 120.

Вот код из моих двух классов. Класс Dummy используется для «перезагрузки» (необходимо для изменения яркости).

EDIT: кстати. Я думаю, проблема заключается в «lp.screenBrightness = 100/100.0f;» в фиктивной активности. Но это не будет работать без него:/


test.java

public class Test extends Activity 
{ 
    SeekBar seekbar; 
    TextView value; 
    TextView debug; 
    Button button1; 
    Button button2; 
    Button button3; 

    public void onCreate(Bundle savedInstanceState) 
    { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     value = (TextView) findViewById(R.id.textview2); 
     debug = (TextView) findViewById(R.id.textview3); 
     seekbar = (SeekBar) findViewById(R.id.seekbar); 
     button1 = (Button) findViewById(R.id.button1); 
     button2 = (Button) findViewById(R.id.button2); 
     button3 = (Button) findViewById(R.id.button3); 

     seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
     { 
      public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 
      { 
       // TODO Auto-generated method stub 
       int brightness = progress+1; 
       double b = brightness/2.55; 
       double c = Math.round(b*100)/100; 
       int percent = (int) c; 
       if (percent==0) { 
        value.setText("Lightlevel: !MIN!"); 
       }else if (percent==100){ 
        value.setText("Lightlevel: !MAX!"); 
       }else{ 
        value.setText("Lightlevel: "+percent+"%"); 
       } 
       debug.setText("int brightness: "+brightness+"/double b:"+b+"/double c: "+c+"/int percent: "+percent); 
       Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, brightness); 
      } 

      public void onStartTrackingTouch(SeekBar seekBar) 
      { 
       // TODO Auto-generated method stub 
       Intent in = new Intent(Test.this,DummyBrightnessActivity.class); 
       startActivity(in); 
      } 

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

      } 
     }); 


     button1.setOnClickListener(new OnClickListener() 
     { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 1); 

       Intent in = new Intent(Test.this,DummyBrightnessActivity.class); 
       startActivity(in); 
      } 

     }); 

     button2.setOnClickListener(new OnClickListener() 
     { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 127); 

       Intent in = new Intent(Test.this,DummyBrightnessActivity.class); 
       startActivity(in); 
      } 

     }); 

     button3.setOnClickListener(new OnClickListener() 
     { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 255); 

       Intent in = new Intent(Test.this,DummyBrightnessActivity.class); 
       startActivity(in); 
      } 

     }); 
    } 
} 

DummyBrightnessActivity.java

public class DummyBrightnessActivity extends Activity{ 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.dummy); 

     WindowManager.LayoutParams lp = getWindow().getAttributes(); 
     lp.screenBrightness = 100/100.0f; 
     getWindow().setAttributes(lp); 

     Timer timer2 = new Timer(); 
     timer2.schedule(new TimerTask() { 

      public void run() { 

       finish(); 

      } 

     }, 500); 

    } 
} 

ответ

0

Отвечая на мой собственный вопрос для будущего использования.

Проблема действительно lp.screenBrightness = 100/100.0f;. Поэтому я помещаю некоторую переменную в intent, которая имеет правильное значение brightness, поэтому я могу сделать это как lp.screenBrightness = brightness;.

Я знаю, что это коротко, но если кто-то хочет узнать больше об этом, просто спросите в комментарии.