• [转]delphi xe6 android屏幕操持常亮


    1) setting the Project Options, Uses Permissions, Wake lock = True

    2) Adding Android.JNI.PowerManager to the uses clause

    3) call:

     AcquireWakeLock; // at start up.
    
     ReleaseWakeLock; // at shutdown.

     

     

    //-----------------------------------------------------------

    unit Android.JNI.PowerManager;

     

    interface

     

    function AcquireWakeLock : Boolean;

    procedure ReleaseWakeLock;

     

    implementation

     

    uses

      System.SysUtils,

      Androidapi.Helpers,

      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<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('Runing'));

        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.

  • 相关阅读:
    深入理解JavaScript系列(45):代码复用模式(避免篇)
    深入理解JavaScript系列(38):设计模式之职责链模式
    深入理解JavaScript系列(43):设计模式之状态模式
    认识js中的function和this
    深入理解JavaScript系列(29):设计模式之装饰者模式
    javascript的内存分配
    详细解读Jquery各Ajax函数
    javascript 杂谈之哪种写法你更喜欢?
    深入理解JavaScript系列(28):设计模式之工厂模式
    深入理解JavaScript系列(30):设计模式之外观模式
  • 原文地址:https://www.cnblogs.com/qiufeng2014/p/3706133.html
Copyright © 2020-2023  润新知