LoginSignup
1
0

More than 5 years have passed since last update.

Delphi で Android の輝度を変更する

Last updated at Posted at 2017-07-20

端末上に表示されたバーコードなどを読み取るアプリでは、画面が暗いと読み取れないことが多いです。
このような場合、アプリ側でデバイスの輝度を上げて明るくするという手法が行なわれています。

Delphi で輝度を制御するには WindowManager.Layoutparams を使用します。

サンプルコード

フォーム上にボタンを1つ置き

  • ボタンを押すと輝度を最大にします。
  • 再度押すと輝度を最小にします。

という処理を記述しています。(Nexus 5, Android 5.1.1で確認)

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  Androidapi.JNI.GraphicsContentViewText, FMX.Controls.Presentation,
  FMX.StdCtrls, Androidapi.Helpers, Androidapi.Jni, Androidapi.JNI.App
  ;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { private 宣言 }
    jp: JWindowManager_LayoutParams;  // WindowManager.LayoutParams
    sw: Boolean;  // 単純にスイッチ
  public
    { public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if sw then begin
    //輝度を最小に
    jp.screenBrightness := TJWindowManager_LayoutParams.JavaClass.BRIGHTNESS_OVERRIDE_OFF;
    sw := False;
  end else begin
    //輝度を最大に
    jp.screenBrightness := TJWindowManager_LayoutParams.JavaClass.BRIGHTNESS_OVERRIDE_FULL;
    sw := True;
  end;
  //セットされた輝度を反映
  TAndroidHelper.Activity.getWindow.setAttributes(jp);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  jp := TAndroidHelper.Activity.getWindow.getAttributes; // 現在の輝度の状態を取得
  sw :=True;  // スイッチ初期化
end;

end.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0