how to calculate the vibration of a mobile in android app -


in app when user walks want calculate shaking(vibration) of mobile. how calculate shaking of mobile , how show output.

here code making mobile vibrated when shaked....

final vibrator vibe = (vibrator)getsystemservice(context.vibrator_service);          mshaker = new shakelistener(this);          mshaker.setonshakelistener(new shakelistener.onshakelistener ()   {    public void onshake()    {       vibe.vibrate(100);       system.out.println("shake listener called");       noofshakes++;    }   });     public class shakelistener implements sensoreventlistener {       private static final int force_threshold = 300;       private static final int time_threshold = 100;       private static final int shake_timeout = 500;       private static final int shake_duration = 1000;       private static final int shake_count = 3;        private sensormanager msensormgr;       private float mlastx=-1.0f, mlasty=-1.0f, mlastz=-1.0f;       private long mlasttime;       private onshakelistener mshakelistener;       private context mcontext;       private int mshakecount = 0;       private long mlastshake;       private long mlastforce;        public interface onshakelistener       {         public void onshake();       }        public shakelistener(context context)       {         mcontext = context;         resume();       }        public void setonshakelistener(onshakelistener listener)       {         mshakelistener = listener;       }        public void resume()        {         msensormgr = (sensormanager)mcontext.getsystemservice(context.sensor_service);         if (msensormgr == null)          {           throw new unsupportedoperationexception("sensors not supported");         }          boolean supported = false;          try          {             supported = msensormgr.registerlistener(this, msensormgr.getdefaultsensor(sensor.type_accelerometer), sensormanager.sensor_delay_game);         }          catch (exception e)          {             toast.maketext(mcontext, "shaking not supported", toast.length_long).show();         }          if ((!supported)&&(msensormgr != null)) msensormgr.unregisterlistener(this);       }        public void pause()        {         if (msensormgr != null)          {           msensormgr.unregisterlistener(this);           msensormgr = null;         }       }        public void onaccuracychanged(sensor sensor, int accuracy)        {        }        public void onsensorchanged(sensorevent event)       {         if (event.sensor.gettype() != sensor.type_accelerometer)             return;         long = system.currenttimemillis();          if ((now - mlastforce) > shake_timeout)          {           mshakecount = 0;         }          if ((now - mlasttime) > time_threshold)          {           long diff = - mlasttime;           float speed = math.abs(event.values[sensormanager.data_x] + event.values[sensormanager.data_y] + event.values[sensormanager.data_z] - mlastx - mlasty - mlastz) / diff * 10000;           system.out.println("speed of vibration "+speed);           if (speed > force_threshold)            {             if ((++mshakecount >= shake_count) && (now - mlastshake > shake_duration))              {               mlastshake = now;               mshakecount = 0;               if (mshakelistener != null)                {                 mshakelistener.onshake();               }             }             mlastforce = now;           }           mlasttime = now;           mlastx = event.values[sensormanager.data_x];           mlasty = event.values[sensormanager.data_y];           mlastz = event.values[sensormanager.data_z];         }       } } 

we have add following line in manifest file

 <uses-permission android:name="android.permission.shake" />     <uses-permission android:name="android.permission.vibrate" /> 

Comments