package org.indywidualni.fblite;
import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.provider.Settings;
import android.util.Log;
import org.acra.ACRA;
import org.acra.ReportingInteractionMode;
import org.acra.annotation.ReportsCrashes;
import org.indywidualni.fblite.util.Connectivity;
import org.piwik.sdk.Piwik;
import org.piwik.sdk.Tracker;
import java.net.MalformedURLException;
@ReportsCrashes(formUri = "", // will not be used
mailTo = "koras@indywidualni.org",
mode = ReportingInteractionMode.DIALOG,
resToastText = R.string.crash_toast_text,
resDialogText = R.string.crash_dialog_text,
resDialogIcon = R.mipmap.ic_launcher,
resDialogTitle = R.string.crash_dialog_title,
resDialogCommentPrompt = R.string.crash_dialog_comment_prompt,
resDialogTheme = R.style.CrashDialog
)
public class MyApplication extends Application {
@SuppressLint("StaticFieldLeak")
private static Context mContext;
private Tracker mPiwikTracker;
@Override
public void onCreate() {
mContext = getApplicationContext();
super.onCreate();
/**
* The following line triggers the initialization of ACRA.
*/
ACRA.init(this);
/**
* Piwik dry run. Uncomment these lines during app development.
*/
Piwik.getInstance(this).setDryRun(BuildConfig.DEBUG);
Piwik.getInstance(this).setDebug(BuildConfig.DEBUG);
/**
* Count app downloads. Fired only after new installation or upgrade.
* It's never fired again. In fact the app is not tracking anything but installations.
*/
if (Connectivity.isConnected(this)) {
getTracker().trackAppDownload();
getTracker().dispatch();
}
}
/**
* Get context of application for non-context classes
* @return context of application
*/
public static Context getContextOfApplication() {
return mContext;
}
/**
* Get Piwik tracker. No sensitive data is collected. Just app version, predicted location,
* resolution, device model and system version. Location is based on anonymized IP address.
* @return tracker instance
*/
public synchronized Tracker getTracker() {
if (mPiwikTracker != null)
return mPiwikTracker;
try {
mPiwikTracker = Piwik.getInstance(this).newTracker("http://indywidualni.org/analytics/piwik.php", 1);
mPiwikTracker.setUserId(Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID));
mPiwikTracker.setDispatchTimeout(30000);
mPiwikTracker.setDispatchInterval(-1);
} catch (MalformedURLException e) {
Log.w("Piwik", "url is malformed", e);
return null;
}
return mPiwikTracker;
}
}