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

Reply via email to