スポンサードリンク

Activityでバックライトの明るさを変更をするには
Windowの属性であるWindowManager.LayoutParamsのメンバ変数のscreenBrightnessを変更すればよいようです。
通常では、systemのバックライトの明るさを示す「-1.0(負数)」が設定されているが、
これを0.0(暗い)~1.0(明るい)の間の任意の値にすることでバックライトの明るさを変更することができます。

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 0.0f;
getWindow().setAttributes(lp);

サンプルコード

    private float systemBrightness;
    @Override
    protected void onResume(){
        super.onResume();
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        systemBrightness = lp.screenBrightness;
        lp.screenBrightness = 0.0f;
        getWindow().setAttributes(lp);
    }

    @Override
    protected void onPause(){
        super.onPause();
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = systemBrightness;
        getWindow().setAttributes(lp);
    }

アクティビティがフォアグランドになったときにバックライトの明るさを変更しています。
このコードのバックライトの明るさの変更方法はこのアクティビティのみ有効で
他のアクティビティには影響しません。
念のためonPause()でバックライトの明るさを元に戻すコードを入れてあります。

システムのバックライトの明るさを変更することもできますが、
こちらは非公開のAPIを使うことになり、Androidのバージョンによっては動作しなくなる可能性があるためお勧めできません。
システムのバックライトの明るさを変更する方法は
逆引きAndroid入門さんの
http://www.adakoda.com/android/000157.html
で非常に詳しい説明をされております。

このエントリーは逆引きAndroid入門さんの記事を参考にさせていただきました。ありがとうございました。

スポンサードリンク