Frage

I'm trying to use the accelerometer with Monotouch but a got an issue with MotionManager. Updates stop to be sent after 2-3 sec.

Here is the code. (Everything is created in the constructor of my main UIView).

CMMotionManager motionManager = new CMMotionManager();
motionManager.AccelerometerUpdateInterval = 0.5;
motionManager
    .StartAccelerometerUpdates(NSOperationQueue.CurrentQueue, 
        delegate(CMAccelerometerData data, NSError error) 
{
    myLabel.Text = data.Acceleration.X.ToString("0.0000");        
});

With UIAccelerometer, it's working:

UIAccelerometer acc = UIAccelerometer.SharedAccelerometer;
acc.UpdateInterval = 0.5;
acc.Acceleration += delegate(object sender, UIAccelerometerEventArgs e) 
{
    myLabel.Text = e.Acceleration.X.ToString("0.0000"); 
};

Any idea?

War es hilfreich?

Lösung

There's not enough source code to see if you keep a reference to your CMMotionManager instance. Otherwise the GC could dispose of it, which would stop any update.

In comparison you are using the shared UIAccelerometer (which won't ever be GC'ed) while you're creating your own CMMotionManager (which could be).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top