delphi Android控制睡眠  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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.

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.03802490234375 seconds