GoogleAnalyticsIntegration(
      Context context, GoogleAnalytics googleAnalytics, ValueMap settings, Logger logger) {
    this.googleAnalytics = googleAnalytics;
    this.logger = logger;

    String mobileTrackingId = settings.getString("mobileTrackingId");
    tracker = googleAnalytics.newTracker(mobileTrackingId);
    logger.verbose("GoogleAnalytics.getInstance(context).newTracker(%s);", mobileTrackingId);

    boolean anonymizeIp = settings.getBoolean("anonymizeIp", false);
    tracker.setAnonymizeIp(anonymizeIp);
    logger.verbose("tracker.setAnonymizeIp(%s);", anonymizeIp);

    boolean reportUncaughtExceptions = settings.getBoolean("reportUncaughtExceptions", false);
    if (reportUncaughtExceptions) {
      tracker.setUncaughtExceptionReporter(context);
      logger.verbose("Thread.setDefaultUncaughtExceptionHandler(new ExceptionReporter(...));");
    }

    sendUserId = settings.getBoolean("sendUserId", false);
    customDimensions = settings.getValueMap("dimensions");
    if (isNullOrEmpty(customDimensions)) customDimensions = EMPTY;
    customMetrics = settings.getValueMap("metrics");
    if (isNullOrEmpty(customMetrics)) customMetrics = EMPTY;
  }
 public void uncaughtException(Thread thread, Throwable throwable) {
   String s = "UncaughtException";
   if (xZ != null) {
     if (thread != null) {
       s = thread.getName();
     } else {
       s = null;
     }
     s = xZ.getDescription(s, throwable);
   }
   z.V((new StringBuilder()).append("Tracking Exception: ").append(s).toString());
   xY.send((new HitBuilders.ExceptionBuilder()).setDescription(s).setFatal(true).build());
   GoogleAnalytics.getInstance(mContext).dispatchLocalHits();
   if (xX != null) {
     z.V("Passing exception to original handler.");
     xX.uncaughtException(thread, throwable);
   }
 }
 @Override
 public void flush() {
   googleAnalytics.dispatchLocalHits();
   logger.verbose("GoogleAnalytics.getInstance(context).dispatchLocalHits();");
 }
 @Override
 public void onActivityStopped(Activity activity) {
   super.onActivityStopped(activity);
   googleAnalytics.reportActivityStop(activity);
   logger.verbose("GoogleAnalytics.getInstance(context).reportActivityStop(activity);");
 }
 @Override
 public void onNavigation(NavigationEvent navigationEvent) {
   analytics.trackPageview(navigationEvent.getRequest().getNameToken());
 }