1 package com.android.nfc; 2 3 import android.app.KeyguardManager; 4 import android.content.Context; 5 import android.os.PowerManager; 6 7 /** 8 * Helper class for determining the current screen state for NFC activities. 9 */ 10 class ScreenStateHelper { 11 12 static final int SCREEN_STATE_UNKNOWN = 0x00; 13 static final int SCREEN_STATE_OFF_UNLOCKED = 0x01; 14 static final int SCREEN_STATE_OFF_LOCKED = 0x02; 15 static final int SCREEN_STATE_ON_LOCKED = 0x04; 16 static final int SCREEN_STATE_ON_UNLOCKED = 0x08; 17 18 //Polling mask 19 static final int SCREEN_POLLING_TAG_MASK = 0x10; 20 static final int SCREEN_POLLING_P2P_MASK = 0x20; 21 static final int SCREEN_POLLING_READER_MASK = 0x40; 22 23 private final PowerManager mPowerManager; 24 private final KeyguardManager mKeyguardManager; 25 ScreenStateHelper(Context context)26 ScreenStateHelper(Context context) { 27 mKeyguardManager = context.getSystemService(KeyguardManager.class); 28 mPowerManager = context.getSystemService(PowerManager.class); 29 } 30 checkScreenState()31 int checkScreenState() { 32 if (!mPowerManager.isInteractive()) { 33 if (mKeyguardManager.isKeyguardLocked()) { 34 return SCREEN_STATE_OFF_LOCKED; 35 } else { 36 return SCREEN_STATE_OFF_UNLOCKED; 37 } 38 } else if (mKeyguardManager.isKeyguardLocked()) { 39 return SCREEN_STATE_ON_LOCKED; 40 } else { 41 return SCREEN_STATE_ON_UNLOCKED; 42 } 43 } 44 45 /** 46 * For debugging only - no i18n 47 */ screenStateToString(int screenState)48 static String screenStateToString(int screenState) { 49 switch (screenState) { 50 case SCREEN_STATE_OFF_LOCKED: 51 return "OFF_LOCKED"; 52 case SCREEN_STATE_ON_LOCKED: 53 return "ON_LOCKED"; 54 case SCREEN_STATE_ON_UNLOCKED: 55 return "ON_UNLOCKED"; 56 case SCREEN_STATE_OFF_UNLOCKED: 57 return "OFF_UNLOCKED"; 58 default: 59 return "UNKNOWN"; 60 } 61 } 62 screenStateToProtoEnum(int screenState)63 static int screenStateToProtoEnum(int screenState) { 64 switch (screenState) { 65 case SCREEN_STATE_OFF_LOCKED: 66 return NfcServiceDumpProto.SCREEN_STATE_OFF_LOCKED; 67 case SCREEN_STATE_ON_LOCKED: 68 return NfcServiceDumpProto.SCREEN_STATE_ON_LOCKED; 69 case SCREEN_STATE_ON_UNLOCKED: 70 return NfcServiceDumpProto.SCREEN_STATE_ON_UNLOCKED; 71 case SCREEN_STATE_OFF_UNLOCKED: 72 return NfcServiceDumpProto.SCREEN_STATE_OFF_UNLOCKED; 73 default: 74 return NfcServiceDumpProto.SCREEN_STATE_UNKNOWN; 75 } 76 } 77 } 78