2010-08-11 65 views
3

我有一些运动传感器样本是用Iphone录制的。 现在我正在计算用户手势与Iphone上记录的手势之间的距离。如何将运动传感器数据从iPhone转换为Android?

我的问题是,Iphone上的传感器数据以不同的方式表示,然后是android传感器数据。如果我不移动Iphone,我会在-1和1之间得到数据,如果我不移动我的Android设备,我会得到9左右的值,因为传感器会测量重力。

我无法弄清楚如何转换Iphone传感器读数来比较他们到我的android传感器读数。 android运动传感器数据解释为here。 Iphone文档包含这个pdf

+0

看到的是https:// stackoverflow.com/questions/20745066/how-to-compare-accelerometer-values-in-ios-and-android – Armenia 2017-07-05 13:53:26

回答

2

我在Android中移植iPhone应用程序时发现同样的问题。我找到一个解决方案。它适用于我的应用程序。我希望它能帮助你。

  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(); 

希望它可以帮助...