如何使用加速度计计算步数?

2023-11-23

我必须开发与此相同的功能计步器应用程序

我观察到了这一点计步器应用程序非常详细。

这不是一个完美的计步器应用程序。例如,如果您停留/坐在一个地方并握手,它还会检测步数和距离。

忽略这种理想和重力行为,因为在这个应用程序的说明中已经提到你应该绑住你的 iPhone 或者你应该把它放在口袋里来计算步数。 通过这种方式,我发现这个应用程序运行得非常好,它几乎可以检测到所有步骤。

我的问题是:我已经根据上述逻辑开发了一个示例,但它没有达到该级别。例如,有时它会同时检测到2-3步。有时效果很好。

My code:

在viewDidLoad中:

[[UIAccelerometer sharedAccelerometer] setUpdateInterval:0.2] 

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    const float violence = 1.2;
    static BOOL beenhere;
    BOOL shake = FALSE;
    if (beenhere) return;
    beenhere = TRUE;
    if (acceleration.x > violence || acceleration.x < (-1* violence))
       shake = TRUE;
    if (acceleration.y > violence || acceleration.y < (-1* violence))
       shake = TRUE;
    if (acceleration.z > violence || acceleration.z < (-1* violence))
       shake = TRUE;
    if (shake) {
       steps=steps+1;
     }
  beenhere = false;
}

我究竟做错了什么?我无法确定阈值。如果我把它调高,它就不会检测到小步骤。如果我把它变小,它会同时记录 3-4 个步骤。

是否需要任何其他实现来执行此操作,或者对此代码进行一些调整?

我已经看到了所有其他类似的 Stack Overflow 链接。我发现没有任何东西可以达到这个水平。

请帮忙。


一直在计算打鼾的次数,而不是步数,但也有一些相同的问题。没有实际答案,但有一些建议:

  1. 步骤之间需要有时间间隔。是的,有人可以缓慢行走或慢跑,但即使最快,步与步之间也可能有 1/5 秒的时间间隔。如果“影响”看起来比这更快,那么它们很可能只是来自反弹/震动。
  2. 而不是你的固定阈值(violence)采用可变阈值,基于移动平均线以前的事件。
  3. 基于手机不会在短时间内改变方向的假设,考虑保留单独的 x、y 和 z 阈值。
  4. 不要只是忽略强于某一水平的事件,而是考虑忽略某个范围之外的事件,并由两个阈值(一个可能是另一个阈值的一小部分)指定限制。
  5. 考虑一下当你走路时会发生什么——身体有一个非常有节奏的向前/向后加速,并且当脚接触地面时会产生“震动”。最好尝试忽略震动(相当短期的信号),而寻找有节奏的向前/向后运动。

另一个建议

“现场”测试这个野兽是不可能的。 (我可以想象您试图慢跑,同时将笔记本电脑放在您面前,试图让调试器控制台聚焦。)您应该做的是首先装备您的应用程序以制作一些包含原始数据的录音(即写入文件)测量,然后重新装备您的应用程序(#ifdefs 在这里会很方便),以便能够“回放”这些测量结果,以便您可以使用调试器单步调试应用程序并观察其行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用加速度计计算步数? 的相关文章

  • 如何找到键盘未覆盖的视图部分(UIModalPresenationStyleFormSheet)?

    我有一个视图控制器 显示带有 UITextView 的视图 并且我想在键盘出现时调整视图的大小 以便 UITextView 不会被键盘覆盖 我几乎在所有情况下都可以正常工作 据我所知 仅当视图控制器以 ModalPresentationSt
  • 如何在iOS中处理1到3个手指的滑动手势

    我使用以下代码来处理代码中的 1 根手指滑动 UISwipeGestureRecognizer swipe UISwipeGestureRecognizer alloc initWithTarget self action selector
  • 如何从 ContentView 外部显示 SwiftUI 警报?

    我正在构建 Swift 应用程序 并试图找出如何显示警报 我有一个单独的 swift 文件正在执行一些计算 并且在某些条件下我希望它向用户显示警报 基本上告诉他们出了问题 然而 我见过的大多数例子都要求警报在ContentView或以其他方
  • iPhone 上的双精度与浮动

    我刚刚听说 iPhone 本身无法进行双倍操作 从而使它们比常规浮动慢得多 这是真的 证据 我对这个问题很感兴趣 因为我的程序需要高精度计算 而且我将不得不在速度上妥协 iPhone 可以在硬件中执行单精度和双精度算术 在 1176 原始
  • iOS 中 NSDecimalNumber 的小数分隔符错误

    我尝试通过以下方式输出具有正确的小数分隔符的十进制数的描述 NSString strValue 9 94300 NSDecimalNumber decimalNumber NSDecimalNumber decimalNumberWithS
  • CALayer边框奇怪问题

    我正在向 CALayer 添加边框 但有一些奇怪的行为 在我应用的边框之后出现模糊边框 参见屏幕截图 这是我的代码 void configureLabel self hidden YES self textAlignment NSTextA
  • Swift,以编程方式更改 UICollectionViewCell 和 UILabel(单元格内)的宽度

    我已将单元格 UICollectionViewCell 的宽度设置为等于 UICollectionView 的宽度 并且我尝试对该单元格中包含的 UILabel 执行完全相同的操作 我认为下面的代码准确地解释了我想要实现的目标 所以我在这里
  • 为什么 iOS 启动屏幕很慢?

    我的 iOS 应用程序启动屏幕大约需要 3 5 秒 我有一张将在启动屏幕后加载的地图 我的用户必须等待启动屏幕加载 然后再等待 3 秒才能加载地图 有没有办法最大限度地减少启动屏幕时间 基本上这种延迟意味着you在启动过程中做了一些非常错误
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 如何在 iPhone 上使用带有线程的 sqlite + fdbm 库

    相关这个问题 https stackoverflow com questions 1082554 我想把数据加载放在后台 但是 我收到 库例程调用不按顺序 错误 In 这个所以线程 https stackoverflow com quest
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • 如何向标准 UIButton 添加徽章? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以在标准中添加看起来标准的徽章UIButton 如果不支持半原生 那么实现此目的最简单的方法是什么 示例图片 这是 Sascha
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的

随机推荐

  • 保存和恢复 shell 变量

    我有两个 shell 脚本 我想从 C 程序调用它们 我希望第一个脚本中设置的 shell 变量在第二个脚本中可见 它看起来像这样 a sh var blah
  • C++ 创建数组

    为什么我不能做这样的事情 int size menu size int list size 有没有办法不使用向量来解决这个问题 数组更快 所以我想使用数组 thanks 大小必须在编译时已知 因为编译器需要知道多少堆栈空间需要为其分配足够的
  • 获取系统 ping 的输出而不打印到控制台

    我想打电话ping从 Python 中获取输出 我尝试了以下方法 response os system ping c 但是 这会打印到控制台 这是我不想要的 PING 10 10 0 100 10 10 0 100 56 86 bytes
  • Microsoft Sync Framework 与 Nhibernate TooManyRowsAffectedException 冲突

    我们正在尝试将 Microsoft Sync Framework 实现到我们的应用程序中 使用 NHibernate 保留其域 我们遇到的问题之一是 在 Sync Framework 更改了您的初始数据库结构 添加影子表和触发器 后 当您尝
  • 在redis中存储带有过期前缀的键

    尝试使用键前缀存储过期 x 时间的值 我正在使用redis 我目前正在使用 hset 存储值 import redis r redis StrictRedis localhost for i in range 10 r hset name
  • pthread条件和进程终止

    我有一个进程共享 pthread 条件 带有关联的互斥体 如果在此条件下等待的进程 使用 pthread cond wait 或 pthread cond timedwait 被终止 会发生什么 这个条件还能被其他进程使用吗 在我的场景中
  • 让用户指定服务在哪个帐户中运行

    我有一个应该在域帐户下运行的 Windows 服务由用户在安装时指定 这怎么可能 Wix安装程序 即要求用户提供服务应使用的帐户 密码 背景 我的服务需要访问网络共享并且LocalSystem没有适当的权限 因此我想使用现有的域用户帐户 服
  • 通配符可按精确扩展名获取文件

    在诊断需要循环文件的较大批处理脚本时 log扩展我发现了一个有趣的行为 在包含如下文件的示例目录中 bar log foo log foo log ignore foo log log 1676521099 not related 我的小测
  • START TRANSACTION 在 BEGIN ... END 上下文中或在 and LOOP 语法之外

    我有两个关于 MySQL 中的复合语句和事务的问题 FIRST MySQL手册中有两处注释 Note 在所有存储的程序中 解析器将 BEGIN WORK 视为 BEGIN END 块的开头 在此开始交易 上下文 请使用 START TRAN
  • Android - 使用 JSOUP 解析 JS 生成的 url

    我试图解析由 Bootstrap s Bootpage js 生成的 url 它看起来像https example com page 2但 JSOUP 无法解析它并显示主 url 如何从 Bootpage 获取正常链接或如何使 JSOUP
  • 由于迁移到 java 1.7 Xml 文档元素不会缩进

    我正在尝试缩进由 Transformer 生成的 XML 除了第一个节点 文档元素之外 所有 DOM 节点都按预期缩进 文档元素不另起一行 只是在 XML 声明之后连接 当我迁移到 java 1 7 时 会出现此错误 而使用 java 1
  • 为什么 Java 中允许将 double 转换为 char?

    Why is char c char 65 8 Java 中允许吗 既然这样它不应该抛出错误吗65 8不是一个精确的 Unicode 值 我知道双精度数被截断为整数 在这种情况下 65 但对我来说允许程序员进行这样的转换似乎是糟糕的设计 它
  • 将 X 轴标签与图表列对齐(ASP.Net 图表控件)

    我正在尝试使用 ASP Net Chart 控件制作一个图表 该控件在 X 轴上具有特定的数值 在 Y 轴上具有频率计数 以下是我想要从要替换的图表框架中获得的内容的示例 在上面的示例中 X 轴标签与列对齐 但是 使用 ASP Net Ch
  • 单击 RecyclerView 列表项

    我有一个RecyclerView with a LinearLayoutManager and an Adapter Override public int getItemViewType int position return posit
  • jQuery - 将 .one() 与悬停一起使用

    有没有办法让悬停函数只执行一次 这就是我目前正在尝试的 ask live hover function homesearch after hide 300 doTimeout 300 function hideClosedSearchLin
  • @with 注释到底有什么作用? (播放框架)

    我不太明白 with注释的作用 在Play框架站点中 它是这样写的 我们可以使用 With注释来注释控制器来告诉 Play调用相应的拦截器 和继承一样吗 它会调用给定类参数的 before吗 它到底有什么作用 我描述它的最好方法是 它为您的
  • 是否可以阻止 Jetpack Compose 输入修饰符消耗输入事件?

    在旧的 Android View 范例中 视图可以侦听 MotionEvent 而不消耗它们 DispatchTouchEvent or OnTouchEvent可以简单地返回 false 并且 MotionEvent 将穿过一层又一层的视
  • 在树莓派 4 上安装 Rust 后无法运行货物

    我尝试使用推荐的安装脚本在 Raspberrypi 4 上安装 rust pi raspberrypi tmp curl https sh rustup rs sSf sh 但重启后 cargo找不到 pi raspberrypi carg
  • 如何在 post-receive hooks 中获取推送者的信息?

    Git 中的作者 提交者和推送者可以是不同的人 但 git 并没有在日志中存储推送者的信息 那么 我如何得到它 你不知道 The 上游回购不对谁提供提交做出任何假设 可以通过电子邮件 USB 密钥上复制的差异补丁以及其他方式各种传输协议 其
  • 如何使用加速度计计算步数?

    我必须开发与此相同的功能计步器应用程序 我观察到了这一点计步器应用程序非常详细 这不是一个完美的计步器应用程序 例如 如果您停留 坐在一个地方并握手 它还会检测步数和距离 忽略这种理想和重力行为 因为在这个应用程序的说明中已经提到你应该绑住