Note that there are some explanatory texts on larger screens.

plurals
  1. PODelphi XE5 Android. How to use PowerManager.WakeLock?
    primarykey
    data
    text
    <p>I'd like to keep device on and avoid unloading my application from memory even while there is no user activity. Something like service. I made module like <a href="https://stackoverflow.com/questions/18888345/how-to-check-if-network-is-available-on-android-delphi-xe5">How to check if network is available on Android and iOS ( Delphi XE5 )</a> but system crushes when I run SetWakeLock:</p> <pre><code>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&lt;JWakeLockClass, JWakeLock&gt;) 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&lt;JPowerManagerClass, JPowerManager&gt;) 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&lt;&gt;nil; if result then begin PowerManager := GetPowerManager; fWakeLock := PowerManager.newWakeLock(1,StringToJString('VC')); //PARTIAL_WAKE_LOCK =1 Result := fWakeLock&lt;&gt;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&lt;&gt;nil then begin fWakeLock.release; end; end; end. </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload