NFC流量的关闭屏幕和锁定屏幕行为

时间:2018-07-12 13:06:55

标签: android nfc

所以我一直在浏览Android开发人员文档。我遇到了以下页面: https://developer.android.com/guide/topics/connectivity/nfc/hce

在该特定页面上,其内容如下:

  

当前的Android实现将NFC控制器和   当设备的屏幕处于关闭状态时,应用程序处理器将完全关闭   关闭。因此,当屏幕显示以下内容时,HCE服务将无法使用   关闭。

显然,并非所有制造商都遵守这一经验法则。关闭屏幕后,某些设备仍可以进行NFC通信。是否有标准的解决方法来检查屏幕是否打开并且是否不允许NFC通信?

1 个答案:

答案 0 :(得分:0)

由于这个问题尚未得到其他任何人的回答,因此我将发布解决方案。不幸的是,某些设备仍然可以响应NFC流量,尽管他们不应该这样做。

我做了一个小的实用程序类,它告诉您显示器是否关闭。

class DisplayUtils(private val context: Context) {

    fun isScreenOff() = getDisplay()?.state == Display.STATE_OFF

    private fun getDisplay() = (context.getSystemService(Context.WINDOW_SERVICE) as? WindowManager)?.defaultDisplay
}

如果显示器关闭,则不允许发生NFC流量。此解决方案的优点:

  • 它不需要任何其他权限。
  • 它不需要任何广播接收者的注册。

希望这可以对某人有所帮助。