package io.evercam.androidapp;
import android.app.Activity;
import android.app.Application;
import android.util.Log;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import java.util.HashMap;
public class EvercamPlayApplication extends Application
{
private static final String PROPERTY_ID = "UA-52483995-1";
private static final String TAG = "EvercamPlayApplication";
public enum TrackerName
{
APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER, // Tracker used by all the apps from a company.
}
HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
public EvercamPlayApplication()
{
super();
Log.d(TAG, "E-Play launched");
}
// @Override
// public void onCreate()
// {
// super.onCreate();
// // Redirect URL, just for temporary testing
// API.URL = "http://proxy.evr.cm:9292/v1/";
// }
synchronized Tracker getTracker(TrackerName trackerId)
{
if(!mTrackers.containsKey(trackerId))
{
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(R.xml
.app_tracker) : analytics.newTracker(PROPERTY_ID);
mTrackers.put(trackerId, t);
}
return mTrackers.get(trackerId);
}
private static Tracker getAppTracker(Activity activity)
{
Tracker tracker = ((EvercamPlayApplication) activity.getApplication()).getTracker(TrackerName
.APP_TRACKER);
tracker.enableAdvertisingIdCollection(true);
return tracker;
}
/**
* Send screen view to Google Analytics from activity with screen name.
*
* @param activity
* @param screenName The screen name that shows in Google dashboard.
*/
public static void sendScreenAnalytics(Activity activity, String screenName)
{
Tracker tracker = getAppTracker(activity);
tracker.setScreenName(screenName);
tracker.send(new HitBuilders.AppViewBuilder().build());
}
public static void sendEventAnalytics(Activity activity, int cateory, int action, int label)
{
Tracker tracker = getAppTracker(activity);
tracker.send(new HitBuilders.EventBuilder().setCategory(activity.getString(cateory))
.setAction(activity.getString(action)).setLabel(activity.getString(label)).build());
}
public static void sendCaughtException(Activity activity, Exception e)
{
Tracker tracker = getAppTracker(activity);
tracker.send(new HitBuilders.ExceptionBuilder().setDescription(e.getStackTrace()[0]
.toString().replace("io.evercam.androidapp", e.toString())).setFatal(true).build());
}
public static void sendCaughtException(Activity activity, String message)
{
Tracker tracker = getAppTracker(activity);
tracker.send(new HitBuilders.ExceptionBuilder().setDescription(message).setFatal(true)
.build());
}
public static void sendCaughtExceptionNotImportant(Activity activity, Exception e)
{
Tracker tracker = getAppTracker(activity);
tracker.send(new HitBuilders.ExceptionBuilder().setDescription(e.getStackTrace()[0]
.toString().replace("io.evercam.androidapp", e.toString())).setFatal(false).build
());
}
}