[英]Simple iPhone motion detect
我需要檢測陀螺儀/加速度計何時被激活一定量。 基本上是檢測設備何時移動。 我對Core Motion一無所知。
也許有人可以指導我參加初學者教程或其他什么。
提前致謝。
我認為你必須使用Core Motion。 好消息是,對您的問題域使用並不難。 開始閱讀“ 事件處理指南”,尤其是“處理已處理設備 - 運動數據”部分。 如果你是在明知的輕微運動作出,因為你說有興趣,你可以省略旋轉處理和窄信號處理上CMDeviceMotion.userAcceleration。 這是因為每次旋轉都會產生加速度計信號。
創建一個CMDeviceMotionHandler ,如startDeviceMotionUpdatesToQueue:withHandler中所述:您的CMDeviceMotionHandler應該執行以下操作:
float accelerationThreshold = 0.2; // or whatever is appropriate - play around with different values
CMAcceleration userAcceleration = deviceMotion.userAcceleration;
if (fabs(userAcceleration.x) > accelerationThreshold)
|| fabs(userAcceleration.y) > accelerationThreshold
|| fabs(userAcceleration.z) > accelerationThreshold) {
// enter code here
}
基本上就是這樣。 請記住,每次加速都會有一個對應物。 這意味着,如果您施加一個力來向右移動(即加速)設備,則會有一個減速器對應物停止運動並讓設備停留在新位置。 因此,對於每一個動作,你的if
條件將變為真兩次。
在viewDidAppear
,成為第一個響應者:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
並確保您可以成為第一響應者:
- (BOOL)canBecomeFirstResponder {
return YES;
}
然后,您可以實現運動檢測。
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (event.subtype == UIEventTypeMotion){
//there was motion
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.