解决收发失败错误的工作/快速解决方法?

时间:2016-01-08 10:24:06

标签: android nfc mifare

这个问题已被问过几次,但它仍然没有明确的答案。根据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. 使用收发与写命令手动写入
  3. 测试设备,其中写入标签有效

    1. 三星galaxy note 3(SM-N900L)。 android版本4.3
    2. 一些本地制造商的电话。 android版本4.4.2
    3. 测试标记无法正常工作的设备

      1. 三星galaxy note 2(GT-N7100)。 android版本4.4.2
      2. 一些本地制造商的电话。 android版本4.2
      3. Famoco电话。 android版本4.4.2
      4. 正如您所看到的,一个4.4.2版本可以工作,而另一个版本不起作用。 (请注意,我在标签中有密码,并且我已成功通过身份验证)

        到目前为止,我所知道的是hardware issue。但我曾经使用writeNdefMessage方法,这些设备可以写入标签。我只是改用了tranceive方法,因为我用密码来保护标签。

        根据this thread's answer,可能是因为手机的nfc容量无法处理标签的电源要求。但正如我之前提到的,我正在使用writeNdefMessage并且它正在运行,因此功率要求是不可能的。

        注意:尽管编写(byte) 48会出错,但使用读取命令(byte) 162读取标记的内容仍然有效。

1 个答案:

答案 0 :(得分:2)

主要问题是手机太慢。因此,要解决此问题,您必须重构代码,以便更快。

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