PDA

Ver la Versión Completa : Como evitar el bloqueo de pantalla y obtener el eje x positivo de TMotionSensor


kurono
08-10-2014, 06:42:07
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,


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

:rolleyes:

Revisa esta información:

http://i42.photobucket.com/albums/e305/nlsgarcia/Preguntasquenohayquehacer_zpsf61c41e4.jpg

Te sugiero retomar la Guía de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php)

¡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,


...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,


...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


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

:rolleyes:

Revisa este código:

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<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('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? (http://stackoverflow.com/questions/19021647/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,


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


...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

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

if StrToFloat(txt_velocidad.Text) > 0.0 then
begin
// codigo a ejecutar
end;