package com.domain.zlink.myhrtemplate.view; import android.content.Context; import android.support.multidex.MultiDex; import android.support.multidex.MultiDexApplication; import com.crashlytics.android.Crashlytics; import com.crashlytics.android.answers.Answers; import com.domain.data.db.until.MyAppDataManager; import com.domain.data.utils.Contextor; import com.domain.zlink.myhrtemplate.di.components.ApplicationComponent; import com.domain.zlink.myhrtemplate.di.components.DaggerApplicationComponent; import com.domain.zlink.myhrtemplate.di.modules.ApplicationModule; import com.facebook.stetho.Stetho; import com.google.firebase.iid.FirebaseInstanceId; import com.uphyca.stetho_realm.RealmInspectorModulesProvider; import org.greenrobot.eventbus.EventBus; import io.fabric.sdk.android.Fabric; import io.reactivex.schedulers.Schedulers; import io.realm.Realm; import io.realm.RealmConfiguration; import th.co.csc.android.cscapi.BuildConfig; import th.co.csc.android.cscapi.CscApi; import timber.log.Timber; /** * Created by niceinkeaw on 21/2/2559. */ public class AndroidApplication extends MultiDexApplication { private ApplicationComponent applicationComponent; private MyAppDataManager myAppDataManager; private static AndroidApplication INSTANCE; public AndroidApplication() { INSTANCE = this; } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } @Override public void onCreate() { super.onCreate(); initializeInjector(); Contextor.getInstance().init(getApplicationContext()); CscApi.getInstance().init(getApplicationContext()); CscApi.getInstance().setServerCommandSubscribeOn(Schedulers.from(applicationComponent.threadExecutor())); //EventBus.getDefault().register(this); //scheduleUploadTimeStampAlarm(); if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); } Fabric.with(this, new Answers(),new Crashlytics()); Realm.init(this); RealmConfiguration realmConfiguration = new RealmConfiguration.Builder().build(); Realm.setDefaultConfiguration(realmConfiguration); Stetho.initialize( Stetho.newInitializerBuilder(this) .enableDumpapp(Stetho.defaultDumperPluginsProvider(this)) .enableWebKitInspector(RealmInspectorModulesProvider.builder(this).build()) .build()); } public static AndroidApplication getInstance() { return INSTANCE; } public MyAppDataManager getMyAppDataManager() { return myAppDataManager; } // Setup a recurring alarm every half hour /*public void scheduleUploadTimeStampAlarm() { // Construct an intent that will execute the AlarmReceiver Intent intent = new Intent(getApplicationContext(), UploadTimeStampAlarmReceiver.class); // Create a PendingIntent to be triggered when the alarm goes off final PendingIntent pIntent = PendingIntent.getBroadcast(this, UploadTimeStampAlarmReceiver.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); // Setup periodic alarm every 5 seconds long firstMillis = System.currentTimeMillis(); // alarm is set right away AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); //alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,firstMillis,30*1000,pIntent); alarm.setRepeating(AlarmManager.RTC_WAKEUP, firstMillis, 60 * 1000, pIntent); }*/ private void initializeInjector() { this.applicationComponent = DaggerApplicationComponent.builder() .applicationModule(new ApplicationModule(this)) .build(); } public ApplicationComponent getApplicationComponent() { return this.applicationComponent; } @Override public void onTerminate() { EventBus.getDefault().unregister(this); super.onTerminate(); } /*@Subscribe(threadMode = ThreadMode.MAIN) public void onReloadFaceTemplate(ReloadFaceTemplateEvent event){ if(myAppDataManager!=null){ myAppDataManager.reloadTemplate(); Timber.d("Reload All Template"); EventBus.getDefault().post(new FetchTimeStampEvent()); } }*/ public void clearAppData(){ Realm realm = Realm.getDefaultInstance(); try{ realm.beginTransaction(); realm.deleteAll(); myAppDataManager.clear(); realm.commitTransaction(); }catch (Exception e){ e.printStackTrace(); }finally { realm.close(); } } public void initialize() { myAppDataManager = new MyAppDataManager(this); //CSCFaceRecognition.getInstance().init(getApplicationContext()); } public String getFirebaseInstanceToken(){ String refreshedToken = FirebaseInstanceId.getInstance().getToken(); return refreshedToken; } }