2012-03-14 14 views
0

ボタンのクリックで画面の明るさを下げたいが、それをできないという問題がある。どうしてか分かりません?私は数行のコードを書いたが、それは私にとってはうまくいかない。私には同じ解決策を提案してください。ボタンのクリックで画面の明るさを小さくする

コード:

private void setBrightness() { 

     try { 
      int curBrightnessValue = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS); 
      WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); 
      layoutParams.screenBrightness = curBrightnessValue/100.0f; 
      getWindow().setAttributes(layoutParams); 
     } catch (SettingNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     } 

答えて

0

あなたのコードが良いように思えますが、私は明るさの影響を取るためにあなたの活動は、単にコードの下に与えられた使用、500msため

try { 
     ContentResolver cr = getContentResolver(); 
     int brightness = Settings.System.getInt(cr,Settings.System.SCREEN_BRIGHTNESS);    
     Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, brightness); 
     WindowManager.LayoutParams lp = getWindow().getAttributes(); 
     lp.screenBrightness = brightness/255.0f; 
     getWindow().setAttributes(lp); 
     } catch (Exception e) { 
     Log.d("Bright", "toggleBrightness: " + e); 
     } 

     final Activity activity = this; 
     Thread t = new Thread(){ 
     public void run() 
     { 
      try { 
       sleep(500); 
       } catch (InterruptedException e) {} 
       activity.finish(); 
      } 
     }; 
     t.start(); 
を待たなければならないと思うとなります

UPDATE:

メインコードは、単に

あります
WindowManager.LayoutParams layout = getWindow().getAttributes(); 
layout.screenBrightness = 1F; 
getWindow().setAttributes(layout); 

また、私は、このコードこの文を削除文) は、このコードは(原因activity.finishに同じコードを呼び出し中に活動を終了

+0

、これを試してみて、私が起こるか知ってみましょう。これを試してみてください実行されますが、画面に何も影響しません。 –

+0

詳細については、[autobright](http://code.google.com/p/autobright/source/browse/trunk/autobright/src/com/geekyouup/android/autobright/AutoBright.java) – user370305

+0

Hey Thanx it部門の255.0fを1500.0fに増やすことで機能します。 –

2
このため

使用IHardwareServiceインタフェース:

許可

<uses-permission android:name="android.permission.HARDWARE_TEST"></uses-permission> 

変更のようなあなたのコード:

private void setBrightness(int brightness) { 
    try { 
     IHardwareService hardware = IHardwareService.Stub.asInterface( 
ServiceManager.getService("hardware")); 
     if (hardware != null) { 
     hardware.setScreenBacklight(brightness); 
     } 
    } catch (RemoteException doe) {    
    } 

ここChanging the Screen Brightness

ORあなたのケースでは、おそらく可能性の完全な例:ウィンドウが構築される前に、あなたはgetWindow().getAttributes()行うことはできませんあなたがsetContentView(R.layout.main); を実行した後に

WindowManager.LayoutParams lp = getWindow().getAttributes(); 

移動これ。

このように、あなたのコードは

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    // MY BRIGHTNESS VARIABLES 


WindowManager.LayoutParams lp; 
float fb; 
float lb = 0; 
float hb = 1; 
////////////////////////////////////////////////////////////////////////// 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    lp = getWindow().getAttributes(); 
    fb = lp.screenBrightness; 

    // MY CODE FROM HERE DOWN 

    Button button1=(Button)findViewById(R.id.button1); 

    button1.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 

     if(lp.screenBrightness==fb) { 
      lp.screenBrightness=lb; 
      getWindow().setAttributes(lp); 
     } 
     if(lp.screenBrightness==lb){ 
      lp.screenBrightness=hb; 
      getWindow().setAttributes(lp); 
     } 
     if(lp.screenBrightness==hb){ 
      lp.screenBrightness=fb; 
      getWindow().setAttributes(lp); 
     } 

    } 
}); 
    ////////////////////////////////////////////// 




} 

} 
関連する問題