iOS 运动检测:运动检测灵敏度级别

2023-12-21

我有一个简单的问题。我正在尝试检测用户何时摇动 iPhone。我有标准代码来检测运动,这没有问题。然而,在我的实际手机上进行测试时,我意识到你必须用力摇动设备才能触发运动检测。我想知道是否有办法实施一定程度的敏感性检查。例如,一种检测用户是否轻轻摇动设备或介于轻微摇动和剧烈摇动之间的方法。这将针对 iOS 7,因此任何未从旧版 iOS 版本中弃用的提示或建议将不胜感激。我已经完成了谷歌搜索,但尚未找到解决此问题的任何好的解决方案(如果有的话。)

Thanks!

-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if(motion == UIEventSubtypeMotionShake)
    {
       //Detected motion, do something about it 
       //at this point.
    }
}

-(BOOL)canBecomeFirstResponder
{
    return YES;
}

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [self resignFirstResponder];
    [super viewWillDisappear:animated];
}

这是我找到的解决方案。这很有效,但您必须使用 deviceMotionUpdateInterval 时间值以及 AccelerationThreshold,这可能很难为实际的“轻微震动”与“拿起手机并将其移近您的脸等”获得良好的平衡行为...”可能有更好的方法,但这里是一个开始。在我的视图 didLoad 中我做了这样的事情:

#import <CoreMotion/CoreMotion.h> //do not forget to link the CoreMotion framework to your project
#define accelerationThreshold  0.30 // or whatever is appropriate - play around with different values

-(void)viewDidLoad
{
      CMMotionManager *motionManager; 

      motionManager = [[CMMotionManager alloc] init];
      motionManager.deviceMotionUpdateInterval = 1;

      [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]  withHandler:^(CMDeviceMotion *motion, NSError *error)
             {
                [self motionMethod:motion];
             }];
}

-(void)motionMethod:(CMDeviceMotion *)deviceMotion
{
    CMAcceleration userAcceleration = deviceMotion.userAcceleration;
    if (fabs(userAcceleration.x) > accelerationThreshold
        || fabs(userAcceleration.y) > accelerationThreshold
        || fabs(userAcceleration.z) > accelerationThreshold)
        {
           //Motion detected, handle it with method calls or additional
           //logic here.
           [self foo];
        }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 运动检测:运动检测灵敏度级别 的相关文章

随机推荐

  • 为什么 UIFont(descriptor:size:) 比 UIFont(name:size:) 慢 200 倍?

    最近我注意到滚动的性能正在减慢 我追踪了这个问题 发现原因是使用了由UIFont 描述符 大小 https developer apple com library ios documentation UIKit Reference UIFo
  • Numpy 通过交错连接数组

    我有 4 个数组 我想将它们连接成一个交错的数组 我该怎么做呢 gt gt gt import numpy as np gt gt gt a np tile 0 5 2 gt gt gt b np tile 1 5 2 gt gt gt c
  • 使用python查找fits文件中像素的物理坐标

    我想从 python 脚本中获取给定像素的物理天空坐标 我想使用 astropy 的 WCS 但我会在 python 中做任何事情 我已经尝试过这两段代码 from astropy io import fits from astropy w
  • 打印数组 LISP 的内容

    为什么这段代码不打印出数组的内容 defun loopfn state loop for x from 0 to 2 do loop for y from 0 to 2 do aref state x y 这里我传递了一个 3x3 矩阵 它
  • 正则表达式匹配开始和结束字符串

    这看起来应该是微不足道的 但我不太擅长正则表达式 而且这对谷歌来说似乎并不容易 我需要一个以字符串 dbo 开头的正则表达式 并以字符串 fn 结尾 就我而言 我不在乎这两个字符串之间有什么字符 只要开头和结尾正确即可 这是为了匹配 SQL
  • 为什么 LIB 文件具有如此两面性的野兽?

    我正在尝试了解 Microsoft Windows 上的 LIB 文件业务 并且我刚刚有了一个发现 我希望它能够消除迄今为止阻止我清楚掌握该问题的困惑 也就是说 LIB 文件并不是其文件扩展名所表明的那种文件 cd C Program Fi
  • 颤动错误:没有名称为“displayLarge”的命名参数

    我正在开发一个应用程序 两天前我在 git 上发布了最后一次更新 此后就没有再碰过代码 现在 我打开 android studio 当我尝试运行它时 它给了我这个错误 我尝试从计算机中删除存储库 然后再次克隆它 但它不起作用 我也尝试过寻找
  • 如何在FMX(火猴)中加载大位图

    我正在尝试创建一个需要加载的漫画查看器JPG像 1000 16000 这样的大尺寸图像 我的应用程序是在 delphi FMX 中 我已经尝试过使用TImage TImageViewer TImageControl但他们都使用TBitmap
  • Mac OS X 中的环境变量

    更新 以下链接没有完整的答案 必须在两个地方设置路径或变量 一个用于 GUI 一个用于 shell 是蹩脚的 不重复 在 OS X 中设置环境变量 https stackoverflow com questions 135688 setti
  • Powershell 根据早于 x 天的时间移动文件和文件夹

    我是 powershell 新手 正在尝试学习从一个目录到另一个目录的基本文件移动 我的目标是将超过 18 个月的文件和文件夹移动到作为计划任务运行的冷存储文件夹 我需要能够轻松修改它的目录以满足我们的需求 它需要保留文件夹结构并仅移动符合
  • 将 mongodb 返回对象转换为字典

    我将 Bottle 框架与 mongoengine 一起使用 我有一个订单模型 class OrderDetail Option orderDetailsQty FloatField def to dict self return mong
  • 对(flask-restful)GET API 调用进行单元测试时出现 500 INTERNAL SERVER ERROR

    我已经对我的 Flask restful API 模块中的所有方法进行了单元测试 现在我想通过实际进行 API 调用来测试 get 方法 我预计此测试会出现错误 400 我的资源类 class Response Resource marsh
  • WPF 本地化:使用 StringFormat 的动态资源?

    我正在使用 ResourceDictionary 在 NET 4 中进行本地化 有人有使用字符串格式的值的解决方案吗 例如 假设我有一个带有 SomeKey 键的值
  • 如何从 GameScene 中的 ViewController 调用方法

    我的 viewController 中有一个自定义 segue 的方法 如下所示 func gameOver performSegueWithIdentifier GameOver sender nil 我在 GameScene swift
  • MySQL表间自增

    在MySQL中 是否可以在两个不同的表中拥有自动递增的列 示例 table1 具有 secondaryid 列 table2 也具有 secondaryid 列 table1 secondaryid 和 table2 secondaryid
  • 以编程方式清除应用程序的数据

    我想以编程方式清除应用程序的数据 应用程序的数据可能包含数据库 共享首选项 内部 外部文件或应用程序内创建的任何其他文件等任何内容 我知道我们可以通过以下方式清除移动设备中的数据 设置 gt 应用程序 gt 管理应用程序 gt 我的应用程序
  • Angular2 ComponentRouter 防止自动组件重用[重复]

    这个问题在这里已经有答案了 文档https angular io docs ts latest guide router html https angular io docs ts latest guide router html stat
  • 咖啡脚本中的 switch case 语句

    我有几个不同的按钮调用相同的函数 我希望将它们包装在 switch 语句中 而不是使用一堆 else if 条件 任何帮助都会很棒 events click red blue black yellow openOverlay openOve
  • 如何计算Android项目中作为依赖项添加的库的大小

    我正在一个项目中使用多个库 例如 google play service retrofit gson glide twitter 和 facebook sdk 所以我想知道每个库在我的应用程序中占用的确切大小 请帮助我是否有任何可能的方法来
  • iOS 运动检测:运动检测灵敏度级别

    我有一个简单的问题 我正在尝试检测用户何时摇动 iPhone 我有标准代码来检测运动 这没有问题 然而 在我的实际手机上进行测试时 我意识到你必须用力摇动设备才能触发运动检测 我想知道是否有办法实施一定程度的敏感性检查 例如 一种检测用户是