大佬教程收集整理的这篇文章主要介绍了Delphi XE5 Android.如何使用PowerManager.WakeLock?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
unit Android.PoweRMANager; interface function SetWakeLock : Boolean; procedure ReleaseWakeLock; implementation uses System.SysUtils,Androidapi.JNI,Androidapi.JNIBridge,Androidapi.JNI.GraphicsContentViewText,Androidapi.JNI.JavaTypes,FMX.Helpers.Android; type JPoweRMANager = interface; JWakeLock = interface; JWakeLockClass = interface(JObjectClass) ['{4CF7A13D-15A9-4DEE-8CA7-66600C188CB7}'] end; [JavaSignature('android/os/PoweRMANager/WakeLock')] JWakeLock = interface(JObject) ['{55983EDC-782F-490A-BF0C-12207EB7829E}'] {Methods} procedure acquire; cdecl; procedure release; cdecl; function isHeld: Boolean; cdecl; end; TJWakeLock = class(TJavaGenericImport<JWakeLockClass,JWakeLock>) end; JPoweRMANagerClass = interface(JObjectClass) ['{B127DD4E-1DA6-49E7-98BA-5966DC7E26FA}'] end; [JavaSignature('android/os/PoweRMANager')] JPoweRMANager = interface(JObject) ['{241C3B3D-3DF0-489B-A33E-3CD7F5D26313}'] {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 fWakeLock : JWakeLock = nil; function SetWakeLock : Boolean; var PoweRMANager: JPoweRMANager; begin result := fWakeLock<>nil; if result then begin PoweRMANager := GetPoweRMANager; fWakeLock := PoweRMANager.newWakeLock(1,StringToJString('VC')); //PARTIAL_WAKE_LOCK =1 Result := fWakeLock<>nil; if Result then begin fWakeLock.acquire; Result := fWakeLock.IsHeld; end; end else if not fWakeLock.IsHeld then fWakeLock.acquire; end; procedure ReleaseWakeLock; begin if fWakeLock<>nil then begin fWakeLock.release; end; end; end.
这个单位适合我.注意我正在使用屏幕唤醒锁(已弃用,但仍然有效).
unit Android.JNI.PoweRMANager; interface function AcquireWakeLock : Boolean; procedure ReleaseWakeLock; implementation uses System.SysUtils,FMX.Helpers.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; end.
以上是大佬教程为你收集整理的Delphi XE5 Android.如何使用PowerManager.WakeLock?全部内容,希望文章能够帮你解决Delphi XE5 Android.如何使用PowerManager.WakeLock?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。