无论用户如何握住手机,我都会搜索一种检测手机移动的方法。
一些例子:
背景是我想识别用户是否将手机从口袋中取出(例如向上拉30-40厘米,也可以在水平方向上拉几厘米)。
我认为因此我必须从userAcceleration和态度中获得一个组合。但我找不到正确的数学..
答案 0 :(得分:1)
不确定“正确的数学”是什么意思。但我会读出加速度计并总结所有3个方向(x / y / z)的绝对值。这将为您提供单个加速度数,与手机方向或移动方向无关。
更好的是计算RMS加速度,即求和x / y / z加速度的平方并计算总和的平方根。
这种方法的明显缺点是它不会提供有关运动方向的信息。您可以添加一些阈值或过滤来区分单个线性运动与抖动(例如,通过测量两个加速事件之间的时间)。
此外,您可以确定高度的变化(这与手机的方向无关),但我怀疑是否可以精确测量30 ... 40 cm的差异。
答案 1 :(得分:0)
如果您的应用位于前台,则可以执行此操作。您可以使用UIDeviceOrientationLandscapeLeft
和UIDeviceOrientationLandscapeRight
以及UIDeviceOrientationPortraitUpsideDown/UIDeviceOrientationPortrait
来检测手机认为的景观,并从中调整计算移动的方式。
手机拿起时可能会移动。使用加速度计进行的这种改变可能会让您了解手机的移动方式。这需要大量的测试。我会设置您的练习应用程序并获取大量有关屏幕方向更改的数据,以及加速度计在每次更改时的行为方式以及查找趋势。