package org.onebrick.android.core; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; import com.activeandroid.app.Application; import com.crashlytics.android.Crashlytics; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.path.android.jobqueue.JobManager; import com.path.android.jobqueue.config.Configuration; import com.path.android.jobqueue.log.CustomLogger; import com.squareup.otto.Bus; import org.onebrick.android.helpers.Utils; import io.fabric.sdk.android.Fabric; //import com.newrelic.agent.android.NewRelic; public class OneBrickApplication extends Application { private static final String PREF_CHAPTER_NAME = "CHAPTER_NAME"; private static final String PREF_CHAPTER_ID = "CHAPTER_ID"; private static OneBrickApplication sInstance; public static OneBrickApplication getInstance() { return sInstance; } private JobManager mJobManager; private Bus mBus; @Override public void onCreate() { super.onCreate(); Fabric.with(this, new Crashlytics()); sInstance = this; OneBrickRESTClient.init(this); OneBrickMapRESTClient.init(); // NewRelic.withApplicationToken( // "AAd5aec03c54ce6bd6d21ae5b4168b5342bf276e97" // ).start(this); // Create global configuration and initialize ImageLoader with this configuration DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder(). cacheInMemory(true).cacheOnDisk(true).build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .defaultDisplayImageOptions(defaultOptions) .build(); ImageLoader.getInstance().init(config); mBus = new Bus(); initJobManager(); } private void initJobManager() { final Configuration config = new Configuration.Builder(this) .minConsumerCount(1) .consumerKeepAlive(120) // 2 minutes .customLogger(new CustomLogger() { private static final String TAG = "JOBS"; @Override public boolean isDebugEnabled() { return Utils.isDebug(); } @Override public void d(String text, Object... args) { Log.d(TAG, String.format(text, args)); } @Override public void e(Throwable t, String text, Object... args) { Log.e(TAG, String.format(text, args), t); } @Override public void e(String text, Object... args) { Log.e(TAG, String.format(text, args)); } }) .build(); mJobManager = new JobManager(this, config); } public void setChapterName(@NonNull String chapterName) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.edit().putString(PREF_CHAPTER_NAME, chapterName).apply(); } @Nullable public String getChapterName() { return PreferenceManager.getDefaultSharedPreferences(this).getString(PREF_CHAPTER_NAME, null); } public void setChapterId(int chapterId) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs.edit().putInt(PREF_CHAPTER_ID, chapterId).apply(); } public int getChapterId() { return PreferenceManager.getDefaultSharedPreferences(this).getInt(PREF_CHAPTER_ID, -1); } public JobManager getJobManager() { return mJobManager; } public Bus getBus() { return mBus; } }