Thursday, April 28, 2016

Accelerometer sensor cause losses running into a service

Leave a Comment

I am developing an application for Android Wear. It consists listen coordinates from accelerometer sensor, and find a pattern.

To do this, when the user clicks a button, the service starts and begins to store coordinates in a List. Usually accelerometer sensor log 4 to 5 coordinates per second.

The problem is sometimes the onSensorChanged() method does not receive data for several seconds, causing losses of data and difficult to find a pattern.

Here is a gist of my service: https://gist.github.com/cpalosrejano/8f0e59e47124275136fc3d5d941faa07

Things I've tried:

  • I am using android:stopWithTask=false to prevent the service stops when the activity dies.
  • I have also used a WakeLock to prevent the device go to sleep while the services is recording coordinates.

What am I doing wrong? Is there another way to receive callbacks from accelerometer sensor without causing lose data?

Thanks for any help.

1 Answers

Answers 1

What you can do is to write the data to a file on the device and read it from the file.

// When sensor value has changed @Override public void onSensorChanged(SensorEvent event){     if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){      //Perform a background task to store the data     new SensorEventLoggerTask().execute(event);      // And continue to do whatever you want and grab the data     // The data will be saved in to a file on the device and read it from themre     } } 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment