Чтобы получить позицию от ускорения, вам необходимо интегрировать ее дважды.
Интеграция ускорения дает вам скорость и интеграция скорости дает вам положение.
Имейте в виду, что интегрирующий шум создает дрейф, а интегрирующий дрейф создает ДЛИННУЮ дрейф, датчики андроида имеют тенденцию генерировать довольно много шума.
На моей галактике S3 я смог получить дрейф в положении до 0,02 м за 5 секунд с использованием композитного датчика линейного акселерометра Google.
Я не уверен, можете ли вы использовать линейный датчик акселерометра на пряничном прядильщике. Если вы не можете, вам нужно будет удалить гравитацию перед ее интеграцией.
Если вы еще не сделали, читайте здесь все http://developer.android.com/guide/topics/sensors/sensors_motion.html
Большой разговор о датчиках в андроида
http://www.youtube.com/watch?v=C7JQ7Rpwn2k
Код:
static final float NS2S = 1.0f/1000000000.0f;
float[] last_values = null;
float[] velocity = null;
float[] position = null;
long last_timestamp = 0;
@Override
public void onSensorChanged(SensorEvent event) {
if(last_values != null){
float dt = (event.timestamp - last_timestamp) * NS2S;
for(int index = 0; index < 3;++index){
velocity[index] += (event.values[index] + last_values[index])/2 * dt;
position[index] += velocity[index] * dt;
}
}
else{
last_values = new float[3];
velocity = new float[3];
position = new float[3];
velocity[0] = velocity[1] = velocity[2] = 0f;
position[0] = position[1] = position[2] = 0f;
}
System.arraycopy(event.values, 0, last_values, 0, 3);
last_timestamp = event.timestamp;
}
Теперь у вас есть положение в 3d-пространстве, помните, что предполагается, что телефон неподвижен, когда он rts выборки.
Если вы не удалите гравитацию, это скоро будет очень далеко.
Это не фильтрует данные и генерирует много дрейфа.
Возможный дубликат [Использование акселерометра, гироскопа и компаса для расчета движения устройства в 3D-мире] (http://stackoverflow.com/questions/8264518/using-accelerometer-gyroscope-and-compass-to-calculate-devices- перемещение-в-3d), которое также запрашивает состояние вращения. –