reader/android: adds local CSV logging of gestures
* Logs gesture events to a local CSV file
* Removes GA tracking for now
* Adds a root .editorconfig
Change-Id: If8f683f8935666494344f64014d7b9403bcd5ea9
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..9f04b04
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,17 @@
+# EditorConfig is awesome: http://EditorConfig.org
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = true
+
+[Makefile]
+indent_style = tab
+
+[*.java]
+indent_style = space
+indent_size = 4
+
+[*.{js,json,css,html}]
+indent_style = space
+indent_size = 2
\ No newline at end of file
diff --git a/android/app/src/main/java/io/v/android/apps/reader/BaseReaderActivity.java b/android/app/src/main/java/io/v/android/apps/reader/BaseReaderActivity.java
index 688cef9..d2d74e2 100644
--- a/android/app/src/main/java/io/v/android/apps/reader/BaseReaderActivity.java
+++ b/android/app/src/main/java/io/v/android/apps/reader/BaseReaderActivity.java
@@ -71,15 +71,9 @@
}
private void initTracker() {
- // Obtain the shared Tracker instance.
- ReaderApplication application = (ReaderApplication) getApplication();
- mTracker = application.getDefaultTracker();
-
- if (mTracker != null) {
- mGestureListener = new GestureListener(mTracker, DeviceInfoFactory.getDeviceId(this));
- mGestureDetector = new GestureDetectorCompat(this, mGestureListener);
- mGestureDetector.setOnDoubleTapListener(mGestureListener);
- }
+ mGestureListener = new GestureListener(this, DeviceInfoFactory.getDeviceId(this));
+ mGestureDetector = new GestureDetectorCompat(this, mGestureListener);
+ mGestureDetector.setOnDoubleTapListener(mGestureListener);
}
@Override
@@ -93,4 +87,5 @@
return super.dispatchTouchEvent(ev);
}
+
}
diff --git a/android/app/src/main/java/io/v/android/apps/reader/GestureListener.java b/android/app/src/main/java/io/v/android/apps/reader/GestureListener.java
index a7bc6e1..5aba732 100644
--- a/android/app/src/main/java/io/v/android/apps/reader/GestureListener.java
+++ b/android/app/src/main/java/io/v/android/apps/reader/GestureListener.java
@@ -4,12 +4,17 @@
package io.v.android.apps.reader;
+import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
+import android.content.Context;
-import com.google.android.gms.analytics.HitBuilders;
-import com.google.android.gms.analytics.Tracker;
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.File;
+import java.io.IOException;
+import java.sql.Timestamp;
/**
* Gesture listener implementation for sending gesture events to the Google Analytics tracker.
@@ -18,23 +23,50 @@
public class GestureListener implements GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener, ScaleGestureDetector.OnScaleGestureListener {
+ private static final String TAG = GestureListener.class.getSimpleName();
private static final String CATEGORY = "Touch Gesture";
+ private static BufferedWriter buffer;
- private final Tracker mTracker;
- private final String mLabel;
+ private final String mDeviceId;
- public GestureListener(Tracker tracker, String label) {
- mTracker = tracker;
- mLabel = label;
+ public GestureListener(Context context, String deviceId) {
+ mDeviceId = deviceId;
+
+ if (buffer == null) {
+ File directory = context.getFilesDir();
+ String basename = String.format("reader-%s.log", now());
+ File file = new File(directory, basename);
+
+ try {
+ buffer = new BufferedWriter(new FileWriter(file));
+ buffer.write("DEVICE ID");
+ buffer.write(",");
+ buffer.write("ACTION");
+ buffer.write(",");
+ buffer.write("TIMESTAMP");
+ buffer.newLine();
+ buffer.flush();
+ } catch (IOException e) {
+ handleException(e);
+ }
+ }
}
private void send(String action) {
- mTracker.send(new HitBuilders.EventBuilder()
- .setCustomDimension(1, Long.toString(System.currentTimeMillis()))
- .setCategory(CATEGORY)
- .setAction(action)
- .setLabel(mLabel)
- .build());
+ try {
+ buffer.write(mDeviceId);
+ buffer.write(",");
+ buffer.write(action);
+ buffer.write(",");
+ buffer.write(now().toString());
+ buffer.newLine();
+ } catch (IOException e) {
+ handleException(e);
+ }
+ }
+
+ private Timestamp now() {
+ return new Timestamp(System.currentTimeMillis());
}
@Override
@@ -105,4 +137,8 @@
public void onScaleEnd(ScaleGestureDetector detector) {
send("ScaleEnd");
}
+
+ private static void handleException(Exception e) {
+ Log.e(TAG, e.getMessage(), e);
+ }
}