2017-01-15 3 views
0

Я прикладываю приложение для отслеживания сна, получая любое движение iPhone. Я искал везде, и есть много способов получить данные из этого, но не работает. Вот мой код.Не могу получить значение от акселерометра, гироскопа и устройства.

func startManager() { 
    let manager = CMMotionManager() 
    manager.startAccelerometerUpdates() 
    let accelerometer = manager.accelerometerData 
} 

Но manager.accelerometerData is nil. Я также пробовал это с помощью DeviceMotion, Gyro и UserAcceleration, но не работал. Я также пробовал это.

print(manager.isAccelerometerActive) 

Оно напечатано ложное, так что я думаю, что это проблема, но я до сих пор не могу сделать его активным.

Я попробовал поставить let manager = CMMotionManager() наверху, и он все равно не будет работать.

Я попытался поставить manager.startAccelerometerUpdates() в ViewDidLoad и по-прежнему не работает.

Я также пробовал еще один способ, который является этим.

manager.startAccelerometerUpdates(to: OperationQueue.main) { (data : CMAccelerometerData, error : Error) in 
     print(data) 
    } 

но это дало мне ошибку, говоря, что я должен добавить как! CMAccelerometerHandler, но после того, как я добавил, что он сказал мне добавить его снова.

Я хочу, чтобы получить необработанное значение от акселерометра, как х, у и г

(я импортировал CoreMotion)

Я делаю это с помощью Swift 3 на XCode 8.2.1 и тестирование его на iPhone 6с.

ответ

0

В Swift3, вы должны использовать дополнительные параметры в обработчике

motionManager.startAccelerometerUpdates(
    to: OperationQueue.main , 
    withHandler:{ (data : CMAccelerometerData?, error : Error?) in 
     print(data) 
})