You can use Sensor to determinate speed but you must do some mathematic calculat ( Cos, sinus, abs...) Please check this below code
package org.sidibe.speedometre; /* * SIDIBE Ali-Broma,malien, [email protected], ENSAT Tanger * Novembre 2009 Tout droit permis. * * import java.util.*; import android.app.Activity; import android.content.Context; import android.graphics.*; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Handler; import android.view.Gravity; import android.widget.TextView; public class MySpeedometre extends Activity { TextView tv; SensorManager sensor; SensorEventListener svls; Handler myhandl= new Handler(); double temperature=0; public float velocite,accel_actuel,accel_app; Date last; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); last=new Date(System.currentTimeMillis()); sensor=(SensorManager)getSystemService(Context.SENSOR_SERVICE); sensor.registerListener(listener, sensor.getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST); //Mise a jour l interface chaque seconde Timer tim=new Timer(); tim.scheduleAtFixedRate(new TimerTask(){ public void run () { updateGUI(); } },0,1000); load(); setContentView(tv); } public void load() { tv= new TextView(this); tv.setBackgroundColor(R.drawable.finals); tv.setTextSize(16); tv.setTextColor(Color.GREEN); tv.setSingleLine(true); tv.setTypeface(null, Typeface.BOLD); tv.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM); tv.setGravity(Gravity.CENTER); } public void upadatevelocite() { // Date actuelle en milliseconde Date now= new Date(System.currentTimeMillis()); // ecart en seconde entre date passe et date actuelle long ecart= ( now.getTime()-last.getTime())/1000; // Mise à jour du temps last.setTime(now.getTime()); float ecartv=accel_app*ecart+0; /* calcule de la vitesse from v=at +vo;*/ // Mise à jour accel_app=accel_actuel; velocite=velocite+ecartv; tv.setText(String.valueOf(velocite)+"m/s"); } public final SensorEventListener listener= new SensorEventListener(){ @Override public void onAccuracyChanged(Sensor arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onSensorChanged(SensorEvent event) { float evaleur[]= event.values; double calibration = Double.NaN; double x= evaleur[SensorManager.DATA_X]; double y= evaleur[SensorManager.DATA_Y]; double z= evaleur[SensorManager.DATA_Z]; temperature= evaleur[SensorManager.SENSOR_TEMPERATURE]; // Calcul du changement acceleration en coordonnnee ca double a= -1*Math.sqrt(Math.pow(x, 2)+Math.pow(y, 2)+Math.pow(z, 2)); if(calibration==Double.NaN){ calibration=a; } else { upadatevelocite(); accel_actuel=(float)a; } } }; public void updateGUI() { myhandl.post(new Runnable(){ public void run() { tv.setText("Vit:"+ velocite+"m/s à:"+temperature+"°C\n par SIDIBE"); } }); } } ========================================================================== -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

