Przeglądaj źródła

Switch to fixed-interval sampling

tags/SensorLogger/0.1
Chris Smith 14 lat temu
rodzic
commit
7b032dda2f

+ 1
- 1
code/SensorLogger/AndroidManifest.xml Wyświetl plik

@@ -1,6 +1,6 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
-     package="uk.co.md87.android.sensorlogger">
3
+     package="uk.co.md87.android.sensorlogger" android:versionCode="5" android:versionName="0.1">
4 4
     <application android:label="Sensor Logger">
5 5
          <activity android:name=".MainActivity" android:label="Sensor Logger">
6 6
             <intent-filter>

BIN
code/SensorLogger/dist/SensorLogger.apk Wyświetl plik


+ 42
- 22
code/SensorLogger/src/uk/co/md87/android/sensorlogger/SensorLoggerService.java Wyświetl plik

@@ -20,6 +20,8 @@ import java.io.FileNotFoundException;
20 20
 import java.io.FileOutputStream;
21 21
 import java.io.IOException;
22 22
 import java.io.OutputStreamWriter;
23
+import java.util.Timer;
24
+import java.util.TimerTask;
23 25
 
24 26
 /**
25 27
  *
@@ -33,33 +35,15 @@ public class SensorLoggerService extends Service {
33 35
     private FileOutputStream stream;
34 36
     private OutputStreamWriter writer;
35 37
 
36
-    private final SensorEventListener accelListener = new SensorEventListener() {
38
+    private int i = 0;
39
+    private float[] accelValues;
37 40
 
38
-        private int i = 0;
41
+    private final SensorEventListener accelListener = new SensorEventListener() {
39 42
 
40 43
         /** {@inheritDoc} */
41 44
         @Override
42 45
         public void onSensorChanged(final SensorEvent event) {
43
-            try {
44
-                writer.write(System.currentTimeMillis() + ":" +
45
-                        event.values[SensorManager.DATA_X] + "," +
46
-                        event.values[SensorManager.DATA_Y] + "," +
47
-                        event.values[SensorManager.DATA_Z] + "\n");
48
-
49
-                if (++i == 10) {
50
-                    writer.flush();
51
-
52
-                    if (++i == 1000) {
53
-                        // Auto upload!
54
-                        
55
-                        stopSelf();
56
-                        startService(new Intent(SensorLoggerService.this,
57
-                                UploaderService.class));
58
-                    }
59
-                }
60
-            } catch (IOException ex) {
61
-
62
-            }
46
+            setAccelValues(event.values);
63 47
         }
64 48
 
65 49
         /** {@inheritDoc} */
@@ -70,6 +54,35 @@ public class SensorLoggerService extends Service {
70 54
 
71 55
     };
72 56
 
57
+    public void setAccelValues(float[] accelValues) {
58
+        this.accelValues = accelValues;
59
+    }
60
+
61
+    public void write() {
62
+        try {
63
+            writer.write(System.currentTimeMillis() + ":" +
64
+                    accelValues[SensorManager.DATA_X] + "," +
65
+                    accelValues[SensorManager.DATA_Y] + "," +
66
+                    accelValues[SensorManager.DATA_Z] + "\n");
67
+
68
+            if (++i % 50 == 0) {
69
+                writer.flush();
70
+
71
+                if (i % 1000 == 0) {
72
+                    upload();
73
+                }
74
+            }
75
+        } catch (IOException ex) {
76
+            // Ignore
77
+        }
78
+    }
79
+
80
+    public void upload() {
81
+        stopSelf();
82
+        startService(new Intent(SensorLoggerService.this,
83
+                UploaderService.class));
84
+    }
85
+
73 86
     @Override
74 87
     public IBinder onBind(Intent arg0) {
75 88
         return new Binder();
@@ -93,6 +106,13 @@ public class SensorLoggerService extends Service {
93 106
 
94 107
         Toast.makeText(getApplicationContext(), "Sensor logger service started",
95 108
                 Toast.LENGTH_SHORT).show();
109
+
110
+        new Timer("Data logger").scheduleAtFixedRate(new TimerTask() {
111
+            @Override
112
+            public void run() {
113
+                write();
114
+            }
115
+        }, 0, 50);
96 116
     }
97 117
 
98 118
     @Override

Ładowanie…
Anuluj
Zapisz