我对这个问题的标题措辞非常怀疑,但我认为这就是它的全部观点。
我一直在尝试只读取WatchKit上的CoreMotion数据,但事实证明,我无法使startDeviceMotionUpdatesToQueue
工作,我的处理程序永远不会被调用。
我尝试在自定义后台线程(NSOperationQueue()
)中运行,但仍然没有运气。
我正在使用真正的Apple Watch进行调试,而不是模拟器。
在我的WKInterfaceController
:
let manager = CMMotionManager()
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
let communicator = SessionDelegate()
manager.deviceMotionUpdateInterval = 1 / 60
manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
(motionerOp: CMDeviceMotion?, errorOp: NSError?) -> Void in
print("got into handler")
guard let motion = motionerOp else {
if let error = errorOp {
print(error.localizedDescription)
}
assertionFailure()
return
}
print("passed guard")
let roll = motion.attitude.roll
let pitch = motion.attitude.pitch
let yaw = motion.attitude.yaw
let attitudeToSend = ["roll": roll, "pitch": pitch, "yaw": yaw]
communicator.send(attitudeToSend)
}
print("normal stack")
}
输出
normal stack
normal stack
(是的,两次!我不知道为什么会这样,但那不是重点,必须是我做错的另一件事)
我在这里张贴这个'因为我不知道在哪里调查,这是疯狂的。
答案 0 :(得分:0)
设备动态(deviceMotionAvailable
)尚未在WatchOS2中可用(startAccelerometerUpdatesToQueue
返回false),可能加速度计可以帮助您task copySharedLibs << {
copy {
from '\\\\network\\android\\armeabi\\liba.so'
into 'src\\main\\jniLibs\\armeabi'
}
copy {
from '\\\\network\\android\\\\mips\\liba.so'
into 'src\\main\\jniLibs\\mips'
}
}
task deleteSharedLibs(type: Delete) {
delete 'src\\main\\jniLibs\\armeabi\\liba.so', 'src\\main\\jniLibs\\mips\\liba.so'
}
task buildRelease(dependsOn: ['copySharedLibs', 'uploadArchives', 'deleteSharedLibs']) {
uploadArchives.mustRunAfter copySharedLibs
deleteSharedLibs.mustRunAfter uploadArchives
}