簡體   English   中英

簡單的iPhone動作檢測

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM