我发现当我将两个 NFC ISO15693 标签堆叠在一起然后尝试扫描标签时,Android NFC 堆栈完全崩溃。并且在重新启动 NFC 之前无法工作。遗憾的是,应用程序没有抛出异常。
我能找到的唯一相关日志如下(Logcat):
2020-03-09 14:36:25.196 3401-10183/? E/BrcmNfcJni: NfcTag::selectFirstTag:starting timer
2020-03-09 14:36:25.209 3401-3657/? E/BrcmNfcJni: nfaDeviceManagementCallback: chr_sub_error_no:7
2020-03-09 14:36:25.223 3401-10183/? E/BrcmNfcJni: nativeNfcTag_handleNonNciMultiCardDetection: check_tag_ntf = 0, check_cmd_sent = 1
和
2020-03-09 14:59:10.937 5551-16123/? E/libnfc_nci: [ERROR:nfa_dm_act.cc(888)] invalid protocol, mode or state
在那之后,在手机上的任何应用程序中,NFC 都不会做出反应,直到 NFC 重新启动。我还测试了 ISO 14443-4,因为我把它们放在周围,它们没有同样的问题。
我不会包含应用程序代码,因为它不需要对应用程序代码做任何事情。崩溃甚至发生在手机的主屏幕上,因此必须是我无法控制的底层 NFC 堆栈错误。
似乎是碰撞错误。
我在荣耀 9 和三星 A51 上测试过;两次 NFC 堆栈都会崩溃。
有什么建议么?我真的迷路了。
编辑:这是一个更完整的日志。我希望这是所有必要的信息。
在扫描日志上:
2020-03-10 07:59:24.822 5551-26548/? E/libnfc_nci: [ERROR:nfa_dm_act.cc(888)] invalid protocol, mode or state
关闭 NFC 后:
2020-03-10 07:59:36.867 32008-32008/? E/NFC: isNFCStateChangeAllowed - Begin
2020-03-10 07:59:36.893 5551-26548/? E/libnfc_nci: [ERROR:NativeNfcManager.cpp(890)] nfaConnectionCallback: NFA_SELECT_RESULT_EVT error: status = 3
2020-03-10 07:59:36.893 5551-26557/? E/libnfc_nci: [ERROR:NativeLlcpServiceSocket.cpp(65)] nativeLlcpServiceSocket_doAccept: fail accept
2020-03-10 07:59:36.894 5551-26548/? E/libnfc_nci: [ERROR:nfa_dm_act.cc(888)] invalid protocol, mode or state
2020-03-10 07:59:36.895 5551-26557/? E/SnepServer: IO error
java.io.IOException
at com.android.nfc.dhimpl.NativeLlcpServiceSocket.accept(NativeLlcpServiceSocket.java:42)
at com.android.nfc.snep.SnepServer$ServerThread.run(SnepServer.java:215)
2020-03-10 07:59:36.918 5551-26558/? E/libnfc_nci: [ERROR:NativeLlcpServiceSocket.cpp(65)] nativeLlcpServiceSocket_doAccept: fail accept
2020-03-10 07:59:36.935 5551-26559/? E/libnfc_nci: [ERROR:NativeLlcpServiceSocket.cpp(65)] nativeLlcpServiceSocket_doAccept: fail accept
2020-03-10 07:59:36.938 5551-5689/? E/NfcLogManager: insertLogInternal::feature=NF03
2020-03-10 07:59:37.090 5551-26548/? E/libnfc_nci: [ERROR:gki_ulinux.cc(693)] GKI TASK_DEAD received. exit thread 3...
2020-03-10 07:59:37.090 5551-26548/? E/libnfc_nci: [ERROR:gki_ulinux.cc(117)] gki_task task_id=3 terminating
2020-03-10 07:59:37.188 5551-26546/? E/libnfc_nci: [ERROR:gki_ulinux.cc(117)] gki_task task_id=4 terminating
2020-03-10 07:59:37.190 5551-5689/? E/NfcLogManager: insertLogInternal::feature=NF01
2020-03-10 07:59:37.192 5551-5689/? E/NfcLogManager: makeAndSendLog - start
2020-03-10 07:59:37.193 5551-5689/? E/NfcLogManager: insertLog::feature=USEF