CMDeviceMotion.userAcceleration является положительным даже в состоянии покоя - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть следующий ViewController

import UIKit
import CoreMotion
class ViewController: UIViewController {
    let motion = CMMotionManager()
    var timer: Timer!

    func handleTick(timer: Timer) -> Void {
        guard let acceleration = self.motion.deviceMotion?.userAcceleration else {
            return
        }

        print(acceleration.x)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.motion.deviceMotionUpdateInterval = interval
        self.motion.startDeviceMotionUpdates()

        self.timer = Timer(fire: Date(), interval: interval, repeats: true, block: self.handleTick)
        RunLoop.current.add(self.timer, forMode: .default)
    }
}

2.354290336370468e-05

-7.16252252459526e-05

-0.000555720180273056

-+0,00029446836560964584

0,00029974430799484253

*

1015 0,00016765855252742767 * * * 1016 -3.846362233161926e-05

-0,0004231613129377365

+0,0002309028059244156 * * * тысяча двадцать-один 1 022 * * -0,000432834029197692871023 *

Эти значения не равны нулю, что усложняет вычисление скоростей, поскольку оно постоянно изменяется.

Каковы наилучшие способы избавления от этих видимых движений в неподвижном состоянии?Очевидно, я мог бы удалить все, что близко к нулю, но каково правильное «минимальное» значение?

1 Ответ

0 голосов
/ 22 апреля 2019

Установите устройство устойчиво на одну или две минуты, не касаясь его, и запишите полученные значения.
Проверьте максимальное полученное значение, добавьте 20-30% и используйте его в качестве порога.
Если высобираетесь использовать ваше приложение в автомобиле, вы должны найти порог в автомобиле.

...