【发布时间】: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)
到目前为止我所尝试的:
- 增加超时时间
- 使用带有写入命令的收发器手动写入
测试写入标签工作的设备:
- 三星 Galaxy Note 3(SM-N900L)。安卓4.3版
- 一些本地制造商的电话。安卓版本 4.4.2
测试写入标签不起作用的设备:
- 三星 Galaxy Note 2(GT-N7100)。安卓版本 4.4.2
- 一些本地制造商的电话。安卓4.2版
- Famoco 电话。安卓版本 4.4.2
如您所见,一个 4.4.2 版本可以工作,另一个不工作。 (请注意,我在标签中有密码并且我已成功验证)
目前我所知道的是这是一个hardware issue。但我曾经使用过writeNdefMessage 方法,这些设备可以写入标签。我刚刚切换到 tranceive 方法,因为我用密码保护标签。
根据this thread's answer 的说法,可能是因为手机的nfc 容量无法满足标签的电源要求。但正如我之前提到的,我使用的是writeNdefMessage,它正在工作,所以电源需求是不可能的。
注意:使用读取命令 (byte) 48 读取标签内容可以工作,即使写入 (byte) 162 会出错。
【问题讨论】: