java - Accessing multiple sensors in non-activity classes -


i trying use multiple sensors accelerator,magnetic field, light , on , each sensor wrote individual class not activity , each of them has sensoreventlistener well. want when user chooses 1 of them start show data on fragment(on mainactivity) , when user changes previous sensor should stop , new 1 should start. however, when try stop previous 1 unregistering listener , doesn't unregister registers , works. want stop previous listener. wrong? ideas?

here sensor class;

public class accelerometer {     private  sensormanager sensormanager;     private   sensor sensor;     public list<objaccelerometer> lstdata;     objaccelerometer currentdata;     float lastx,lasty,lastz;     string currenttime;     int  numberofsamples;     context context;    public  accelerometer(context _context,int _numbersample)     {         context=_context;         sensormanager = (sensormanager) context.getsystemservice(context.sensor_service);         sensor = sensormanager.getdefaultsensor(sensor.type_accelerometer);         numberofsamples=_numbersample;         lstdata=new arraylist<>();      }     public void registerunregister(boolean register)      {         if(register)             sensormanager.registerlistener(msensorlistener, sensor, sensormanager.sensor_delay_fastest);         else             sensormanager.unregisterlistener(msensorlistener);     }       calendar time;         private final sensoreventlistener msensorlistener = new sensoreventlistener() {          public void onsensorchanged(sensorevent event) {             if(numberofsamples>lstdata.size()) {                 if (currentdata != null) {                     lastx = currentdata.get_x();                     lasty = currentdata.get_y();                     lastz = currentdata.get_z();                 }                 currentdata = new objaccelerometer();                 time = calendar.getinstance();                 currenttime = time.get(calendar.hour) + ":" + time.get(calendar.minute) + ":" + time.get(calendar.second) + ":" + time.get(calendar.millisecond);                 currentdata.set_time(currenttime);                 currentdata.set_x(event.values[0]);                 currentdata.set_y(event.values[1]);                 currentdata.set_z(event.values[2]);                 float speed = math.abs(event.values[0] + event.values[1] + event.values[2] - lastx - lasty - lastz);                 currentdata.set_speed(speed);                 lstdata.add(currentdata);                 util.createtoaster(context, "x y z time:" + currentdata.tostring());              }             else                 registerunregister(false);         }          public void onaccuracychanged(sensor sensor, int accuracy) {          }      }; } 

here code calling them ;

   unregisterallsensors();   switch (selectedsensor) {                  case accelerometer:                     accelerometer= new accelerometer(context, default_sample_number);                      accelerometer.registerunregister(true);                     lstaccelerometer = accelerometer.lstdata;                     break;                 case linear_accelerometer:                      linearaccelerometer= new linearaccelerometer(context, default_sample_number);                     linearaccelerometer.registerunregister(true);                      break; .... 

here unregisterallsensors() function code:

 if(accelerometer!=null) {             accelerometer.registerunregister(false);             accelerometer=null;         }         if(linearaccelerometer!=null) {             linearaccelerometer.registerunregister(false);             linearaccelerometer=null;         } 

sorry bothering people,it works! made few changes including setting sensormanager final parameter , removing toast message , add toaster register , unregister of each listener. worked! believe problem caused 2 things; 1-toasting message slower process sensing because of though unregistered messages still on screen while. 2- when didn't define sensormanager final , every time getting new instance of size of listener list 0.

still, can sample people want call sensors non-activity classes. thanks!


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -