sensores - ua€¦ · experto en desarrollo de aplicaciones para dispositivos móviles © 2012-13...

39
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOS

Upload: others

Post on 30-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-13 Depto. Ciencia de la Computación e IA

Sensores

Sesión 3: Sensores en iOS

Page 2: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Índice de contenidos• Pantalla táctil• Gestión de eventos de entrada• Reconocimiento de gestos multitáctiles

• Acelerómetro• Implementación

• Giroscopio• Implementación

• Brújula• Implementación

• GPS• Implementación

• Proximidad y sensor de luz ambiente• Implementación

2

Page 3: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Pantalla táctil• Pantalla táctil• Gestión de eventos de entrada• Reconocimiento de gestos multitáctiles

3

Page 4: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Gestión de eventos de entrada (1)• Sensor más usado• Eventos de entrada básicos implementados por defecto en UIKit• Uso en tablas (selección de celdas, arrastre...)• Botones• etc.

• Captura de eventos de entrada (Touch Events):• Implementación de los siguientes métodos:

4

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

Page 5: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Gestión de eventos de entrada (2)• Obtener posición de la pulsación:

• Comprobaciones:• ¿Hemos pulsado dentro de un objeto?

Devuelve true si el rectángulo contiene el punto

5

UITouch *touch = [touches anyObject];CGPoint loc = [touch locationInView:self.view];

CGRectContainsPoint(objeto.frame, loc)

Page 6: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Pantalla táctil• Pantalla táctil• Gestión de eventos de entrada• Reconocimiento de gestos multitáctiles

6

Page 7: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Gestos multitáctiles• Clases UIGestureRecognizer• Implementar el protocolo UIGestureRecognizerDelegate

• Tipos de gestos:• Toque simple: UITapGestureRecognizer• Pellizco: UIPinchGestureRecognizer• Rotación: UIRotationGestureRecognizer• Movimiento lateral: UISwipeGestureRecognizer• Pulsar y arrastrar: UIPanGestureRecognizer• Pulsado largo: UILongPressGestureRecognizer

7

Page 8: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

UITapGestureRecognizer• Toque sencillo en pantalla.• Definición:

• Detección:

8

UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];recognizer.delegate = self;[self.imagen addGestureRecognizer:recognizer];

- (void)handleTap:(UITapGestureRecognizer *)recognizer { NSLog(@"Hemos tocado la imagen");}

Page 9: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

UIPinchGestureRecognizer• Gesto de pellizcar• Definición:

• Detección:

9

UIPinchGestureRecognizer *recognizerPinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)];

recognizerPinch.delegate = self;[self.imagenLogo addGestureRecognizer:recognizerPinch];

- (void)handlePinch:(UIPinchGestureRecognizer *)recognizer { recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);

recognizer.scale = 1; }

Page 10: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

UIRotationGestureRecognizer• Gesto de rotación (uso de los dos dedos)• Definición:

• Detección:

10

UIRotationGestureRecognizer *recognizerRotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotate:)]; recognizerRotation.delegate = self; [self.imagenLogo addGestureRecognizer:recognizerRotation];

- (void)handleRotate:(UIRotationGestureRecognizer *)recognizer { recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation); }

Page 11: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

UISwipeGestureRecognizer• Gesto de arrastre lateral• Definición:

• Detección:

11

UISwipeGestureRecognizer *pressGestureLeft = [[[UISwipeGestureRecognizer alloc] initWithTarget: self action:@selector(handleSwipe:)];

[pressGestureLeft setDirection:UISwipeGestureRecognizerDirectionLeft];[self.view addGestureRecognizer:pressGestureLeft];

- (void) handleSwipe:(UISwipeGestureRecognizer *)recognizer {

if (gesture.direction == UISwipeGestureRecognizerDirectionLeft){

//Implementamos la acción } }

Page 12: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

UIPanGestureRecognizer• Gesto de pulsar y arrastrar• Definición:

• Detección:

12

UIPanGestureRecognizer * recognizerPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];recognizerPan.delegate = self;[self.imagenLogo addGestureRecognizer:recognizerPan];

- (void)handlePan:(UIPanGestureRecognizer *)recognizer { CGPoint translation = [recognizer translationInView:self.view];

recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y); [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; }

Page 13: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

UILongPressGestureRecognizer• Gesto de pulsación larga• Definición:

• Detección:

13

UILongPressGestureRecognizer *gestureRecognizer=[[UILongPressGestureRecognizer alloc] initWithTarget: self action:@selector(handleLongGesture:)];

[view addGestureRecognizer:gestureRecognizer];

- (void) handleLongGesture:(UILongPressGestureRecognizer *)recognizer { //Implementar acción... }

Page 14: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Acelerómetro• Acelerómetro• Implementación

14

Page 15: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Acelerómetro• Sensor mediante el cual obtenemos la aceleración según la

inclinación del dispositivo.• Cambios en los tres ejes: x, y, z• Movimientos: rotación e inclinación • Uno de los sensores más usados en iOS.• API muy sencilla de usar.

15

Page 16: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (1)• Clase UIAccelerometer• API: http://developer.apple.com/library/ios/#DOCUMENTATION/

UIKit/Reference/UIAccelerometer_Class/Reference/UIAccelerometer.html

• Uso del singleton sharedAccelerometer• Definiremos el protocolo UIAccelerometerDelegate• Intervalo de tiempo determinado: (en segundos)

• Lo habitual: intervalo de cálculo cada 0.01 segundos.• A mayor frecuencia de cálculo -> menor rendimiento, mayor

precisión.

16

[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 60.0f)];

Page 17: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (2)• Implementación del protocolo UIAccelerometerDelegate

17

// Movemos una pelota por la pantalla

-(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration { /* NSLog(@"x: %g", acceleration.x); NSLog(@"y: %g", acceleration.y); NSLog(@"z: %g", acceleration.z); */

_delta.x = acceleration.x * 10; _delta.y = acceleration.y * 10;

_pelota.center = CGPointMake(_pelota.center.x + _delta.x, _pelota.center.y + _delta.y);

}

Page 18: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Ejemplos de uso (1)• Muy usado en juegos: • Ejemplo: volante para controlar un coche. Real Racing

18

Page 19: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Ejemplos de uso (2)• Juego Labyrinth 2:• Vídeo: http://www.youtube.com/watch?v=_GEpwCqGZ54

19

Page 20: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Giroscopio• Giroscopio• Implementación

20

Page 21: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Giroscopio• Detecta la rotación del dispositivo sobre sí mismo.• Calcula la velocidad angular en los 3 ejes (x, y, z).• Permite saber “hacia donde” está orientado el dispositivo,

detecta los giros.• Complemento ideal para el acelerómetro:• Detección de movimiento en 6 ejes.• Acelerómetro: Detecta la aceleración en los 3 ejes.• Giroscopio: Detecta la orientación en los 3 ejes.

• Disponible a partir del iPhone 4, iPad 2.• Usado principalmente en juegos 3D.

21

Page 22: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (1)• Framework: CoreMotion.framework• Clase: CMMotionManager• Iniciar el sensor del giroscopio:

• Timer para actualizar los valores del giroscopio:

22

[self.motionManager startGyroUpdates];

self.timer = [NSTimer scheduledTimerWithTimeInterval:1/30.0 target:self selector:@selector(actualizaGiroscopio) userInfo:nil repeats:YES];

Page 23: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (2)• Obtener los valores del giroscopio y realizar las acciones que

queramos:

23

-(void)actualizaGiroscopio { // Ratio de rotación en el eje z float rate = self.motionManager.gyroData.rotationRate.z; if (fabs(rate) > .2) { // comprobamos si es un valor significativo (>0.2) // Dirección de la rotación float direction = rate > 0 ? 1 : -1; // La rotación lo sumamos al valor actual _rotation += direction * M_PI/90.0; // Rotamos la imagen self.imagen.transform = CGAffineTransformMakeRotation(_rotation); }}

Page 24: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Ejemplos de uso• Video demostración: http://www.youtube.com/watch?v=veN-

WHhtcjs

24

Page 25: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Brújula• Brújula• Implementación

25

Page 26: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Brújula• Permite obtener los grados respecto al norte

magnético y al norte verdadero (geográfico):• 0 = el dispositivo apunta al norte magnético.• 90 = el dispositivo apunta al este.• 180 = el dispositivo apunta al sur.• 270 = el dispositivo apunta al oeste.

• Disponible a partir del iPhone 3GS.

• Muy útil para aplicaciones que usen mapas y aplicaciones de realidad aumentada.

26

Page 27: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (1)• Framework CoreLocation.framework

• Clase CLLocationManager:• Gestiona las actualizaciones de los valores de la brújula.

• Clase CLLocationDirection:• Obtiene los valores en grados de la brújula.

• Implementar el protocolo CLLocationManagerDelegate

• Iniciar las actualizaciones de la brújula:

27

[_locationManager startUpdatingLocation];

Page 28: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (2)• Implementar el método del protocolo CLLocationManager:

• Video demostración: http://www.youtube.com/watch?v=78eIB-s28_A

28

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { // Comprobación de la precisión del sensor if (newHeading.headingAccuracy < 0) return;

float gradosNorteMagnetico = newHeading.magneticHeading;float gradosNorteVerdadero = newHeading.trueHeading;

}

Page 29: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

GPS• GPS• Implementación

29

Page 30: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

GPS• Nos proporciona datos de posicionamiento:• Latitud• Longitud• Altitud• Velocidad

• Si el GPS no está disponible se accede por triangulación de antenas WiFi -> menor exactitud.

• Disponible a partir del iPhone 3GS.• Uso principalmente en aplicaciones de mapas, de realidad

aumentada y de navegación.

30

Page 31: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (1)• Implementación muy similar a la brújula.• Framework: CoreLocation.framework• Clase CLLocationManager:• Gestiona las actualizaciones de los valores del GPS.

• Implementar el protocolo CLLocationManagerDelegate

• Iniciar las actualizaciones del GPS:

31

[_locationManager startUpdatingLocation];

Page 32: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (2)• Implementar los métodos del protocolo CLLocationManager:

32

// Métodos del protocolo CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

NSLog([newLocation descripcion]);

}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog([error descripcion]);

}

Page 33: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (3)

33

// Atributos de CLLocation:

// Velocidad [location speed]];

// Latitud location.coordinate.latitude;

// Longitudlocation.coordinate.longitude;

// Altitud [location altitude];

Page 34: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Proximidad y sensor de luz ambiente• Proximidad y sensor de luz ambiente• Implementación

34

Page 35: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Proximidad y sensor de luz ambiente• Sensor de proximidad = sensor de luz ambiente.• Nos proporciona un valor booleano (sí/no) que indica si un

objeto está próximo al dispositivo.• No obtenemos un valor variable -> poca utilidad en

aplicaciones.• Usado en el iPhone para oscurecer la pantalla cuando usamos

el teléfono.• API liberada en el 2009 para su uso libre por los

desarrolladores.

35

Page 36: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Ejemplo de uso• Uso en la aplicación de Google:• Activar automáticamente la búsqueda por voz al acercar el iPhone

al oído.

36

Page 37: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (1)• Métodos del singleton UIDevice.

• Activar el sensor:

• Comprobar si el dispositivo soporta el sensor:

37

[device setProximityMonitoringEnabled:YES];

UIDevice *device = [UIDevice currentDevice];

BOOL sensorActivo = [device isProximityMonitoringEnabled];

Page 38: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

Implementación (2)• Crear notificación para obtener los cambios del sensor de

proximidad:• Notificación: UIDeviceProximityStateDidChangeNotification

38

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityChanged:) name:UIDeviceProximityStateDidChangeNotification object:device];

- (void) proximityChanged:(NSNotification *)notification { UIDevice *device = [notification object]; NSLog(@"Cambio en el valor de proximidad: %i", device.proximityState);}

Vídeo de funcionamiento:http://www.youtube.com/watch?v=lQ1M8GrVV_g

Page 39: Sensores - ua€¦ · Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-13 Depto. Ciencia de la Computación e IA Sensores Sesión 3: Sensores en iOSFile Size:

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Sensores © 2012-13 Depto. Ciencia de la Computación e IA Sensores en iOS

• ¿Preguntas?

39