Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
respuesta extraña con cuenta regresiva y apagado de la pantalla

Hola buenas, he iniciado este hilo aunque es sobre la misma aplicación sobre la que ya comentamos esta mañana. El caso es que estoy probándola en el curro y lo del patrón aleatorio va perfecto pero le he añadido un temporizador de 5 minutos en cuenta regresiva
cada vez que pulso sobre un botón la cuenta atrás se pone n marcha pero claro en el curro intervalo de los 5 minutos, apago la pantalla por eso de la batería y me he dado cuenta que la cuenta atrás se pausa y continúa cuando vuelvo a encender la pantalla. Obviamente eso no
me sirve ¿alguna idea?

Esto lo del scribo desde el móvil por lo que pido disculpas si el texto resulta confuso, aunque trató de corregirlo. Un saludo y gracias.

Veo que el mensaje no ocupa todo el ancho del campo, si algún administrador lo ve que lo borre y ya lo creare cuando llegue a casa
__________________
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.

Última edición por danielmj fecha: 28-05-2015 a las 00:34:50.
Responder Con Cita
  #2  
Antiguo 28-05-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
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
  #3  
Antiguo 02-06-2015
Avatar de danielmj
danielmj danielmj is offline
Miembro
 
Registrado: jun 2011
Posts: 383
Poder: 13
danielmj Va por buen camino
Por cierto, lo de que la cuenta atrás se pause cuando apago la pantalla es bastante raro teniendo en cuenta que en el formulario uso un segundo timer para mostrar la hora y este funciona sin problemas aunque la pantalla esté apagada, solo se pausa con la cuenta regresiva.

¿alguien sabe por que puede ser? saludos.
__________________
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 03:43:50
Error en cuenta/Login/cuenta robada coso___ La Taberna 17 24-02-2009 18:30:14
seria prudente comenzar la cuenta regresiva? Delphius La Taberna 5 12-05-2007 02:22:22
Una petición extraña Arcioneo La Taberna 11 03-10-2006 16:43:30


La franja horaria es GMT +2. Ahora son las 17:10:31.


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