Browse Source

Fix issues when no magnetic field sensor available

Disable upload button - closes #7
tags/SensorLogger/0.1.2
Chris Smith 14 years ago
parent
commit
b3b31fe567

+ 1
- 1
code/SensorLogger/AndroidManifest.xml View File

@@ -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" android:versionCode="7" android:versionName="0.1.1">
3
+     package="uk.co.md87.android.sensorlogger" android:versionCode="8" android:versionName="0.1.2">
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 View File


+ 2
- 2
code/SensorLogger/src/uk/co/md87/android/sensorlogger/MainActivity.java View File

@@ -20,7 +20,7 @@ import android.widget.TextView;
20 20
  */
21 21
 public class MainActivity extends Activity implements OnClickListener {
22 22
 
23
-    static final String VERSION = "0.1.1";
23
+    static final String VERSION = "0.1.2";
24 24
 
25 25
     static String ACTIVITY = "Unknown";
26 26
 
@@ -33,7 +33,7 @@ public class MainActivity extends Activity implements OnClickListener {
33 33
 
34 34
         ((Button) findViewById(R.id.start)).setOnClickListener(this);
35 35
         ((Button) findViewById(R.id.upload)).setOnClickListener(this);
36
-
36
+        ((Button) findViewById(R.id.upload)).setEnabled(false);
37 37
 
38 38
         ((TextView) findViewById(R.id.text)).setText("Welcome to sensor logger v"
39 39
                 + VERSION + "..."

+ 13
- 15
code/SensorLogger/src/uk/co/md87/android/sensorlogger/SensorLoggerService.java View File

@@ -14,6 +14,7 @@ import android.hardware.SensorEventListener;
14 14
 import android.hardware.SensorManager;
15 15
 import android.os.Binder;
16 16
 import android.os.IBinder;
17
+import android.util.Log;
17 18
 import android.widget.Toast;
18 19
 
19 20
 import java.io.FileNotFoundException;
@@ -37,8 +38,10 @@ public class SensorLoggerService extends Service {
37 38
     private FileOutputStream stream;
38 39
     private OutputStreamWriter writer;
39 40
 
40
-    private int i = 0;
41
-    private float[] accelValues, magValues;
41
+    private Timer timer;
42
+
43
+    private volatile int i = 0;
44
+    private float[] accelValues = new float[3], magValues = new float[3];
42 45
 
43 46
     private final SensorEventListener accelListener = new SensorEventListener() {
44 47
 
@@ -98,7 +101,7 @@ public class SensorLoggerService extends Service {
98 101
                 }
99 102
             }
100 103
         } catch (IOException ex) {
101
-            // Ignore
104
+            Log.e(TAG, "Unable to write", ex);
102 105
         }
103 106
     }
104 107
 
@@ -119,17 +122,11 @@ public class SensorLoggerService extends Service {
119 122
 
120 123
         STARTED = true;
121 124
 
122
-        new Timer("Delay timer").schedule(new TimerTask() {
123
-
124
-            @Override
125
-            public void run() {
126
-                init();
127
-            }
128
-        }, 10000);
125
+        init();
129 126
     }
130 127
 
131 128
     public void init() {
132
-       try {
129
+        try {
133 130
             stream = openFileOutput("sensors.log", MODE_APPEND | MODE_WORLD_READABLE);
134 131
             writer = new OutputStreamWriter(stream);
135 132
         } catch (FileNotFoundException ex) {
@@ -144,21 +141,22 @@ public class SensorLoggerService extends Service {
144 141
                 manager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
145 142
                 SensorManager.SENSOR_DELAY_FASTEST);
146 143
 
147
-        Toast.makeText(getApplicationContext(), "Sensor logger service monitoring...",
148
-                Toast.LENGTH_SHORT).show();
144
+        timer = new Timer("Data logger");
149 145
 
150
-        new Timer("Data logger").scheduleAtFixedRate(new TimerTask() {
146
+        timer.scheduleAtFixedRate(new TimerTask() {
151 147
             @Override
152 148
             public void run() {
153 149
                 write();
154 150
             }
155
-        }, 0, 50);
151
+        }, 10000, 50);
156 152
     }
157 153
 
158 154
     @Override
159 155
     public void onDestroy() {
160 156
         manager.unregisterListener(accelListener);
161 157
 
158
+        timer.cancel();
159
+
162 160
         STARTED = false;
163 161
 
164 162
         Toast.makeText(getApplicationContext(), "Sensor logger service stopped",

Loading…
Cancel
Save