package zenproject.meditation.android.analytics;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import zenproject.meditation.android.activities.ZenActivity;
import zenproject.meditation.android.sketch.painting.flowers.Flower;
import zenproject.meditation.android.sketch.painting.ink.BrushColor;
/**
* TODO having AnalyticsTracker implementing ZenAnalytics interface then it is mockable so we should pass this as collaborator and test interactions.
*/
public enum AnalyticsTracker implements ZenAnalytics {
INSTANCE;
private Tracker tracker;
public void inject(Tracker tracker) {
this.tracker = tracker;
}
@Override
public void trackDialogOpened(String dialogTag) {
tracker.setScreenName(dialogTag);
tracker.send(new HitBuilders.ScreenViewBuilder().build());
}
@Override
public void trackBrush(BrushColor color, int size) {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(BrushTracking.BRUSH)
.setAction(BrushTracking.COLOR_SELECTED)
.setLabel(color.name())
.setValue(1)
.build());
tracker.send(new HitBuilders.EventBuilder()
.setCategory(BrushTracking.BRUSH)
.setAction(BrushTracking.SIZE_SELECTED)
.setLabel("Brush size " + size + "%")
.set(BrushTracking.SIZE_VAR, String.valueOf(size))
.build());
}
@Override
public void trackFlower(Flower flower) {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(FlowerTracking.FLOWER)
.setAction(FlowerTracking.FLOWER_SELECTED)
.setLabel(flower.name())
.setValue(1)
.build());
}
@Override
public void trackScreenshot() {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(SketchTracking.SKETCH)
.setAction(SketchTracking.SCREENSHOT)
.setValue(1)
.build());
}
@Override
public void trackShare() {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(SketchTracking.SKETCH)
.setAction(SketchTracking.SHARED)
.setValue(1)
.build());
}
@Override
public void trackClearSketch() {
tracker.send(new HitBuilders.EventBuilder()
.setCategory(SketchTracking.SKETCH)
.setAction(SketchTracking.CLEARED)
.setValue(1)
.build());
}
@Override
public void trackActivityStart(ZenActivity zenActivity) {
GoogleAnalytics.getInstance(zenActivity).reportActivityStart(zenActivity);
}
@Override
public void trackActivityStop(ZenActivity zenActivity) {
GoogleAnalytics.getInstance(zenActivity).reportActivityStop(zenActivity);
}
@SuppressWarnings("PMD.UnusedModifier")
protected static final class SketchTracking {
private static final String SCREENSHOT = "Screenshot";
private static final String SKETCH = "Sketch";
private static final String CLEARED = "Cleared";
private static final String SHARED = "Shared";
private SketchTracking() {
//no-op
}
}
@SuppressWarnings("PMD.UnusedModifier")
protected static final class BrushTracking {
private static final String BRUSH = "Brush";
private static final String COLOR_SELECTED = "Color selected";
private static final String SIZE_SELECTED = "Size selected";
private static final String SIZE_VAR = "size_value";
private BrushTracking() {
//no-op
}
}
@SuppressWarnings("PMD.UnusedModifier")
protected static final class FlowerTracking {
private static final String FLOWER = "Flower";
private static final String FLOWER_SELECTED = "Flower selected";
private FlowerTracking() {
//no-op
}
}
}