Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Como evitar el bloqueo de pantalla y obtener el eje x positivo de TMotionSensor (https://www.clubdelphi.com/foros/showthread.php?t=86814)

kurono 08-10-2014 06:42:07

Como evitar el bloqueo de pantalla y obtener el eje x positivo de TMotionSensor
 
hola amigo como estan en realidad tengo dos pregunta

1- como evitar que se apague la pantalla osea que no se bloque
2-como obterner solo el lado positivo del eje x del componente TMotionSensor

estoy haciendo una aplicacion que me captura la velocidad de una persona ya sea corriendo o caminado y en base a la velocidad, el tiempo y el peso de la persona calculo las caloria quemadas con una formula establecidad todo bien hasta ahi el proble surge cuando el componente TMotionSensor me captura el eje x negativo ya que cuando lo hace los resultado de los calculo no me dan como deberian

en cuanto a la pantalla resulta que cuando se bloquea algunos timer no se ejecutan adecuadamente

nlsgarcia 08-10-2014 09:38:16

kurono,

Cita:

Empezado por kurono
...como evitar que se apague la pantalla...como obtener solo el lado positivo del eje x del componente TMotionSensor...

:rolleyes:

Revisa esta información:



Te sugiero retomar la Guía de estilo de los foros

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.

kurono 09-10-2014 03:58:39

ok entiendo pero no se que fue lo que paso con el tema ya que solo puse la primera parte como evitar que se apague la pantalla en fin necesito resolver eso dos problema alguien tiene un idea

nlsgarcia 09-10-2014 07:08:54

kurono,

Cita:

Empezado por kurono
...no se que fue lo que paso con el tema ya que solo puse la primera parte como evitar que se apague la pantalla...

:rolleyes:

Te comento:

1- El nombre fue modificado para que este más acorde con el requerimiento expresado en el Msg #1 y facilite las búsquedas en el Club Delphi.

2- En una siguiente oportunidad toma en cuenta todo lo expresado en el Msg #2.

¡Gracias por tu cooperación! :) ^\||/

Saludos,

Nelson.

kurono 09-10-2014 23:25:12

Ok no hay problema

kurono 11-10-2014 00:25:20

Amigos les comento que e resuelto el segundo problema con una simple comparación pero aun no tengo idea de como evitar que se apague la pantalla

nlsgarcia 11-10-2014 01:21:30

kurono,

Cita:

Empezado por kurono
...e resuelto el segundo problema (obtener el eje x positivo de TMotionSensor) con una simple comparación...

^\||/

Te sugiero publicar tu código para, futuras referencias de Delphi sobre Android :rolleyes:

Nelson.

kurono 12-10-2014 00:18:23

Siempre lo hago pero en esta oportunidad no tengo ni idea de como evitar que se apague la pantalla

nlsgarcia 12-10-2014 00:52:59

kurono

Cita:

Empezado por kurono
...Siempre lo hago pero en esta oportunidad no tengo ni idea de como evitar que se apague la pantalla...

:rolleyes:

Revisa este código:
Código Delphi [-]
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) 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;
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.
El código anterior fue tomado de : Delphi XE5 Android. How to use PowerManager.WakeLock?

Espero sea útil :)

Nelson.

kurono 12-10-2014 03:13:55

gracia amigo nlsgarcia el codigo funciona perfectamente es lo que me faltaba

nlsgarcia 12-10-2014 04:32:33

kurono,

Cita:

...el código funciona perfectamente es lo que me faltaba...
^\||/

Cita:

...e resuelto el segundo problema (obtener el eje x positivo de TMotionSensor) con una simple comparación...
:rolleyes:

Te sugiero publicar tu código (obtener el eje x positivo de TMotionSensor ) para futuras referencias de Delphi sobre Android.

Nelson.

kurono 12-10-2014 06:19:52

obtener solo el eje x positivo del componente TMotionSensors lo solucione de la siguiente manera en un label obtengo los valores del componente
Código Delphi [-]
begin
  txt_velocidad.Text:=FloatToStr(StrToFloat(Format('%6.2f', [txt_km.Sensor.AccelerationX])) 
end;

luego con una simple comparacion determino cuando el valor es positivo
Código Delphi [-]
if StrToFloat(txt_velocidad.Text) > 0.0 then
 begin
  // codigo a ejecutar
 end;


La franja horaria es GMT +2. Ahora son las 20:45:55.

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