NFC 服务具体何时停用?

Posted

技术标签:

【中文标题】NFC 服务具体何时停用?【英文标题】:When exactly is the NFC Service deactivated? 【发布时间】:2012-05-25 10:18:56 【问题描述】:

我想知道 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 服务是否已经停用,还是仍在运行但未处理标签?

【问题讨论】:

我也遇到了同样的问题,正在搜索结果。检查我的问题***.com/questions/10733723/… 我很确定屏幕必须打开并解锁(就像常量建议的那样:“...ON_UNLOCKED”。但我找不到任何官方确认。因此我仍然希望有人可以帮帮我。我正在考虑的一种解决方法是制作您自己的主屏幕/启动器并放入您自己的锁定屏幕。这将是一个伪屏幕,但 NFC 服务应该仍在运行。我认为您必须避免使用键盘锁,因为它似乎也使用了常量。 我们需要在屏幕锁定时处理 polling_mode 从这段代码看来,有一个强制布尔覆盖。我们如何在外部设置它?建造道具?反射? 【参考方案1】:

实际上,我不认为 N​​FC 服务已停用。当屏幕的值较低时,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();
        
    

服务本身在这个类的其他部分启动和停止。

【讨论】:

谢谢尤里!我见过一些版本通过将亮度调到一定水平来锁定屏幕。现在这是有道理的。您是否看到手动启动服务的可能性?我说的是非 root 手机,而不是个人制作的 ROM。 NFC 服务始终运行,无论 NFC 是打开还是关闭。 我也这么认为。只是我不想检查这个。这就是我写“我不认为”的原因。 ) 感谢您的澄清!【参考方案2】:

查看相关http://forum.xda-developers.com/showthread.php?t=1712024&page=14

【讨论】:

以上是关于NFC 服务具体何时停用?的主要内容,如果未能解决你的问题,请参考以下文章

何时以及如何正确停用您的音频会话?

NFC服务一段时间后死机的可能原因是啥?

雪球科技(NFC)一面面经

Angular 2+ 服务何时提供

通知 APNS 反馈服务有关停用通知的设备?

NFV与NFC