Domanda

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?

È stato utile?

Soluzione

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top