2013-04-20 15 views
6

プログラムで画面の明るさを変更する必要があります。私はCan't apply system screen brightness programmatically in Androidのような複数の解を読んだ。画面の明るさを効率的に変更する

私の問題は、これらのソリューションがアクティビティを変更することを意味します(ダミーアクティビティが直ちに終了するようなことがある)ことを意味し、アクティビティスイッチのオーバーヘッドを避けたいと思います。

他の解決策がありますか。多分ネイティブコードを使用して、画面の明るさがすぐに変わるようにしますか?

答えて

7

以下は、単一のアクティビティに直ちに影響を与えます。再起動する必要はありません。このアクティビティは、一時停止/再開に対するscreenBrightness属性も記憶しています。

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = 1; // 0f - no backlight ... 1f - full backlight 
getWindow().setAttributes(lp); 

ただし、システム設定で自動バックライトレベルを有効にしても効果はありません。 This solutionは、自動バックライトをオフにするのに役立ちます。

+0

WindowManager.LayoutParamsを使用して画面の輝度を設定すると、「自動バックライトレベル」が有効になっていても機能します。ドキュメントに記載されているように、「screenBrightnessを使用して、画面のユーザーの好みの明るさを上書きすることができます。 Android 4.1および4.4でテスト済みです。 Androidフレームワークエンジニアからの確認は次のとおりです。https://groups.google.com/forum/#!msg/android-developers/tYlCn7bvAmw/2quRf_ZZZigJ – AnAurelian

関連する問題