android - How does the step-counter from the samsung health app, count the steps?
问题描述
I know that when I want to use any of androids sensors, I have to register them and read their values via onSensorChanged().
If I am done with them, I unregister them to save power.
How come the step-counter in my Galaxy S7s health app is able to count steps?
I assume it's not e.g. the accelerometer, since the high power consumption of the sensor would drain my battery in hours.
解决方案
我发现了一篇关于此的非常棒的文章,因为我前段时间也有同样的疑问。 https://www.explainthatstuff.com/how-pedometers-work.html
这是简短的版本
现代计步器的工作方式非常相似,但部分是电子的。打开一个,你会发现一个金属摆锤(一端有重物的锤子)通过一个细弹簧连接到电子计数电路中。通常电路是开路的,没有电流流过它。当您迈出一步时,锤子摆动并接触中心的金属触点,完成电路并允许电流流动。电流使电路通电并为您的步数增加一。当您完成该步骤时,锤子再次摆动(在弹簧的帮助下)并且电路断开,有效地重置计步器为下一步做好准备。计步器在 LCD 显示屏上显示您的步数;大多数会将步数转换为以英里或公里为单位的近似距离(或您的卡路里数)已烧毁)只需按一下按钮。请注意,在某些计步器中,锤摆电路的工作方式相反:它通常是关闭的,每一步都会使其暂时打开。
更复杂的计步器(包括欧姆龙制造的一些非常好的计步器)完全以电子方式工作,并且由于它们没有移动部件,因此往往更持久、更可靠、更准确。他们省去了摆动的摆锤,而是用两个或三个加速度计测量您的步数。这些微芯片以直角排列,可在您移动双腿时检测力的微小变化。由于加速度计通常内置在手机等小工具中,因此越来越普遍地发现这类东西也可以为您计算步数(例如,有很多适用于 iPhone 的计步器应用程序)。GPS卫星导航设备也可以计算出你走了多远或跑了多远,但它们是通过卫星信号计算而不是计算步数来做到的
推荐阅读
- powershell - 将 IPAddress 数组转换为 HTML
- c - 如何自定义 C printf 函数以自动添加消息日志?
- javascript - AngularJS 动态地改变一个选择的 CSS 类
- javascript - 将嵌套数组中的特定键更改为javascript中的对象
- amazon-web-services - Airflow 1.1.10 远程 S3 日志
- tensorflow - 设置卷积层的过滤器权重
- android - 将自定义字体添加到 attrs.xml
- c# - 将 JSON 反序列化为一种以上的数据类型(地理空间系统)
- .htaccess - .htaccess 从旧域重定向到新域
- java - 合并到增量表中不适用于 java foreachbatch