I am new to Android and I try to do a simple app that can log accelerometer, Gyro and GPS into a single csv file (background) so I could analyze the data later. After some digging in google, all the info I get are kinda old and some are not really working.
So, the questions are:
If I do all the task in UI thread like this https://stackoverflow.com/a/4343827/2985850, I wonder is there a delay between each sensor logging? As I want all the sensor run concurrently at the same sampling rate.
So far, I notice there are 2 ways to accomplish this: using multi-threading or Service. But, (correct me if I'm wrong) the service is also running on UI thread so that mean if I do it the Service way, the logging process also run in a single thread and this might probably cause some delay on the logging process between each sensor?
If there is a better way to accomplish this or any good example feel free to drop 'em here Thanks! :)
According to my experience I will try to answer your questions
Yes there is time difference between different sensor reading, in that case you have 2 options
a - You can also put a timestamp on your cvs file (you can get it by event.timestamp)
b - You can get sensor readings with a static frequency instead of SensorManager.SENSOR_DELAY_GAME (you can give time here as a ms, for example if you write 10 instead of SensorManager.SENSOR_DELAY_GAME your device get sensor reading every 10 ms (100Hz))
I also use it as a service and did not get any delay
Also I want to add one more small thing, if you want to get data for a small amount of time you can always use System.out.println() and it is faster than writing to a file