我想编写一个应用程序,用于检测此人是否持有iPhone或iPad级别,或者他们是否将设备沿x / y / z轴的某个角度以及它所处的角度倾斜。我见过很多提供类似功能的应用程序,但代码不多。
有人可以指点我在线教程,还是提供演示这些功能的代码?
答案 0 :(得分:3)
Coremotion是相关框架。 motiongraphs是一款出色的示例应用,可实时显示CoreMotion数据。
答案 1 :(得分:0)
正如@timothykc所说,MotionGraphs示例是使用CoreMotion库的一个很好的例子。
https://developer.apple.com/library/ios/samplecode/MotionGraphs/Introduction/Intro.html
另一个很好的例子:
http://www.captechconsulting.com/blog/john-morrison/ios-getting-started-accelerometer-data
以下是重点:
1)使用单例模式访问CMMotionManager(此片段直接来自示例项目)。
@interface AppDelegate ()
{
CMMotionManager *motionmanager;
}
@end
@implementation AppDelegate
- (CMMotionManager *)sharedManager
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
motionmanager = [[CMMotionManager alloc] init];
});
return motionmanager;
}
@end
2)使用此代码注册俯仰/翻滚/偏航的更新:
CMMotionManager *mManager = [(AppDelegate *)[[UIApplication sharedApplication] delegate] sharedManager];
APLDeviceMotionGraphViewController * __weak weakSelf = self;
if ([mManager isDeviceMotionAvailable] == YES) {
[mManager setDeviceMotionUpdateInterval:0.1];
[mManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion *deviceMotion, NSError *error)
{
//Access the pitch, roll, and yaw from the attitude and do something with them.
//deviceMotion.attitude.yaw
//deviceMotion.attitude.roll
//deviceMotion.attitude.pitch
}];
}