summaryrefslogtreecommitdiff
path: root/resources/analytics/AnalyticsTrackers.java.ftl
blob: 0f6d2740d32cec783b605f194c8d6ee06a83477d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package ${packageName};

import android.content.Context;

import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;

import java.util.HashMap;
import java.util.Map;

/**
 * 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(Context context) {
    if (sInstance != null) {
      throw new IllegalStateException("Extra call to initialize analytics trackers");
    }

    sInstance = new AnalyticsTrackers(context);
  }

  public static synchronized AnalyticsTrackers getInstance() {
    if (sInstance == null) {
      throw new IllegalStateException("Call initialize() before getInstance()");
    }

    return sInstance;
  }

  private final Map<Target, Tracker> mTrackers = new HashMap<Target, Tracker>();
  private final Context mContext;

  /**
   * Use {@link #getInstance()} instead.
   */
  private AnalyticsTrackers(Context context) {
    mContext = context.getApplicationContext();
  }

  public synchronized Tracker get(Target target) {
    if (!mTrackers.containsKey(target)) {
      Tracker tracker;
      switch (target) {
        case APP:
          tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker);
<#if google.analytics.adsEnabled>
          tracker.enableAdvertisingIdCollection(true);
</#if>
          break;
        default:
          throw new IllegalArgumentException("Unhandled analytics target " + target);
      }
      mTrackers.put(target, tracker);
    }

    return mTrackers.get(target);
  }
}