我们正在构建一个 NFC 应用程序,该应用程序需要一次读取 NFC 标签(由 Android 移动设备),然后将数据发送到处理它的服务器,并将处理结果发送回写入数据返回到 NFC 标签。
移动设备(具有 NFC 阅读器)执行的操作:
- 从标签中读取数据
- 发送数据到服务器并等待处理结果
- 接收处理后的结果
- 在标签上写下结果
问题是当花费的时间高于半分钟时(由于网络速度和服务器端处理时间)第四个操作(将处理结果写回标签)失败。
失败的几个可能原因可能是:
- A:标签由标签在阅读器产生的磁场内移动来供电。当第二次和第三次操作完成并尝试第四次操作时,标签不再有电。
- B:我们的代码有一个错误,应该为要执行的第四个操作重新创建读取器/标签对象(我们在执行其他操作时将读取器和标签对象保存在内存中)
我们的 Android 应用程序中使用的代码/库(用于与标签交互)由第三方提供。我对 NFC(和 ndef Android 库)的了解有限。我正在寻找社区的帮助(如果有人在上述情况下有经验)如下
- 如果上述情况是因为 B 而发生的。我们会尝试找出相同的答案。 (或联系第三方供应商给出解决方案)
- 反之如果第四步失败的原因是A,我们调试第三方代码也没用。 (实际上,我们需要的是更改流程,以便应用程序提示用户在第四步发生之前再次点击标签)
最佳答案
我会将这 4 个步骤分成 3 组。
1) 读取标签
2) 向服务器发送数据并等待处理结果,并接收处理结果
3)将结果写在标签上
1) 是用户交互(“请点击标签”),
2) 在后台发生(“处理数据”)和
3) 再次是用户交互,一旦数据从服务器返回,我会要求用户再次触摸标签(“请再次点击标签”)。
这有助于分离时间不确定的步骤(如果手机暂时没有数据连接怎么办?也很难指望用户将设备稳定地放在标签上直到数据恢复。
关于android - 如果标签读取器没有相对运动,NFC 标签可以激活吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38414225/