我正在尝试让我的游戏在 Android 上运行。我已经用 Apportable 的免费版本移植了它,它运行良好,但我无法实现陀螺仪功能。
CMMotionManager
被初始化但运动更新永远不会开始(或者至少handleDeviceMotion:
永远不会被调用)。运动管理器的isAccelerometerActive
属性始终为 NO,但isAccelerometerAvailable
为 YES。
使用[NSOperationQueue mainQueue]
也无济于事。
这就是我初始化运动管理器的方式:
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.gyroUpdateInterval = .2;
[self.motionManager startDeviceMotionUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMDeviceMotion *motion, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
[self handleDeviceMotion:motion];
});
}];
它会向 logcat 生成以下消息:
E/Sensors ( 507): HAL:ERR open file /sys/bus/iio/devices/iio:device0/dmp_event_int_on to write with error 2
E/Sensors ( 507): HAL:ERR can't disable DMP event interrupt
我不知道这意味着什么……我正在 Asus Nexus 7 上测试该应用程序。
我需要做一些特别的事情才能将 CoreMotion 与 Apportable 一起使用吗?
编辑: 这是我创建的一个简单的测试项目来演示这个问题。