/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.service;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import com.localytics.android.LocalyticsSession;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.utility.Constants;
public class StatisticsService {
private static LocalyticsSession localyticsSession;
/**
* Indicate session started
*
* @param context
*/
public static void sessionStart(Context context) {
if(dontCollectStatistics())
return;
if(localyticsSession != null) {
localyticsSession.open(); // Multiple calls to open are ok, we just need to make sure it gets reopened after pause
} else {
localyticsSession = new LocalyticsSession(context.getApplicationContext(),
Constants.LOCALYTICS_KEY);
localyticsSession.open();
localyticsSession.upload();
}
if (context instanceof Activity)
localyticsSession.tagScreen(context.getClass().getSimpleName());
}
/**
* Indicate session ended
*
* @param context
*/
public static void sessionStop(Context context) {
if(dontCollectStatistics())
return;
if(localyticsSession != null)
localyticsSession.upload();
}
/**
* Indicate session was paused
*/
public static void sessionPause() {
if(dontCollectStatistics())
return;
if(localyticsSession != null) {
localyticsSession.close();
}
}
/**
* Indicates an error occurred
* @param name
* @param message
* @param trace
*/
public static void reportError(String name, String message, String trace) {
// no reports yet
}
/**
* Indicates an event should be reported
* @param event
*/
public static void reportEvent(String event, String... attributes) {
if(dontCollectStatistics())
return;
if(localyticsSession != null) {
if(attributes.length > 0) {
HashMap<String, String> attrMap = new HashMap<String, String>();
for(int i = 1; i < attributes.length; i += 2) {
if(attributes[i] != null)
attrMap.put(attributes[i-1], attributes[i]);
}
localyticsSession.tagEvent(event, attrMap);
} else
localyticsSession.tagEvent(event);
}
}
public static boolean dontCollectStatistics() {
return !Preferences.getBoolean(R.string.p_statistics, true);
}
}