Fundamentos da acelerómetro, giroscópio, e sensores de magnetómetro para ios

Um dispositivo iOS tem três com interfaces bem documentado para sensores - o acelerómetro, o giroscópio, e o magnetómetro. Tal como acontece com o sensor de orientação, o processo para estes sensores começa por iniciar e inicializar um ouvinte que ouve os eventos de sensores. Aqui está o código do método ViewDidLoad do controlador Sensores vista:

- (Void) viewDidLoad {... accelerationTextView.enabled = NO-gyroscopeTextView.enabled = NO-magnetometerTextView.enabled = NO- ... // Configure o movimento managerself-gt; MotionManager = [[alloc CMMotionManager] Init] -chapas-gt; MotionManager .accelerometerUpdateInterval = 1-auto-gt; motionManager.gyroUpdateInterval = 1-auto-gt; MotionManager. magnetometerUpdateInterval = 1- ...}

O objeto que lhe dá acesso a Sensor Events é uma instância da classe CMMotionManager. Você precisa criar um, e somente um, instância dessa classe (isto é, você deve tratá-lo como um Singleton, mesmo que ele não é). Então você definir propriedades, como o intervalo de atualização para cada um dos sensores.

Em seguida, você iniciar o monitoramento usando os métodos startAccelerometerUpdatesToQueue, startGyroUpdatesToQueue e startMagnetometerUpdatesToQueue, como mostrado nas startMonitoringSensors método (que é chamado quando você pressiona o botão Iniciar Monitoramento):



- (IBAction) startMonitoringSensors: (ID) remetente {[auto-gt; motionManagerstartAccelerometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (* CMAccelerometerData accelerometerData, NSError * erro) {[selfhandleAccelerationUpdates: accelerometerData.acceleration] -}] - [auto-gt; motionManagerstartGyroUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (* CMGyroData gyroscopeData, NSError * erro) {[Self handleGyroUpdates: gyroscopeData.rotationRate] -}] - [auto-gt; motionManagerstartMagnetometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (* CMMagnetometerData magnetometerData, NSError * erro) {[auto handleMagnetometerUpdates: magnetometerData.magneticField] -}] -}

Cada um destes métodos é chamado com um bloco de manipulador de linha utilizando a construção withHandler. Estes blocos manipulador de linha chamar os handleAccelerationUpdates, handleGyroUpdates e handleMagnetometerUpdates. Estes métodos são como se segue:

- (Void) handleAccelerationUpdates: (CMAcceleration) accelerationData {NSLog (@"Acceleration.x gt;% f% f% f% f% f% f% f% f% f% f

Publicações relacionadas