【问题标题】:Work around/quick fix for transceive failed error?解决/快速修复收发失败错误?
【发布时间】:2016-01-18 15:20:01
【问题描述】:

这个问题已经被问过几次了,但仍然没有明确的答案。根据this的问题,原因是因为收发超时。一些开发人员为此提交了issue,但我没有看到任何明确的解决方案。

我正在尝试使用 MifareUltralight 类在 NTAG216 中编写。我正在使用writePage 方法,这就是发生错误的地方。

这是错误报告的一部分:

Error: java.io.IOException: Transceive failed at     
android.nfc.TransceiveResult.getResponseOrThrow(TransceiveResult.java:52) 
at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:173)

到目前为止我所尝试的:

  1. 增加超时时间
  2. 使用带有写入命令的收发器手动写入

测试写入标签工作的设备

  1. 三星 Galaxy Note 3(SM-N900L)。安卓4.3版
  2. 一些本​​地制造商的电话。安卓版本 4.4.2

测试写入标签不起作用的设备

  1. 三星 Galaxy Note 2(GT-N7100)。安卓版本 4.4.2
  2. 一些本​​地制造商的电话。安卓4.2版
  3. Famoco 电话。安卓版本 4.4.2

如您所见,一个 4.4.2 版本可以工作,另一个不工作。 (请注意,我在标签中有密码并且我已成功验证)

目前我所知道的是这是一个hardware issue。但我曾经使用过writeNdefMessage 方法,这些设备可以写入标签。我刚刚切换到 tranceive 方法,因为我用密码保护标签。

根据this thread's answer 的说法,可能是因为手机的nfc 容量无法满足标签的电源要求。但正如我之前提到的,我使用的是writeNdefMessage,它正在工作,所以电源需求是不可能的。

注意:使用读取命令 (byte) 48 读取标签内容可以工作,即使写入 (byte) 162 会出错。

【问题讨论】:

    标签: android nfc mifare


    【解决方案1】:

    主要问题是手机太慢。所以要解决这个问题,你必须重构你的代码,让它更快。

    我所做的是为并行计算创建了几个线程。

    【讨论】:

    • 多亏了这一点,我发现如果我们逐行调试,我们会得到一个 Transceive 错误,因此不建议调试它
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2016-06-01
    相关资源
    最近更新 更多