Androidでプログラムで画面輝度を変更します
-
03-10-2019 - |
質問
Androidでプログラムで画面の輝度を変更したいと思います。現時点では、このコードを使用しています。
WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
しかし、このサンプルコードは、最新のバージョンではなく、カップケーキで機能します。 SDKの最新バージョンを使用しています。新しいAndroidバージョンに適したソリューションは何ですか?
解決
これにiHardWarEServiceインターフェイスを使用してみませんか?これには例があります チュートリアル.
更新:チュートリアルリンクは引き続き機能しますが、実際のコードも次の回答で使用できます。
他のヒント
これは、以下を使用することで行うことができます。
WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);
参照:http://developer.android.com/reference/android/view/windowmanager.layoutparams.html#screenbrightness
パラメーションを追加する必要があります Window
それ以外の場合は作成する前に、投げます java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
の例を参照してください android.app.Dialog.Dialog
.
final Dialog dialog = new Dialog(this) {
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
WindowManager.LayoutParams layout = getWindow()
.getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);
}
};
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.show();
輝度値は0.0Fから1.0Fの間であることに注意してください。
@kamal_tech_view:値を変換する必要があります layout.screenbrightness = value; 浮かぶ
答えが遅すぎますが、改善したいです。
Tor-Mortenのコードを試してみましたが、特定の画面自体のためです。どこでも変更したかったので、そのためにサービスを提供しました。
それは他の人に役立つことを願っています。
final Dialog dialog = new Dialog(act);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog
.setContentView(R.layout.menubase_brightness_control);
dialog.setCanceledOnTouchOutside(true);
SeekBar global_brightness_control = (SeekBar) dialog
.findViewById(R.id.global_brightness_control);
global_brightness_control.setMax(255);
global_brightness_control.setProgress(Settings.System.getInt(
con.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS));
global_brightness_control
.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
Settings.System
.putInt(con.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, progress);
}
});
dialog.show();