package com.mercandalli.android.apps.files.analytics; import android.content.Context; import android.support.annotation.NonNull; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; import com.mercandalli.android.apps.files.R; import java.util.HashMap; import java.util.Map; /** * Google Analytics * A collection of Google Analytics trackers. Fetch the tracker you need using * {@code AnalyticsTrackers.getInstance().get(...)} * <p> * This code was generated by Android Studio but can be safely modified by * hand at this point. * <p> * TODO: Call {@link #initialize(Context)} from an entry point in your app * before using this! */ public final class AnalyticsTrackers { public enum Target { APP, // Add more trackers here if you need, and update the code in #get(Target) below } private static AnalyticsTrackers sInstance; public static synchronized void initialize(final Context context) { if (sInstance != null) { throw new IllegalStateException("Extra call to initialize analytics trackers"); } sInstance = new AnalyticsTrackers(context); } /** * Instantiate the trackers. * * @return The instance. */ public static synchronized AnalyticsTrackers getInstance() { if (sInstance == null) { throw new IllegalStateException("Call initialize() before getInstance()"); } return sInstance; } @NonNull private final Context mContext; @NonNull private final Map<Target, Tracker> mTrackers = new HashMap<>(); /** * Don't instantiate directly - use {@link #getInstance()} instead. */ private AnalyticsTrackers(@NonNull final Context context) { mContext = context.getApplicationContext(); } /** * Get the Google analytics {@link Tracker}. * * @param target The AnalyticsTrackers.Target.APP. * @return The {@link GoogleAnalytics} {@link Tracker}. */ public synchronized Tracker get(final Target target) { if (!mTrackers.containsKey(target)) { Tracker tracker; switch (target) { case APP: tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker); break; default: throw new IllegalArgumentException("Unhandled analytics target " + target); } mTrackers.put(target, tracker); } return mTrackers.get(target); } }