Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
533 views
in Technique[技术] by (71.8m points)

objective c - CMMotionManager and the Gyroscope on iPhone 4

I am trying to simply NSLog the output of the new iPhone 4 Gyroscope. But after reading the documentation and following their sample code I am getting this error.

ERROR,Time,300635803.946,Function,"CLLoggingSetFile",could not open locations log /var/mobile/Library/Caches/CoreMotion/CoreMotion.log

Even if I just setup my motionManager object with [[CMMotionManager alloc] init]; on its own and no other code, I still get the error.

Here is my .h file.

#import <UIKit/UIKit.h>
#import <CoreMotion/CoreMotion.h>

@interface GyroTest0ViewController : UIViewController {
    CMMotionManager *motionManager;
    NSOperationQueue *opQ;
}

@end

And here my .m file.

- (void)viewDidLoad {
    [super viewDidLoad];

    // the error occurs even just with this line on its own
    motionManager = [[CMMotionManager alloc] init]; 

    if (motionManager.gyroAvailable) {
        motionManager.gyroUpdateInterval = 1.0/60.0;
        [motionManager startGyroUpdates];
        opQ = [[NSOperationQueue currentQueue] retain];
        CMGyroHandler gyroHandler = ^ (CMGyroData *gyroData, NSError *error) {
            CMRotationRate rotate = gyroData.rotationRate;
            NSLog(@"rotation rate = [%f, %f, %f]", rotate.x, rotate.y, rotate.z);
        };
    } else {
        NSLog(@"No gyroscope on device.");
        [motionManager release];
    }
}

Any help and/or source code to simply log the iPhone 4 gyroscope data would be much appreciated. Many thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try this,

    motionManager.gyroUpdateInterval = 1.0/60.0;
    [motionManager startGyroUpdatesToQueue:[NSOperationQueue currentQueue]
                               withHandler: ^(CMGyroData *gyroData, NSError *error)
                                            {
                                                CMRotationRate rotate = gyroData.rotationRate;
                                                NSLog(@"rotation rate = [%f, %f, %f]", rotate.x, rotate.y, rotate.z);
                                            }];

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...