package com.android.nfc; import android.app.KeyguardManager; import android.content.Context; import android.os.PowerManager; /** * Helper class for determining the current screen state for NFC activities. */ class ScreenStateHelper { static final int SCREEN_STATE_UNKNOWN = 0x00; static final int SCREEN_STATE_OFF_UNLOCKED = 0x01; static final int SCREEN_STATE_OFF_LOCKED = 0x02; static final int SCREEN_STATE_ON_LOCKED = 0x04; static final int SCREEN_STATE_ON_UNLOCKED = 0x08; //Polling mask static final int SCREEN_POLLING_TAG_MASK = 0x10; static final int SCREEN_POLLING_P2P_MASK = 0x20; static final int SCREEN_POLLING_READER_MASK = 0x40; private final PowerManager mPowerManager; private final KeyguardManager mKeyguardManager; ScreenStateHelper(Context context) { mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); } int checkScreenState() { //TODO: fix deprecated api if (!mPowerManager.isScreenOn()) { if(mKeyguardManager.isKeyguardLocked()) { return SCREEN_STATE_OFF_LOCKED; } else { return SCREEN_STATE_OFF_UNLOCKED; } } else if (mKeyguardManager.isKeyguardLocked()) { return SCREEN_STATE_ON_LOCKED; } else { return SCREEN_STATE_ON_UNLOCKED; } } /** * For debugging only - no i18n */ static String screenStateToString(int screenState) { switch (screenState) { case SCREEN_STATE_OFF_LOCKED: return "OFF_LOCKED"; case SCREEN_STATE_ON_LOCKED: return "ON_LOCKED"; case SCREEN_STATE_ON_UNLOCKED: return "ON_UNLOCKED"; case SCREEN_STATE_OFF_UNLOCKED: return "OFF_UNLOCKED"; default: return "UNKNOWN"; } } }