Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 28-05-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola, investigando por la web encontre esta unidad que viene a solucionar este problema que me está pasando ahora...
Código Delphi [-]
unit Android.JNI.PowerManager;

interface

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) 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) end;

function GetPowerManager: JPowerManager;
function AcquireWakeLock(var AWakeLock: JWakeLock): Boolean;
procedure ReleaseWakeLock(var AWakeLock: JWakeLock);

implementation

uses
  Androidapi.Helpers;

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;

function AcquireWakeLock(var AWakeLock: JWakeLock): Boolean;
var
  PowerManager: JPowerManager;
begin
  Result := Assigned(AWakeLock);
  if not Result then
  begin
    PowerManager := GetPowerManager;
    AWakeLock := PowerManager.newWakeLock(
      TJPowerManager.JavaClass.SCREEN_BRIGHT_WAKE_LOCK,
      StringToJString('Delphi'));
    Result := Assigned(AWakeLock);
  end;
  if Result then
  begin
    if not AWakeLock.IsHeld then
    begin
      AWakeLock.acquire;
      Result := AWakeLock.isHeld
    end;
  end;
end;

procedure ReleaseWakeLock(var AWakeLock: JWakeLock);
begin
  if Assigned(AWakeLock) then
  begin
    AWakeLock.release;
    AWakeLock := nil
  end;
end;

end.

Según se dice aquí hay que hacer la llamada en el OnShow:
Cita:
Place that in your project directory or add it to your search path. Then, in your form's OnShow event, simply call; {code} {$IFDEF ANDROID} Android.JNI.PowerManager.AcquireWakeLock; {$ENDIF} {code}
Pero cuando agrego la unidad de más arriba, la incluyo en la uses y hago la llamada me da este error:
Código:
[DCC Error] picasf.pas(180): E2035 Not enough actual parameters
[DCC Fatal Error] ControlPicas.dpr(6): F2063 Could not compile used unit 'picasf.pas'
¿Alguna idea? Un saludo.
__________________
La juventud pasa, la inmadurez se supera, la ignorancia se cura con la educación, y la embriaguez con la sobriedad, pero la estupidez dura para siempre. Aristofanes.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cuenta regresiva en pantalla pape19 Varios 3 05-06-2012 02:43:50
Error en cuenta/Login/cuenta robada coso___ La Taberna 17 24-02-2009 17:30:14
seria prudente comenzar la cuenta regresiva? Delphius La Taberna 5 12-05-2007 01:22:22
Una petición extraña Arcioneo La Taberna 11 03-10-2006 15:43:30


La franja horaria es GMT +2. Ahora son las 06:38:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi