繁体   English   中英

无论设备旋转如何,都可以检

[英]Detect movement regardless device rotation

无论用户如何握住手机,我都会搜索一种检测手机移动的方法。

一些例子:

  • 我感兴趣的是垂直运动(就像用户拉电话一样)'忽略'如果电话放在桌子上或握在手中(可能是颠倒的)。
  • 对水平移动感兴趣(例如用户将手机推离身体)也“忽略”用户如何握住手机。

背景是我想要识别用户是否将手机从口袋中取出(例如向上拉30-40厘米,也可以在水平方向上拉几厘米)。

我认为因此我必须从userAcceleration和态度中获得一个组合。 但我没有找到正确的数学..

不确定你的意思是“正确的数学”。 但我会读出加速度计并总结所有3个方向(x / y / z)的绝对值。 这将为您提供加速的单个数字,与手机的方向或移动方向无关。

更好的是计算RMS加速度,即求和x / y / z加速度的平方并计算总和的平方根。

这种方法的明显缺点是它不会给你关于运动方向的信息。 您可以添加一些阈值或过滤以区分单个线性运动与振动(例如,通过测量两个加速事件之间的时间)。

此外,您可以确定高度的变化(这与手机方向无关),但我怀疑是否可以精确测量30 ... 40 cm的差异。

如果您的应用程序位于前台,您可以执行此操作。 您可以使用UIDeviceOrientationLandscapeLeftUIDeviceOrientationLandscapeRight以及UIDeviceOrientationPortraitUpsideDown/UIDeviceOrientationPortrait来检测手机认为它所在的景观,并从那里调整您计算移动的方式。

拿起手机时它可能会移动。 使用加速度计进行的这种改变可能会让您了解手机的移动方式。 这需要大量的测试。 我会设置您的练习应用程序并获取大量有关屏幕方向更改的数据,以及加速度计在每次更改时的行为方式以及查找趋势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM