[英]Detect movement regardless device rotation
无论用户如何握住手机,我都会搜索一种检测手机移动的方法。
一些例子:
背景是我想要识别用户是否将手机从口袋中取出(例如向上拉30-40厘米,也可以在水平方向上拉几厘米)。
我认为因此我必须从userAcceleration和态度中获得一个组合。 但我没有找到正确的数学..
不确定你的意思是“正确的数学”。 但我会读出加速度计并总结所有3个方向(x / y / z)的绝对值。 这将为您提供加速的单个数字,与手机的方向或移动方向无关。
更好的是计算RMS加速度,即求和x / y / z加速度的平方并计算总和的平方根。
这种方法的明显缺点是它不会给你关于运动方向的信息。 您可以添加一些阈值或过滤以区分单个线性运动与振动(例如,通过测量两个加速事件之间的时间)。
此外,您可以确定高度的变化(这与手机方向无关),但我怀疑是否可以精确测量30 ... 40 cm的差异。
如果您的应用程序位于前台,您可以执行此操作。 您可以使用UIDeviceOrientationLandscapeLeft
和UIDeviceOrientationLandscapeRight
以及UIDeviceOrientationPortraitUpsideDown/UIDeviceOrientationPortrait
来检测手机认为它所在的景观,并从那里调整您计算移动的方式。
拿起手机时它可能会移动。 使用加速度计进行的这种改变可能会让您了解手机的移动方式。 这需要大量的测试。 我会设置您的练习应用程序并获取大量有关屏幕方向更改的数据,以及加速度计在每次更改时的行为方式以及查找趋势。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.