package org.wheelmap.android.analytics; import android.content.Context; import android.text.TextUtils; 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 org.wheelmap.android.online.BuildConfig; import org.wheelmap.android.utils.Constants; public class AnalyticsTrackingManager { public enum TrackableScreensName { SPLASHSCREEN(Constants.Tracking.Screens.SPLASHSCREEN), HOMESCREEN(Constants.Tracking.Screens.HOMESCREEN), NEARBYSCREEN(Constants.Tracking.Screens.NEARBYSCREEN), MAPSCREEN(Constants.Tracking.Screens.MAPSCREEN), CATEGORYSCREEN(Constants.Tracking.Screens.CATEGORYSCREEN), CONTRIBUTESCREEN(Constants.Tracking.Screens.CONTRIBUTESCREEN), OSMONBORDINGSCREEN(Constants.Tracking.Screens.OSMONBORDINGSCREEN), OSMLOGOUTSCREEN(Constants.Tracking.Screens.OSMLOGOUTSCREEN), INFOSCREEN(Constants.Tracking.Screens.INFOSCREEN); private final String screenName; TrackableScreensName(String screenName) { this.screenName = screenName; } public String getScreenName() { return screenName; } } private static String TAG = AnalyticsTrackingManager.class.getName(); private static Tracker googleAnalyticsTracker; public static void init(Context context) { if (googleAnalyticsTracker == null) { googleAnalyticsTracker = initGoogleAnalyticsTracker(context); } } private static Tracker initGoogleAnalyticsTracker(Context context) { String trackingId = BuildConfig.ANALYTICS_TRACKING_ID; if(!TextUtils.isEmpty(trackingId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(context); return analytics.newTracker(trackingId); } return null; } public static synchronized void trackScreen(final TrackableScreensName screenName) { if(googleAnalyticsTracker == null) { return; } new Thread(new Runnable() { @Override public void run() { Log.i(TAG, "tracking screen name: " + screenName.getScreenName()); googleAnalyticsTracker.setScreenName(screenName.getScreenName()); googleAnalyticsTracker.send(new HitBuilders.ScreenViewBuilder().build()); } }).start(); } }