Search code examples
iosobjective-ccrashexc-bad-access

app crashed when 'startDeviceMotionUpdatesToQueue' of CMMotionManager callback


In my project, I have used CoreMotion, my code is in img. sometimes it crashed, but I can't repeat it, and I also don't know why.. could someone help me? I have been tortured by it for a long time...

startMotionManager:

enter image description here

handler

crash]


Solution

  • Please try this code
    
        import CoreMotion
    
        var motionManager: CMMotionManager?
    
            override func viewDidLoad() {
                    super.viewDidLoad()
                    motionManager = CMMotionManager()
                    if motionManager?.isDeviceMotionAvailable == true {
    
                        motionManager?.deviceMotionUpdateInterval = 0.1;
    
                        let queue = OperationQueue()
                        motionManager?.startDeviceMotionUpdates(to: queue, withHandler: { [weak self] (motion, error) -> Void in
    
                            // Get the attitude of the device
                            if let attitude = motion?.attitude {
                                // Get the pitch (in radians) and convert to degrees.
                                // Import Darwin to get M_PI in Swift
                                print(attitude.pitch * 180.0/M_PI)
                                }
                        })
    
                        print("Device motion started")
                    }
                    else {
                        print("Device motion unavailable");
                    }
                    // Do any additional setup after loading the view, typically from a nib.
                }
    
    
    based on attitude.pitch you can know Device angle and rotation on ( + & - )