package com.code44.finance.modules.providers; import android.content.Context; import com.code44.finance.BuildConfig; import com.code44.finance.qualifiers.AppTracker; import com.code44.finance.qualifiers.ApplicationContext; import com.code44.finance.utils.GeneralPrefs; import com.code44.finance.utils.analytics.Analytics; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; @Module( library = true, complete = false ) public class AnalyticsProviderModule { private static final String APP_TRACKER_ID = "UA-38249360-1"; private static final long SESSION_TIMEOUT = 3 * 60; // 3 minutes @Provides @Singleton public Analytics provideAnalytics(@AppTracker Tracker tracker) { return new Analytics(tracker); } @Provides public GoogleAnalytics provideGoogleAnalytics(@ApplicationContext Context context, GeneralPrefs generalPrefs) { final GoogleAnalytics googleAnalytics = GoogleAnalytics.getInstance(context); googleAnalytics.setDryRun(BuildConfig.DEBUG); googleAnalytics.setAppOptOut(generalPrefs.isAnalyticsOptOut()); return googleAnalytics; } @Provides @Singleton @AppTracker public Tracker provideAppTracker(GoogleAnalytics googleAnalytics) { final Tracker tracker = googleAnalytics.newTracker(APP_TRACKER_ID); tracker.enableAdvertisingIdCollection(true); tracker.enableExceptionReporting(true); tracker.enableAutoActivityTracking(false); tracker.setSessionTimeout(SESSION_TIMEOUT); return tracker; } }