180 likes | 330 Views
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.
E N D
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 devicesnö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. #import <Foundation/Foundation.h> #import <CoreLocation/CoreLocation.h> @protocolCoreLocationControllerDelegate @required - (void)locationUpdate:(CLLocation *)location; - (void)locationError:(NSError *)error; @end @interfaceCoreLocationController : NSObject <CLLocationManagerDelegate> { CLLocationManager*locMgr; iddelegate; } @property (nonatomic, retain) CLLocationManager *locMgr; @property (nonatomic, assign) iddelegate; @end
GPS-Tutorial In der .m werden die eigentlichen core-updates festgelegt #import "CoreLocationController.h„ @implementationCoreLocationController @synthesizelocMgr, delegate; - (id)init { self = [super init]; if(self!= nil) { self.locMgr= [[[CLLocationManageralloc] init] autorelease]; self.locMgr.delegate= self; } returnself; } - (void)locationManager:(CLLocationManager *)managerdidUpdateToLocation:(CLLocation *)newLocationfromLocation:(CLLocation *)oldLocation{ if([self.delegateconformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { [self.delegatelocationUpdate:newLocation]; } } - (void)locationManager:(CLLocationManager *)managerdidFailWithError:(NSError *)error{ if([self.delegateconformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { [self.delegatelocationError:error]; } } - (void)dealloc{ [self.locMgrrelease]; [super dealloc]; } @end
GPS-Tutorial Nun noch ein geeignetes UI, welches auf Objekte unserer Klasse zurückgreift. #import <UIKit/UIKit.h> #import "CoreLocationController.h" @interfaceCoreLocationDemoViewController : UIViewController <CoreLocationControllerDelegate> { CoreLocationController*CLController; IBOutletUILabel *locLabel; } @property (nonatomic, retain) CoreLocationController *CLController; @end
GPS-Tutorial Und dann noch das rekursive Update implementieren - (void)viewDidLoad{ [super viewDidLoad]; CLController= [[CoreLocationControlleralloc] init]; CLController.delegate= self; [CLController.locMgrstartUpdatingLocation]; } - (void)locationUpdate:(CLLocation *)location{ locLabel.text= [locationdescription]; } - (void)locationError:(NSError *)error{ locLabel.text= [errordescription]; } - (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; }
Quellen • Andreucci, Pro iOSGeo • Allan, Basic Sensors in iOS • http://www.vellios.com/2010/08/16/core-location-gps-tutorial/