package com.androsz.electricsleepbeta.app; import java.lang.reflect.Field; import android.content.res.Configuration; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.Toast; public class DimSleepActivity extends AnalyticActivity { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Window win = getWindow(); final WindowManager.LayoutParams winParams = win.getAttributes(); winParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_FULLSCREEN; // set screen brightness to the lowest possible without turning screen // off winParams.screenBrightness = 0.01f; // NOTE: this doesn't work on some devices (Motorola Droid, X, 2.. etc) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { // hack for pre-froyo to set buttonBrightness off try { final Field buttonBrightness = winParams.getClass().getField("buttonBrightness"); buttonBrightness.set(winParams, WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF); } catch (final Exception e) { this.trackEvent("buttonBrightnessFail", 1); } } else { winParams.buttonBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_OFF; } win.setAttributes(winParams); getSupportActionBar().hide(); final LinearLayout blackness = new LinearLayout(this); blackness.setLayoutParams(new LayoutParams( android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT)); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) { blackness.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) { blackness.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); } blackness.setBackgroundColor(Color.BLACK); Toast.makeText(this, "Your screen is in dim mode. To exit dim mode, touch or press any key.", Toast.LENGTH_LONG).show(); setContentView(blackness); try { getSupportActionBar().setDisplayShowHomeEnabled(false); } catch (NullPointerException npe) { getActionBar().setDisplayShowHomeEnabled(false); } } @Override protected void onPause() { super.onPause(); finish(); // if we're going away, really go away. } @Override public void onUserInteraction() { // any user interaction ends the activity. finish(); } }