android - How can I unrigerster the listener to read event every 5 seconds -


i trying send data of magnetic field sensor server every 5 seconds facing problem unregister sensorlisterner reading data. have tried sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_magnetic_field),1000 * 10); without seccuss. data being sent server 12 time in 1 second.

i appreciate help.

code:

public class mainactivity extends actionbaractivity implements         sensoreventlistener {     string telsastring;      private textview magneticx;     private textview magneticy;     private textview magneticz;     private textview magnetict;     private sensormanager sensormanager = null;     private float magx;     private float magy;     private float magz;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          sensormanager = (sensormanager) getsystemservice(sensor_service);         // capture magnetic sensor related view elements         magneticx = (textview) findviewbyid(r.id.valmag_x);         magneticy = (textview) findviewbyid(r.id.valmag_y);         magneticz = (textview) findviewbyid(r.id.valmag_z);         magnetict = (textview) findviewbyid(r.id.valmag_t);          // register magnetic sensor          sensormanager.registerlistener(this,          sensormanager.getdefaultsensor(sensor.type_magnetic_field),          sensormanager.sensor_delay_normal);              final sensoreventlistener listener = this;             new handler().postdelayed(new runnable() {                 @override                 public void run() {                     sensormanager.unregisterlistener(listener);                 }             }, 5000);      }      @override     protected void onpause() {         // unregister listener         sensormanager.unregisterlistener(this);         super.onpause();     }      @override     protected void onstop() {         // unregister listener         sensormanager.unregisterlistener(this);         super.onstop();     }      @override     protected void onresume() {         super.onresume();          sensormanager.registerlistener(this,                 sensormanager.getdefaultsensor(sensor.type_magnetic_field),                 sensormanager.sensor_delay_normal);     }      public void onaccuracychanged(sensor sensor, int accuracy) {      }      public void onsensorchanged(sensorevent sensorevent) {         synchronized (this) {             if (sensorevent.sensor.gettype() == sensor.type_magnetic_field) {                   magx = sensorevent.values[0];                  magy = sensorevent.values[1];                  magz = sensorevent.values[2];                  magneticx.settext(float.tostring(sensorevent.values[0]));                 magneticy.settext(float.tostring(sensorevent.values[1]));                 magneticz.settext(float.tostring(sensorevent.values[2]));                  double teslaxyz = (math.sqrt((magx * magx) + (magy * magy)                         + (magz * magz)));                 magnetict.settext(double.tostring(teslaxyz));                  try {                     jsonobject tesla = new jsonobject();                     tesla.put("tesla", teslaxyz);                     telsastring = tesla.tostring();                     new myasynctask().execute(telsastring);                  } catch (jsonexception e) {                     e.printstacktrace();                 }              }         }     } 

edit:

        sensormanager.registerlistener(this,                 sensormanager.getdefaultsensor(sensor.type_magnetic_field),                 10*1000*1000); . . . .              long curtime = system.currenttimemillis();             if ((curtime - lastupdate) > 10000) {                  lastupdate = curtime;            } 

the rate provided 1000 * 10 in microseconds, you requesting 10 millisecond update period. note requested sample period request. the rate may faster or slower, need track times , appropriate thing. when wish stop receiving events, unregister listener sensormanager.unregisterlistener() method.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -