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_READER_MASK = 0x40; private final PowerManager mPowerManager; private final KeyguardManager mKeyguardManager; ScreenStateHelper(Context context) { mKeyguardManager = context.getSystemService(KeyguardManager.class); mPowerManager = context.getSystemService(PowerManager.class); } int checkScreenState() { if (!mPowerManager.isInteractive()) { 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; } } int checkScreenStateProvisionMode() { if (!mPowerManager.isInteractive()) { if (mKeyguardManager.isDeviceLocked()) { return SCREEN_STATE_OFF_LOCKED; } else { return SCREEN_STATE_OFF_UNLOCKED; } } else if (mKeyguardManager.isDeviceLocked()) { 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"; } } static int screenStateToProtoEnum(int screenState) { switch (screenState) { case SCREEN_STATE_OFF_LOCKED: return NfcServiceDumpProto.SCREEN_STATE_OFF_LOCKED; case SCREEN_STATE_ON_LOCKED: return NfcServiceDumpProto.SCREEN_STATE_ON_LOCKED; case SCREEN_STATE_ON_UNLOCKED: return NfcServiceDumpProto.SCREEN_STATE_ON_UNLOCKED; case SCREEN_STATE_OFF_UNLOCKED: return NfcServiceDumpProto.SCREEN_STATE_OFF_UNLOCKED; default: return NfcServiceDumpProto.SCREEN_STATE_UNKNOWN; } } }