iphone - 如何将运动传感器数据从 Iphone 转换到 Android?

标签 iphone android accelerometer

我有一些用 Iphone 记录的运动传感器样本。 现在我要计算用户手势和 Iphone 上记录的手势之间的距离。

我的问题是 Iphone 上的传感器数据与 android 传感器数据的表示方式不同。如果我不移动 Iphone,我得到的数据介于 -1 和 1 之间;如果我不移动我的 Android 设备,我得到的值大约为 9,因为传感器测量重力。

我不知道如何转换 Iphone 传感器读数以将它们与我的 android 传感器读数进行比较。 android运动传感器数据说明here . Iphone 文档包含此 pdf .

最佳答案

我在将 iPhone 应用程序移植到 Android 时发现了同样的问题。我找到了一个解决方案。它适用于我的应用程序。

  1. 我发现 iPhone 的加速度计值介于 -2.5 和 +2.5 之间。 https://discussions.apple.com/thread/1743220?start=0&tstart=0
  2. 我发现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/

相关文章:

iphone - 在网格上旋转 CGPoint 的最佳方法是什么?

iphone - 为什么我得到的是黑框而不是选择器?

android - 从 2 个应用程序访问相同的 SQLite 数据库

java - 一个接一个地动画 View

accelerometer - 多个寄存器/设备的 i2c

android - 如何停止加速度计传感器

ios - 捕获大量图像时应用程序崩溃

iphone - 应用不同的过滤器

android - 为什么布局从 XML 扩展的 PopupWindow 不接受触摸事件?

c++ - 16位转10位代码解释