package com.rubenvandeven.emotionhero; import android.app.Application; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager; /** * For kioskmode only! * See http://www.andreas-schrade.de/2015/02/16/android-tutorial-how-to-create-a-kiosk-mode-in-android/ */ @ReportsCrashes( buildConfigClass=BuildConfig.class, formUri="http://crashes.rubenvandeven.com/api", formUriBasicAuthLogin="com.rubenvandeven.emotion_hero.kiosk", formUriBasicAuthPassword="4fkpp89Q+VKdbVj3VIbBFKTT", mode=ReportingInteractionMode.TOAST, resToastText=R.string.crash_toast_text) public class AppContext extends Application { private AppContext instance; private PowerManager.WakeLock wakeLock; private OnScreenOffReceiver onScreenOffReceiver; @Override public void onCreate() { super.onCreate(); instance = this; if (!ACRA.isACRASenderServiceProcess()) { registerKioskModeScreenOffReceiver(); startKioskService(); } } private void registerKioskModeScreenOffReceiver() { // register screen off receiver final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); onScreenOffReceiver = new OnScreenOffReceiver(); registerReceiver(onScreenOffReceiver, filter); } protected void attachBaseContext(Context paramContext) { super.attachBaseContext(paramContext); ACRA.init(this, new ConfigurationBuilder(this).setReportField(ReportField.USER_COMMENT, false), true); } public PowerManager.WakeLock getWakeLock() { if(wakeLock == null) { // lazy loading: first call, create wakeLock via PowerManager. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "wakeup"); } return wakeLock; } private void startKioskService() { startService(new Intent(this, KioskService.class)); } }