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 获取系统服务service id

Delphi xe5 android 发短信以及目录

Delphi读ios的设备id

Delphi ticon保存ico文件时失真的解决办法

Delphi createmessagedialog

Delphi下程序内存泄露报告

Delphi 双进程监控保护

Delphi gif 动画建立

Delphi 模似键盘输入又一方法

Delphi fmx下怎么得到当前程序的路径和文件名称?

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



打赏

取消

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

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

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

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

评论

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