我想知道NFC服务何时启动和停止。 android 4.0.3的源代码似乎表明轮询依赖于一个常量(位于NfcService.java中)
/** minimum screen state that enables NFC polling (discovery) */
static final int POLLING_MODE = SCREEN_STATE_ON_UNLOCKED;
我会将此解释为“屏幕指示灯亮起,因此nfc服务处于活动状态”。 但是当屏幕被锁定时,即使屏幕亮起,也无法识别NFC标签。
所以我很好奇:当锁定屏幕出现时,NFC服务是否已经停用,或者它是否仍在运行但是没有处理标签?
答案 0 :(得分:3)
实际上,我不认为NFC服务已停用。当屏幕值较低时,SCREEN_STATE_ON_UNLOCKED
设备会停止询问周围的NFC标签。您可以从以下代码中看到:
// configure NFC-C polling
if (mScreenState >= POLLING_MODE) {
if (force || !mNfcPollingEnabled) {
Log.d(TAG, "NFC-C ON");
mNfcPollingEnabled = true;
mDeviceHost.enableDiscovery();
}
} else {
if (force || mNfcPollingEnabled) {
Log.d(TAG, "NFC-C OFF");
mNfcPollingEnabled = false;
mDeviceHost.disableDiscovery();
}
}
但NFC-EE路由已启用,工具屏幕状态高于SCREEN_STATE_ON_LOCKED
:
// configure NFC-EE routing
if (mScreenState >= SCREEN_STATE_ON_LOCKED &&
mEeRoutingState == ROUTE_ON_WHEN_SCREEN_ON) {
if (force || !mNfceeRouteEnabled) {
Log.d(TAG, "NFC-EE ON");
mNfceeRouteEnabled = true;
mDeviceHost.doSelectSecureElement();
}
} else {
if (force || mNfceeRouteEnabled) {
Log.d(TAG, "NFC-EE OFF");
mNfceeRouteEnabled = false;
mDeviceHost.doDeselectSecureElement();
}
}
服务本身在本课程的其他部分启动和停止。
答案 1 :(得分:1)