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服务是否已经停用,或者它仍在运行但是没有处理标签?
解决方法 实际上,我不认为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(); } }
服务本身在此类的其他部分中启动和停止.
总结以上是内存溢出为你收集整理的android – 何时停用NFC服务?全部内容,希望文章能够帮你解决android – 何时停用NFC服务?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)