工作 around/quick 修复收发失败错误?
Work around/quick fix for transceive failed error?
这个问题已被问过几次,但仍然没有明确的答案。根据this question, the reason is because of transceive timeout. Some developers filed an issue,但我没有看到任何答案清除线程上的解决方案。
我正在尝试使用 MifareUltralight class 在 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)。 android 版本 4.3
- 一些本地制造商的 phone。 android 版本 4.4.2
测试写入标签不起作用的设备:
- 三星galaxy note 2(GT-N7100)。 android 版本 4.4.2
- 一些本地制造商的 phone。 android 版本 4.2
- Famocophone。 android 版本 4.4.2
如您所见,一个4.4.2版本可以,另一个不可以。 (请注意,我在标签中有密码并且我已成功验证)
目前我所知道的是这是一个。但是我曾经使用过 writeNdefMessage
方法,那些设备可以写入标签。我刚切换到 tranceive 方法,因为我用密码保护标签。
根据this thread's answer,这可能是因为phone的nfc容量无法满足标签的功率要求。但正如我之前提到的,我正在使用 writeNdefMessage
并且它正在工作,所以电源需求是不可能的。
注意:使用读取命令 (byte) 48
可以读取标签内容,即使写入 (byte) 162
会出错。
主要问题是phone太慢。所以要解决这个问题,你必须重构你的代码,这样它会更快。
我所做的是为并行计算创建多个线程。
这个问题已被问过几次,但仍然没有明确的答案。根据this question, the reason is because of transceive timeout. Some developers filed an issue,但我没有看到任何答案清除线程上的解决方案。
我正在尝试使用 MifareUltralight class 在 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)。 android 版本 4.3
- 一些本地制造商的 phone。 android 版本 4.4.2
测试写入标签不起作用的设备:
- 三星galaxy note 2(GT-N7100)。 android 版本 4.4.2
- 一些本地制造商的 phone。 android 版本 4.2
- Famocophone。 android 版本 4.4.2
如您所见,一个4.4.2版本可以,另一个不可以。 (请注意,我在标签中有密码并且我已成功验证)
目前我所知道的是这是一个writeNdefMessage
方法,那些设备可以写入标签。我刚切换到 tranceive 方法,因为我用密码保护标签。
根据this thread's answer,这可能是因为phone的nfc容量无法满足标签的功率要求。但正如我之前提到的,我正在使用 writeNdefMessage
并且它正在工作,所以电源需求是不可能的。
注意:使用读取命令 (byte) 48
可以读取标签内容,即使写入 (byte) 162
会出错。
主要问题是phone太慢。所以要解决这个问题,你必须重构你的代码,这样它会更快。
我所做的是为并行计算创建多个线程。