Основное движение Swift имеет userAcceleration.
Поскольку userAcceleration указывает на ускорение, невозможно получить информацию о местоположении устройства.
Я думаю, что для преобразования ускорения в положение вы можете выполнить интеграцию второго порядка. Но как вы можете выполнить интеграцию второго порядка в Swift?
Ниже приведен код для получения данных о движении ядра.
let motionManager = CMMotionManager()
func startSensorUpdates(intervalSeconds:Double) {
if motionManager.isDeviceMotionAvailable{
motionManager.deviceMotionUpdateInterval = intervalSeconds
motionManager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: {(motion:CMDeviceMotion?, error:Error?) in
self.getMotionData(deviceMotion: motion!)
})
}
}
// get motion data
func getMotionData(deviceMotion:CMDeviceMotion) {
print("attitudeX:", deviceMotion.attitude.pitch)
print("attitudeY:", deviceMotion.attitude.roll)
print("attitudeZ:", deviceMotion.attitude.yaw)
print("gyroX:", deviceMotion.rotationRate.x)
print("gyroY:", deviceMotion.rotationRate.y)
print("gyroZ:", deviceMotion.rotationRate.z)
print("gravityX:", deviceMotion.gravity.x)
print("gravityY:", deviceMotion.gravity.y)
print("gravityZ:", deviceMotion.gravity.z)
print("accX:", deviceMotion.userAcceleration.x)
print("accY:", deviceMotion.userAcceleration.y)
print("accZ:", deviceMotion.userAcceleration.z)
}
https://qiita.com/FollowTheDarkside/items/d16870a6535bdb5cb1f0