这个问题已被问过几次,但它仍然没有明确的答案。根据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)
到目前为止我尝试过:
测试设备,其中写入标签有效:
测试标记无法正常工作的设备:
正如您所看到的,一个4.4.2版本可以工作,而另一个版本不起作用。 (请注意,我在标签中有密码,并且我已成功通过身份验证)
到目前为止,我所知道的是hardware issue。但我曾经使用writeNdefMessage
方法,这些设备可以写入标签。我只是改用了tranceive方法,因为我用密码来保护标签。
根据this thread's answer,可能是因为手机的nfc容量无法处理标签的电源要求。但正如我之前提到的,我正在使用writeNdefMessage
并且它正在运行,因此功率要求是不可能的。
注意:尽管编写(byte) 48
会出错,但使用读取命令(byte) 162
读取标记的内容仍然有效。
答案 0 :(得分:2)
主要问题是手机太慢。因此,要解决此问题,您必须重构代码,以便更快。
我所做的是为并行计算创建多个线程。