2012-06-20 1 views
0

내 앱이 간단한 "밝기 체인저"이며 시스템 밝기도 변경됩니다 (구현하기 쉽지 않은 항목 : D).
실제로 모든 것을 설정하고 잘 작동합니다 ... 조금 성가신 경우를 제외하고 ... 밝기가 변경 될 때마다 화면이 처음으로 최고 밝기 (예 : 100 % 밝기)로 "깜박"하고 0.5 초 후 , 올바른 밝기로 변경됩니다.플래시가 시스템 밝기를 변경하는 중

예 (MAX.) (255)로 변경, 120

adter 절반에 제 2 변화가 여기 내 두 클래스 코드 : 시스템 밝기 120이어야한다. Dummy 클래스는 밝기 변경 적용에 필요한 "재설정"에 사용됩니다.

EDIT : btw. 나는 문제가 "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;입니다. 그래서 에 어떤 변수를 넣었습니다.이 변수의 값은 brightness입니다. 따라서 lp.screenBrightness = brightness;처럼 만들 수 있습니다.

나는 이것이 다소 부족함을 알고 있지만, 누군가가 그것에 대해 더 많이 알고 싶다면 단지 의견을 묻는다.