// If you use API20 or more: DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); for (Display display : dm.getDisplays()) { if (display.getState() != Display.STATE_OFF) { return true; } } return false; // If you use less than API20: PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); if (powerManager.isScreenOn()){ return true; }
/** * Is the screen of the device on. * @param context the context * @return true when (at least one) screen is on */ public boolean isScreenOn(Context context) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); boolean screenOn = false; for (Display display : dm.getDisplays()) { if (display.getState() != Display.STATE_OFF) { screenOn = true; } } return screenOn; } else { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //noinspection deprecation return pm.isScreenOn(); } }
@TargetApi(KITKAT_WATCH) public DisplayAssert hasState(@DisplayState int state) { isNotNull(); //noinspection ResourceType assertThat(actual.getState()) // .overridingErrorMessage("Expected state <%s> but was <%s>", stateToString(state), stateToString(actual.getState())) // .isEqualTo(state); return this; }
@Test @Config(minSdk = LOLLIPOP) public void stateChangeShouldApplyToOtherInstancesOfSameDisplay_postKitKatFields() throws Exception { shadow.setState(Display.STATE_DOZE_SUSPEND); display = DisplayManagerGlobal.getInstance().getRealDisplay(Display.DEFAULT_DISPLAY); assertEquals(Display.STATE_DOZE_SUSPEND, display.getState()); }
// If you use API20 or more: DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); for (Display display : dm.getDisplays()) { if (display.getState() != Display.STATE_OFF) { return true; } } return false; // If you use less than API20: PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); if (powerManager.isScreenOn()){ return true; }
private boolean isScreenOn () { if (android.os.Build.VERSION.SDK_INT >= 20) { // I'm counting // STATE_DOZE, STATE_OFF, STATE_DOZE_SUSPENDED // all as "OFF" DisplayManager dm = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); for (Display display : dm.getDisplays ()) { if (display.getState () == Display.STATE_ON || display.getState () == Display.STATE_UNKNOWN) { return true; } } return false; } PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); if (powerManager.isScreenOn ()) { return true; } return false; }
DisplayManager dm = (DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE); for (Display display : dm.getDisplays()) { if (display.getState() != Display.STATE_OFF) { return true; } } return false;
/** * Is the screen of the device on. * @param context the context * @return true when (at least one) screen is on */ public boolean isScreenOn(Context context) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); boolean screenOn = false; for (Display display : dm.getDisplays()) { if (display.getState() != Display.STATE_OFF) { screenOn = true; } } return screenOn; } else { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //noinspection deprecation return pm.isScreenOn(); } }
@TargetApi(KITKAT_WATCH) public DisplayAssert hasState(@DisplayState int state) { isNotNull(); //noinspection ResourceType assertThat(actual.getState()) // .overridingErrorMessage("Expected state <%s> but was <%s>", stateToString(state), stateToString(actual.getState())) // .isEqualTo(state); return this; }
public static boolean isScreenOn(Context context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE); for (Display display : dm.getDisplays()) { if (display.getState() != Display.STATE_OFF) { return true; } } return false; } else { PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); return powerManager.isScreenOn(); } }
@Override protected void onStop(){ super.onStop(); //implement your code only if !STATE_OFF - to prevent infinite loop onResume <-> onStop while screen is off DisplayManager dm = (DisplayManager) this.getSystemService(Context.DISPLAY_SERVICE); for (Display display : dm.getDisplays()){ if(display.getState() != Display.STATE_OFF){ //implement your code only if device is not in "locked" state KeyguardManager myKM = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE); if( !myKM.inKeyguardRestrictedInputMode()) //If needed you can call finish() (call onDestroy()) and your logic will restart your activity only once. finish(); // implement your logic here (your logic probably restarts the activity) } } } }