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
Post a Comment