Delphi Android控制睡眠


本文整理自网络,侵删。

 
这是先前发布在EDN(Embarcadero开发人员网络)上的文章的抄录。

对于播放视频的应用,您可能不想让屏幕进入休眠状态。
在Android上,可以使用Power Manager从应用程序一侧打开/关闭睡眠状态。

笔记
由于从睡眠中唤醒会影响电池消耗,因此应用必须始终考虑唤醒逻辑。
此外,为此,您需要在项目选项中选中WakeLock并设置权限。
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls
// 以下追加
  , Androidapi.Helpers 
  , Androidapi.Jni.Os
  , Androidapi.Jni.JavaTypes
  , Androidapi.Jni.GraphicsContentViewText
//
  ;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private }
    PW: JPowerManager;
    WL: JPowerManager_WakeLock;
  public
    { public }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin

//用唤醒锁唤醒

//用getSystemService

  PW := TJPowerManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.POWER_SERVICE));
  if PW <> nil then begin
    //获取电源管理器的激活锁定
    WL := PW.newWakeLock
      (TJPowerManager.JavaClass.SCREEN_BRIGHT_WAKE_LOCK
        or TJPowerManager.JavaClass.ACQUIRE_CAUSES_WAKEUP,
      StringToJString('Power Manager Test'));
    if WL <> nil then
      WL.acquire; //获取运行激活锁定执行
  end else
    Button1.Text := 'Not use Power Manager';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//推出激活锁定释放与
  if WL <> nil then  //是激活锁定集合?
    WL.release;        // 解除
end;

end.

相关阅读 >>

Delphi 图像分割

Delphi xe5-android开发 目录结构

Delphi 查询进程名进程id/进程路径 父进程/子进程

Delphi 获取当天是星期几,计算两个日期相隔时间

Delphi 计算文件与当前时间差(天小时分钟秒)

Delphi读写ini文件加锁(独占)

Delphi xe5 json与Delphi object的互换

Delphi fullscreen全屏

Delphi 实现窗口与任务栏右下角对齐

Delphi 从twebbrowser webbrowser得到全部html源码

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...