本文整理自网络,侵删。
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 unicode转汉字 ,支持自动过滤非 unicode编码
Delphi tcolortohex 与 hextotcolor
Delphi xe5实现按android的back键无法退出关闭程序
更多相关阅读请进入《Delphi》频道 >>