Kaynağa Gözat

Sampler now extracts features as it goes

Reduces turnover of objects/memory usage
master
Chris Smith 14 yıl önce
ebeveyn
işleme
11a46845d1

BIN
code/ActivityRecorder/dist/ActivityRecorder.apk Dosyayı Görüntüle


+ 3
- 14
code/Common/Classifier.java Dosyayı Görüntüle

@@ -43,20 +43,9 @@ public class Classifier {
43 43
     }
44 44
 
45 45
     public String classify(final float[] data) {
46
-        float oddTotal = 0, evenTotal = 0;
47
-        float oddMin = Float.MAX_VALUE, oddMax = Float.MIN_VALUE;
48
-        float evenMin = Float.MAX_VALUE, evenMax = Float.MIN_VALUE;
49
-
50
-        for (int i = 0; i < 128; i++) {
51
-            evenTotal += data[i * 2];
52
-            oddTotal += data[i * 2 + 1];
53
-
54
-            evenMin = Math.min(evenMin, data[i * 2]);
55
-            oddMin = Math.min(oddMin, data[i * 2 + 1]);
56
-
57
-            evenMax = Math.max(evenMax, data[i * 2]);
58
-            oddMax = Math.max(oddMax, data[i * 2 + 1]);
59
-        }
46
+        final float oddTotal = data[5], evenTotal = data[2];
47
+        final float oddMin = data[3], oddMax = data[4];
48
+        final float evenMin = data[0], evenMax = data[1];
60 49
 
61 50
         final float[] points = {
62 51
             Math.abs(evenTotal / 128),

+ 14
- 4
code/Common/accel/Sampler.java Dosyayı Görüntüle

@@ -38,7 +38,7 @@ public class Sampler implements Runnable {
38 38
     private final AccelReader reader;
39 39
     private final Runnable finishedRunnable;
40 40
 
41
-    private float[] data;
41
+    private final float[] data = new float[6];
42 42
     private int nextSample;
43 43
 
44 44
     public Sampler(final Handler handler, final AccelReader reader,
@@ -49,7 +49,12 @@ public class Sampler implements Runnable {
49 49
     }
50 50
 
51 51
     public void start() {
52
-        data = new float[256];
52
+        data[0] = Float.MAX_VALUE;
53
+        data[1] = Float.MIN_VALUE;
54
+        data[2] = 0;
55
+        data[3] = Float.MAX_VALUE;
56
+        data[4] = Float.MIN_VALUE;
57
+        data[5] = 0;
53 58
         nextSample = 0;
54 59
 
55 60
         reader.startSampling();
@@ -66,8 +71,13 @@ public class Sampler implements Runnable {
66 71
     public void run() {
67 72
         final float[] values = reader.getSample();
68 73
 
69
-        data[nextSample * 2] = values[0];
70
-        data[nextSample * 2 + 1] = values[1];
74
+        data[0] = Math.min(data[0], values[0]);
75
+        data[1] = Math.max(data[1], values[0]);
76
+        data[2] += values[0];
77
+
78
+        data[3] = Math.min(data[3], values[1]);
79
+        data[4] = Math.max(data[4], values[1]);
80
+        data[5] += values[1];
71 81
 
72 82
         if (++nextSample == 128) {
73 83
             reader.stopSampling();

Loading…
İptal
Kaydet