El acelerómetro de iPhone

06 May 2008



Una de las características más vistosas de nuestro dispositivo iPhone/iPod touch es la del acelerómetro, que es aquel que nos permite controlar los distintos movimientos que se producen en el mismo, o como mejor definición la presentada por Wikipedia como:

"Usado para determinar la posición de un cuerpo, pues al conocerse su aceleración en todo momento, es posible calcular los desplazamientos que tuvo. Considerando que se conocen la posición y velocidad original del cuerpo bajo análisis, y sumando los desplazamientos medidos se determina la posición."


Pues bien, ya que sabemos de que hablamos, ahora vamos a saber como utilizarlo en nuestras aplicaciones, no sin antes dejar bien claro que este caso práctico solamente es posible compilarlo y depurarlo a través de nuestro dispositivo, ya que de momento mediante el simulador no hay manera de reproducir dichos movimientos.

-La clase UIAccelerometer

Esta clase es la responsable de registrar los movimientos que se producen en nuestro dispositivo. Obtenemos como información los cambios producidos en cualquiera de sus tres ejes X, Y, Z  (rotación - inclinación).

 
UIAccelerationValue	_accelerometer[3]; 

//3 para controlar cada uno de los ejes

No es necesario crear objetos de esta clase, ya que usaremos el objeto compartido del dispositivo (sharedAccelerometer) para recibir los eventos de dicha clase, según el intervalo de tiempo que le definamos (20 milisegundos son 50Hz). Dichos eventos serán siempre recogidos en el hilo principal de nuestra aplicación y controlados por su delegado (delegate).

 
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 50)];

[[UIAccelerometer sharedAccelerometer] setDelegate:self];

 

En nuestra clase delegada de UIApplication, es necesario definamos el protocolo UIAccelerometerDelegate en nuestro fichero de declaración:

 
@interface AppController : NSObject <UIAccelerometerDelegate>

Gracias a dicho protocolo, podemos recibir dichos eventos en nuestro fichero de implementación mediante:
- (void)accelerometer:(UIAccelerometer *)accelerometer 

    didAccelerate:(UIAcceleration *)acceleration

 

- Simular el efecto gravedad

El siguiente bloque de código, localizado en nuestra función didAccelerate, simula el efecto gravedad para que los movimientos no sean bruscos. Esto se consigue aplicando un leve filtro a nuestros valores de X, Y y Z, en este caso de un 10% de datos de aceleración no filtrada.

 
_accelerometer[0]=acceleration.x * 0.1 + _accelerometer[0]*(1.0 - 0.1);

_accelerometer[1]=acceleration.y * 0.1 + _accelerometer[1]*(1.0 - 0.1);

_accelerometer[2]=acceleration.z * 0.1 + _accelerometer[2]*(1.0 - 0.1);

 

 
El acelerómetro de iPhone

Comentarios recientes

  • 05 September 2012
    Miguel dijo:

    No entendi na.........

  • 23 June 2012
    Vicente Berardinelli dijo:

    recientemente actualice mi iPhone 4s teniendo como consecuencia que el acelerometro no le funciona ni en el whatsaap como también en el twitter. quisiera saber a que se debe gracias

  • 28 April 2011
    My iPhone » Sleep Cycle dijo:

    [...] aplicación funciona usando el accelerómetro que viene incluído en el iPhone. El móvil debe estar sobre la cama y medirá los movimientos que [...]

  • 16 August 2010
    angel vera dijo:

    Amigos tengo un problema con mi telefono precisamente el acelerometro a dejado de funcionar o al menos eso creo, lo restaure y sigue igual, contactos, mail, safari y fotos teniendolo en posicion vertical se giran solos. Espero alguna ayuda de su parte gracias

  • 22 March 2009
    UITableViewCell con subdetalle | Ayuda iPhone dijo:

    [...] El acelerómetro de iPhone [...]

  • 07 May 2008
    Wikipedia &raquo; El acelerómetro de iPhone dijo:

    [...] iPhone Software wrote an interesting post today on El aceler&Atilde;&sup3;metro de iPhoneHere&#8217;s a quick excerptUna de las características más vistosas de nuestro dispositivo iPhone/iPod touch es la del [...]

Deja un comentario

Escrito por:

Administrador

Sin categoría
iPhoneiPod TouchUIAccelerometer

Utilizamos cookies propias y de terceros para mantener la sesión o sus preferencias, recopilar estadísticas y proporcionar contenidos conforme a sus intereses. Si continua navegando, utiliza los servicios de la web o pulsa el botón, está aceptando su instalación y el uso que hacemos de ellas. Puede obtener más información sobre como revocar su consentimiento o cómo cambiar la configuración en este enlace.