我有一些用 Iphone 记录的运动传感器样本。 现在我要计算用户手势和 Iphone 上记录的手势之间的距离。
我的问题是 Iphone 上的传感器数据与 android 传感器数据的表示方式不同。如果我不移动 Iphone,我得到的数据介于 -1 和 1 之间;如果我不移动我的 Android 设备,我得到的值大约为 9,因为传感器测量重力。
我不知道如何转换 Iphone 传感器读数以将它们与我的 android 传感器读数进行比较。 android运动传感器数据说明here . Iphone 文档包含此 pdf .
最佳答案
我在将 iPhone 应用程序移植到 Android 时发现了同样的问题。我找到了一个解决方案。它适用于我的应用程序。
- 我发现 iPhone 的加速度计值介于 -2.5 和 +2.5 之间。 https://discussions.apple.com/thread/1743220?start=0&tstart=0
- 我发现Android 的传感器类有找到最大值的方法。 http://developer.android.com/reference/android/hardware/Sensor.html#getMaximumRange()
现在我把简单的计算如下
public void onSensorChanged(SensorEvent event) {
float t = 2.5f / accMaxValue;
Log.i(TAG,"onSensorChanged X "+ (event.values[0]*t) +"\t\t Y "+ (event.values[1]*t)+"\t\t Z "+ (event.values[2]*t) );
}
获取传感器的最大值
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
accMaxValue = mAccelerometer.getMaximumRange();
关于iphone - 如何将运动传感器数据从 Iphone 转换到 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3457395/