![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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/1.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/2.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/3.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/4.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/5.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/6.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/7.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/8.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/9.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/10.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/11.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/12.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/13.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/14.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/15.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/16.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/17.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/18.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/19.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/20.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/21.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/22.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/23.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/24.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/25.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/26.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/27.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/28.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/29.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/30.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/31.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/32.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/33.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/34.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/35.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/36.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/37.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/38.jpg)
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:](https://reader033.vdocuments.co/reader033/viewer/2022042310/5ed7401ad37f9f58ca6a8cb4/html5/thumbnails/39.jpg)
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