SENSOREN MOBILER DEVICES Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung AM1 Hauptseminar: Re-usable Content in 3D und Simulationssystemen SS 2013 Prof. Manfred Thaller Referent: Nicolas Frings
Inhalt Warum Sensoren? Sensortypen GPS-Tutorial
Warum Sensoren? Technischer Fortschritt der Smartphones → Vereinfachung der Handhabung (Touch) → Gerade bei Apps essenziell (Navigation/Ortung) Problemstellung: Apps sollen schnell und effizient qualitativ hochwertige Informationen liefern! → Map-Apps Sensoren sind Grundvoraussetzung!
Warum Sensoren? Map-Apps Basic Knowledge in iOS: 3 Typen: Web Apps → Nutzen bereits vorhandene Geo-Referenzierungen (Google Maps) → Lediglich Ortung des mobilen devices nötig (Google Maps JavaScript API)
Warum Sensoren? Hybrid Apps → Smartphone-Apps welche auf Google Maps im Browser zurückgreifen → Copy-Paste bestehender SDK‘s, Frameworks, etc. → Ebenfalls Ortung des mobilen devices nötig Native Apps → Smartphone-Apps welche auf Apple Maps zurückgreifen → Ortung und Ausrichtung vonnöten (Map Kit API & Core Framework)
Sensortypen Kamera Optischer Sensor Schnittstelle: UIImagePickerViewController
Sensortypen Magnetometer Sensor erfasst magnetische Ausrichtung und ermöglicht so die präzise Ausrichtung des devices Kombination mit dem Beschleunigungssensor → Ermöglicht Echtzeit-Ausrichtung → Kompass Schnittstelle: CLLocationManager & CoreLocation
Sensortypen Mikrofon Audiosensor → Spracheingabe → automatische Lautstärkeregelung Schnittstelle: AV Foundation & Media Player frameworks
Sensortypen Beschleunigungssensor / Accelerometer Erfasst 3-achsige Bewegung Rotation (X-Achse) Weite (Y-Achse) Höhe (Z-Achse) Beispiel: Iphone senkrecht auf dem Tisch stehend: x = 0, y = 0, z = 1 Schnittstelle: Keine API im SDK vorhanden!
Sensortypen Gyroskop / Kreiselsensor Erweiterung zum Beschleunigungssensor Erfasst präzise das device in sämtlichen Lagen und Positionen → Grundlage für die device-Ortung → Core Framework Schnittstelle Schnittstelle: Core Location Framework
GPS-Tutorial Neues Projekt mit der CoreLocation Framework verknüpfen und eine CoreLocationDelegateClass als Objective-C class anlegen.
GPS-Tutorial In der.h wird die Klasse definiert. - (void)locationUpdate:(CLLocation *)location; - CoreLocationController : NSObject { CLLocationManager *locMgr; id delegate; (nonatomic, retain) CLLocationManager (nonatomic, assign) id
GPS-Tutorial In der.m werden die eigentlichen core-updates festgelegt #import locMgr, delegate; - (id)init {self = [super init]; if(self != nil) { self.locMgr = [[[CLLocationManager alloc] init] autorelease]; self.locMgr.delegate = self; } return self; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { if([self.delegate { [self.delegate locationUpdate:newLocation]; } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { if([self.delegate { [self.delegate locationError:error]; } - (void)dealloc { [self.locMgr release]; [super dealloc];
GPS-Tutorial Nun noch ein geeignetes UI, welches auf Objekte unserer Klasse zurückgreift. #import #import CoreLocationDemoViewController : UIViewController { CoreLocationController *CLController; IBOutlet UILabel *locLabel; (nonatomic, retain) CoreLocationController
GPS-Tutorial Und dann noch das rekursive Update implementieren - (void)viewDidLoad { [super viewDidLoad]; CLController = [[CoreLocationController alloc] init]; CLController.delegate = self; [CLController.locMgr startUpdatingLocation]; } - (void)locationUpdate:(CLLocation *)location { locLabel.text = [location description]; } - (void)locationError:(NSError *)error { locLabel.text = [error description]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }
Vielen Dank!
Quellen Andreucci, Pro iOS Geo Allan, Basic Sensors in iOS tutorial/ tutorial/