dededl安卓中保持屏幕常亮


本文整理自网络,侵删。

 
Delphi安卓中屏幕唤醒,保持常亮的方法。

测试版本为delphi
查看更多关于 delphi 的文章
10.1 Berlin。

1、要在Project--Options--Uses Permissions给wake lock权限,即设置Wake lock为true;

2、主要程序代码如下:
Delphi/Pascal

function AcquireWakeLock: Boolean;
procedure ReleaseWakeLock;
implementation
{$R *.fmx}
{$R *.NmXhdpiPh.fmx ANDROID}
{$R *.SmXhdpiPh.fmx ANDROID}
{$R *.LgXhdpiPh.fmx ANDROID}
type
  JPowerManager = interface;
  JWakeLock = interface;
  JWakeLockClass = interface(JObjectClass)
    ['{918E171F-CDB8-4464-9507-F49272CE7636}']
  end;
  [JavaSignature('android/os/PowerManager$WakeLock')]
  JWakeLock = interface(JObject)
    ['{D17B1136-FA15-4AEB-85B1-2D490F0FD320}']
    { Methods }
    procedure acquire; cdecl;
    procedure release; cdecl;
    function isHeld: Boolean; cdecl;
  end;
  TJWakeLock = class(TJavaGenericImport<JWakeLockClass, JWakeLock>)
  end;
  JPowerManagerClass = interface(JObjectClass)
    ['{7D0696A2-ADEA-4158-AE1F-5E720DEDBCF9}']
    { Property methods }
    function _GetFULL_WAKE_LOCK: Integer; cdecl;
    function _GetSCREEN_BRIGHT_WAKE_LOCK: Integer; cdecl;
    function _GetSCREEN_DIM_WAKE_LOCK: Integer; cdecl;
    function _GetPARTIAL_WAKE_LOCK: Integer; cdecl;
    { Properties }
    // Keep screen on bright & keyboard on
    // Deprecated in API level 17 - Jelly Bean MR1
    property FULL_WAKE_LOCK: Integer read _GetFULL_WAKE_LOCK;
    // Keep screen on bright
    // Deprecated in API level 13 - Honeycomb MR2
    property SCREEN_BRIGHT_WAKE_LOCK: Integer read _GetSCREEN_BRIGHT_WAKE_LOCK;
    // Keep screen on dim
    // Deprecated in API level 17 - Jelly Bean MR1
    property SCREEN_DIM_WAKE_LOCK: Integer read _GetSCREEN_DIM_WAKE_LOCK;
    // Keep CPU running, screen & keyboard can go off
    property PARTIAL_WAKE_LOCK: Integer read _GetPARTIAL_WAKE_LOCK;
  end;
  [JavaSignature('android/os/PowerManager')]
  JPowerManager = interface(JObject)
    ['{DEAED658-4353-4D17-B0A3-8179E48BE87F}']
    { Methods }
    function newWakeLock(levelAndFlags: Integer; tag: JString)
      : JWakeLock; cdecl;
  end;
  TJPowerManager = class(TJavaGenericImport<JPowerManagerClass, JPowerManager>)
  end;
function GetPowerManager: JPowerManager;
var
  PowerServiceNative: JObject;
begin
  PowerServiceNative := SharedActivityContext.getSystemService
    (TJContext.JavaClass.POWER_SERVICE);
  if not Assigned(PowerServiceNative) then
    raise Exception.Create('Could not locate Power Service');
  Result := TJPowerManager.Wrap((PowerServiceNative as ILocalObject)
    .GetObjectID);
  if not Assigned(Result) then
    raise Exception.Create('Could not access Power Manager');
end;
var
  WakeLock: JWakeLock = nil;
function AcquireWakeLock: Boolean;
var
  PowerManager: JPowerManager;
begin
  Result := Assigned(WakeLock);
  if not Result then
  begin
    PowerManager := GetPowerManager;
    WakeLock := PowerManager.newWakeLock
      (TJPowerManager.JavaClass.SCREEN_BRIGHT_WAKE_LOCK,
      StringToJString('Delphi'));
    Result := Assigned(WakeLock);
  end;
  if Result then
  begin
    if not WakeLock.isHeld then
    begin
      WakeLock.acquire;
      Result := WakeLock.isHeld
    end;
  end;
end;
procedure ReleaseWakeLock;
begin
  if Assigned(WakeLock) then
  begin
    WakeLock.release;
    WakeLock := nil
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);  //设置常亮
begin
  AcquireWakeLock;
end;
procedure TForm1.Button2Click(Sender: TObject);  //取消常亮
begin
  ReleaseWakeLock;
end;

相关阅读 >>

Delphi 检验手机号 ismobilenumber

Delphi 正确得到本地ip

Delphi中对进程内存进行读写

Delphi unicode转汉字 ,支持自动过滤非 unicode编码

Delphi pagecontrol1 另类隐藏页的方法

Delphi判断字符串是否是数字、字母、大小写字母

Delphi tcolortohex 与 hextotcolor

Delphi的对象注销方法destroy和free的区别

Delphi 获取自身软件的版本号

Delphi xe5实现按android的back键无法退出关闭程序

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



打赏

取消

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

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

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

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

评论

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