java - How to make a perfect delaytime so it only counts one time -


hello im working jumpingapp count how many times jumping , im using accelorometer sensor. problem got don't know how put delay perfect, jump counts 2 jump doesn't register , works good. have around 0.4sec on every count jump.

private textview textview; private textview text; private sensormanager sensormanager; double ax,ay,az; boolean newjumpaccepted = true; int numbersofjumps = 0; long starttime = 0; int count; mediaplayer mediaplayer; handler timerhandler = new handler(); runnable timerrunnable = new runnable() {     @override     public void run() {         long millis = system.currenttimemillis() - starttime;          if(millis>400){             newjumpaccepted = true;         } else {             newjumpaccepted = false;         }           int seconds = (int) (millis / 1000);         int minutes = seconds / 60;         seconds = seconds % 60;         timerhandler.postdelayed(this,500);     } };   @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     sensormanager=(sensormanager) getsystemservice(sensor_service);     sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_accelerometer), sensormanager.sensor_delay_fastest);     text = (textview) findviewbyid(r.id.text);     textview = (textview) findviewbyid(r.id.textview); } @override public void onaccuracychanged(sensor arg0, int arg1) { }  @override public void onsensorchanged(sensorevent event){     sharedpreferences preferences =      preferencemanager.getdefaultsharedpreferences(this);     string result = "";     double d = math.round(event.values[1]);     float threshold = preferences.getfloat("hello", 11);     if (d != 0 && d >= threshold && newjumpaccepted){         count++;     }     log.i("hej", string.valueof(d));     text.settext("jump made" + " " + count + " " + d);     text.invalidate();     starttime(); }  private void starttime() {     if(newjumpaccepted) {         starttime = system.currenttimemillis();         timerhandler.postdelayed(timerrunnable, 0);     }     newjumpaccepted = false; } } 

timer timer; mytimertask mytimertask;  @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     sensormanager=(sensormanager) getsystemservice(sensor_service);     sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_accelerometer), sensormanager.sensor_delay_fastest);     text = (textview) findviewbyid(r.id.text);     textview = (textview) findviewbyid(r.id.textview);      if(timer != null){         timer.cancel();     }      timer = new timer();     mytimertask = new mytimertask();      timer.schedule(mytimertask, 400, 400); }  class mytimertask extends timertask {      @override     public void run() {         runonuithread(new runnable() {              @override             public void run() {                  if (!newjumpaccepted) {                     text.settext(string.valueof(count));                     newjumpaccepted = true;                 }             }         });     } } 

Comments