Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Ignoring the wrong-looking logic that I cited in a comment, you're not referring to a nested class correctly in the interface declaration.</p> <p>This unit works for me. Note I'm using a screen wake lock (which is deprecated, but still works).</p> <pre><code>unit Android.JNI.PowerManager; interface function AcquireWakeLock : 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) ['{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&lt;JWakeLockClass, JWakeLock&gt;) 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 &amp; 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 &amp; 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&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 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. </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.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      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