2011-01-08 5 views
0

J'ai travaillé dans un projet Android qui utilise des valeurs d'accéléromètre.Android: Convertir la sortie de l'accéléromètre des coordonnées du téléphone dans le système de coordonnées du monde

Cependant, la sortie de l'accéléromètre est définie en termes de système de coordonnées du téléphone. Est-ce que n'importe quel corps connaît une méthode pour convertir les valeurs de sortie de l'accéléromètre pour être en termes de coordonnées du monde?

Cordialement,

Moustafa

Répondre

0

Si vous voulez dire x, y, z coordonnées, vous ne pourriez pas les multiplier par -1? Juste C'est ce que je faisais quand j'ai commencé à déconner avec l'accéléromètre:

package com.semajhan.android.accelerometer; 

importation android.app.Activity; importez android.hardware.Sensor; importez android.hardware.SensorEvent; importez android.hardware.SensorEventListener; importez android.hardware.SensorManager; importez android.os.Bundle; importez android.widget.TextView;

Accéléromètre public class étend Activité {

SensorManager sensorManager; 
Sensor accelerometer; 
TextView textView; 
private SensorEventListener sensorEventListener = new SensorEventListener() { 

    public void onAccuracyChanged(Sensor sensor, int accuracy) { 

    } 

    public void onSensorChanged(SensorEvent event) { 

     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 
     update(x, y, z); 
    } 
}; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    textView = new TextView(this); 
    setContentView(textView); 
    sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
} 

public void update(float x, float y, float z) { 

    textView.setText("x: " + x + " y: " + y + " z: " + z); 
} 

protected void onResume() { 
    super.onResume(); 
    sensorManager.registerListener(sensorEventListener, accelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
} 

protected void onPause() { 
    super.onPause(); 
    sensorManager.unregisterListener(sensorEventListener); 
} 

}

+0

Non, je veux dire que je veux traduire l'accélération dans la coordination mondiale X, Y, Z , de sorte que tout l'effet de la gravité sera dans l'axe Z tout le temps, quel que soit l'orinetation du téléphone –

0

http://developer.android.com/reference/android/hardware/SensorEvent.html#values comme il est dit ici des valeurs - tableau d'accélérations, non coordonnées ..

Pourriez-vous me cantact, en ce moment, je J'essaie d'obtenir les coordsinates du téléphone (pas global mais local) et je ne suis pas sûr que mes trucs fonctionnent bien.

L'idée est que vous obtenez monde des coords de téléphone sur la configuration (étalonnage un peu) et appliquer ensuite les coordonnées du téléphone dans le nouveau système

Questions connexes