Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.app.Service;
- import android.content.Context;
- import android.content.Intent;
- import android.hardware.Sensor;
- import android.hardware.SensorEvent;
- import android.hardware.SensorEventListener;
- import android.hardware.SensorManager;
- import android.os.AsyncTask;
- import android.os.IBinder;
- import android.os.PowerManager;
- import java.io.FileOutputStream;
- public class SensorsListener extends Service implements SensorEventListener {
- private SensorManager sensorManager;
- private Sensor accelerometer;
- private Sensor gyroscopemeter;
- private Sensor magnetometer;
- private Sensor barometer;
- private int speed = SensorManager.SENSOR_DELAY_UI;
- private float[] accelerometerVector = new float[3];
- private float[] magneticVector = new float[3];
- private float[] gyroVector = new float[3];
- private float pressure = 0;
- private int acceleroCount = 0;
- private int gyroCount= 0;
- private int magnetoCount = 0;
- private int acceleroAccuracy = 0;
- private int gyroAccuracy = 0;
- private int magnetoAccuracy = 0;
- private int pressureAccuracy = 0;
- private long timestamp;
- private FileOutputStream fileOutputStream;
- private PowerManager.WakeLock mWakeLock;
- // GPS
- static double latitude;
- static double longitude;
- private void printData()
- {
- System.out.println("Latitude : " + latitude);
- System.out.println("Longitude : " + longitude);
- }
- @Override
- public void onCreate() {
- super.onCreate();
- PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
- mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "app:My Tag");
- mWakeLock.acquire();
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- startSensors();
- return START_STICKY;
- }
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- // Start Sensors
- private void startSensors() {
- sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
- accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
- gyroscopemeter = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
- magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
- barometer = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
- sensorManager.registerListener(this, accelerometer, speed);
- sensorManager.registerListener(this, gyroscopemeter, speed);
- sensorManager.registerListener(this, magnetometer, speed);
- sensorManager.registerListener(this, barometer, speed);
- }
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {}
- @Override
- public void onSensorChanged(SensorEvent event) {
- timestamp = event.timestamp / 1000000;
- new SensorEventLoggerTask().execute(event);
- }
- private class SensorEventLoggerTask extends AsyncTask<SensorEvent, Void, Void> {
- @Override
- protected Void doInBackground(SensorEvent... events) {
- SensorEvent event = events[0];
- switch (event.sensor.getType()) {
- case Sensor.TYPE_ACCELEROMETER:
- accelerometerVector[0] = event.values[0];
- accelerometerVector[1] = event.values[1];
- accelerometerVector[2] = event.values[2];
- acceleroAccuracy = event.accuracy;
- acceleroCount++;
- break;
- case Sensor.TYPE_GYROSCOPE:
- gyroVector[0] = event.values[0];
- gyroVector[1] = event.values[1];
- gyroVector[2] = event.values[2];
- gyroAccuracy = event.accuracy;
- gyroCount++;
- break;
- case Sensor.TYPE_MAGNETIC_FIELD:
- magneticVector[0] = event.values[0];
- magneticVector[1] = event.values[1];
- magneticVector[2] = event.values[2];
- magnetoAccuracy = event.accuracy;
- magnetoCount++;
- break;
- case Sensor.TYPE_PRESSURE:
- pressure = event.values[0];
- pressureAccuracy = event.accuracy;
- break;
- default:
- return null;
- }
- if (acceleroCount * gyroCount * magnetoCount > 0) {
- MainActivity.getInstance().getLastLocation();
- printData();
- saveFile();
- acceleroCount = 0;
- gyroCount = 0;
- magnetoCount = 0;
- }
- return null;
- }
- }
- // Save File
- private void saveFile() {
- String fileContents = timestamp + ";" + accelerometerVector[0] + ";" + accelerometerVector[1] + ";" + accelerometerVector[2] + ";" + acceleroAccuracy + ";" + gyroVector[0] + ";" + gyroVector[1] + ";" + gyroVector[2] + ";" + gyroAccuracy + ";" + magneticVector[0] + ";" + magneticVector[1] + ";" + magneticVector[2] + ";" + magnetoAccuracy + ";" + pressure + ";" + pressureAccuracy + ";" + MainActivity.behavior + ";" + latitude + ";" + longitude;
- String separator = System.getProperty("line.separator");
- try {
- fileOutputStream = new FileOutputStream(MainActivity.myFile, true);
- fileOutputStream.write(fileContents.getBytes());
- fileOutputStream.write(separator.getBytes());
- fileOutputStream.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- sensorManager.unregisterListener(this);
- mWakeLock.release();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement