Inicio > Delphi, Ejemplos, Sensores, XE5 > Probando los sensores (Delphi XE5) – Parte I

Probando los sensores (Delphi XE5) – Parte I

Share Button

La mayoría de dispositivos Android (teléfonos y tablets) actuales cuentan con un gran númeroimages de sensores, de diferentes tipos y de variada funcionalidad. Algunos más conocidos que otros y algunos más útiles que otros.

La idea de esta entrada y de las siguientes es mostrar cómo funcionan y cómo acceder a la información que nos proporcionan los diferentes sensores presentes.

Los sensores presentes en el dispositivo se gestionan utilizando la clase TSensorManager, que se encuentra en la unit System.Sensors. Además podemos encontrar otras units que completan las definiciones para cada una de las plataformas destino (System.IOS.Sensors, System.Win.Sensors, System.Mac.Sensors,…)

Para acceder al SensorManager, lo podemos hacer a través de la propiedad Current de la clase, que nos devolverá la instancia ya creada.

TSensorManager.Current

Imagen667Los sensores están organizados o divididos por categorías.

Las disponibles están definidas en el enumerado TSensorCategory. Podemos hacer un recorrido por todas las categorías disponibles y mostrarlas utilizando el siguiente código:

var
cat: TSensorCategory;// Recorrido por las categorías disponibles
for cat := Low(TSensorCategory) to High(TSensorCategory)  do begin
s := GetEnumName(TypeInfo(TSensorCategory), integer(cat));
Memo1.Lines.Add(IntToStr(Ord(cat)) + ' - ' + s);

Imagen668Dentro de cada una de las categorías, según el dispositivo, dispondremos de uno o varios sensores. Para acceder a los diferentes sensores de una categoría disponemos de la función GetSensorsByCategory; Esta función nos devolverá una array con los sensores disponibles en esa categoría.

Una vez que accedemos a un sensor, encontramos que todos las clases de sensores (TCustomLocationSensor, TCustomEnvironmentalSensor,…) derivan de la clase TCustomSensor, que posee la mayoría de métodos abstractos, que después se redefinen en las clases derivadas.

Una vez que activamos el TSensorManager, podemos acceder a las propiedades particulares de cada uno de los sensores.

Si utilizamos RTTI, podemos acceder a lista de propiedades para cada una de las clases de sensores. Si lo combinamos con la lista de sensores presentes (visto antes), tendremos la lista particular para nuestro dispositivo:

ClassName: TCustomLocationSensor
Latitude
Longitude
ErrorRadius
Altitude
Speed
TrueHeading
MagneticHeading
Address1
Address2
City
StateProvince
PostalCode
CountryRegion
····························································
ClassName: TCustomEnvironmentalSensor
Temperature
Pressure
Humidity
WindDirection
WindSpeed
····························································
ClassName: TCustomMotionSensor
AccelerationX
AccelerationY
AccelerationZ
AngleAccelX
AngleAccelY
AngleAccelZ
Motion
Speed
····························································
ClassName: TCustomOrientationSensor
TiltX
TiltY
TiltZ
DistanceX
DistanceY
DistanceZ
HeadingX
HeadingY
HeadingZ
MagHeading
TrueHeading
CompMagHeading
CompTrueHeading····························································
ClassName: TCustomElectricalSensor
  Capacitance
Resistance
Inductance
Current
Voltage
Power····························································
ClassName: TCustomMechanicalSensor
SwitchState
SwitchArrayState
MultiValueState
Force
AbsPressure
GaugePressure
Strain
Weight····························································
ClassName: TCustomBiometricSensor
HumanPresence
HumanProximity
Touch····························································
ClassName: TCustomLightSensor
Lux
Temperature
Chromacity
····························································

ClassName: TCustomScannerSensor
  RFIDTag
BarcodeData

Para algunas de estas clases, Embarcadero ha creado componentes que facilitan el trabajo de acceso a las propiedades, pero se puede acceder a las mismas funcionalidades a través del TSensorManager.

Imagen671

En próximas entradas iremos viendo algo más del funcionamiento de algunos de ellos.

Os adjunto el código fuente del proyecto de prueba, así como el compilado para Windows (exe) y el compilado para Android (apk).

<Código fuente>
<Compilado para Windows>
<Compilado para Android>

Vota este post
Categories: Delphi, Ejemplos, Sensores, XE5 Tags: , , ,
Subscribe
Notify of
guest

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

5 Comments
Inline Feedbacks
Ver todos los comentarios
Jhonny
Jhonny
11 years ago

Interesante aporte, muchas gracias :)

Marcelo
Marcelo
10 years ago

Muy interesante!!

Soy nuevo en el mundo android y me ha surgido una duda.
¿la cámara y el micrófono los trata como sensores o son otra cosa?
¿cómo podría sensar lo que viene del micrófono? (me interesa sobre todo poder detectar unos pulsos sonoros)

Desde ya muchas gracias

victor
victor
9 years ago

Hola, muchísimas gracias por esto.

intento leer diversos sensores desde un Arduino conectado al ordenador.
¿Me puede ser útil esta unidad para controlar el puerto USB de una PC de escritorio?

No estoy seguro de si es la pregunta apropiada en en lugar correcto, desde ya te agradezco cualquier respuesta.

5
0
Would love your thoughts, please comment.x
()
x