[英]Is it possible to transfer NFC data from one Android device to another without the 'Touch to Beam' screen?
[英]Is it possible to transfer NFC files from one Android device to another without the 'Touch to Beam' screen?
遵循这个问题,我找到了无需使用Beam UI即可传输消息的方法
这是我想要的答案:
仅从Android 4.4开始,可以在不使用Beam UI的情况下通过NFC在两个Android设备之间进行通信(实际上完全不使用Android Beam和对等模式):如果两个设备均为4.4+,则一个设备可以使用Android HCE可以模拟非接触式智能卡,并且一个设备可以使用读取器模式API(这仅适用于4.4中引入的读取器模式API,因此两个设备都必须为4.4+)才能与模拟智能卡进行通信。
但是我想传输整个文件,可以吗? 使用https://github.com/xamarin/monodroid-samples中的CardReader和CardEmulation示例,我无法在5.1和7.0设备之间做到这一点。
如果我尝试发送大数据(例如文件中的所有字节),它们将永远不会连接。 但是,使用小消息(例如样本中的原始编号)可以完成此操作,但也不能没有大量的收发异常。
当然,您可以通过NFC卡仿真交换大量数据(例如整个文件)。 由于NFC速度很慢,因此直接通过NFC传输文件可能不是最佳选择。
在卡仿真模式,你
需要
应该使用的APDU(参见ISO / IEC 7816-4)的阅读器应用程序和应用程序HCE之间的通信。 在大多数设备上,APDU限于其短格式,这意味着从阅读器发送到HCE应用程序的每个请求最多只能包含255个数据字节(+ 4个标头字节+最多2个字节的长度信息)。 HCE应用程序对读取器的响应最多为256个字节(+ 2个状态字节)。
因此,您需要将文件拆分为较小的块,然后可以打包为APDU。 您可能需要考虑创建一个简单的协议,该协议允许您请求文件的特定块(由偏移和长度标识)。 例如,您可以发送如下命令APDU来请求文件的一个块:
80 10 XX YY ZZ
XX YY
是文件中的两个字节的偏移量,而ZZ
是一个字节的长度。
引起您共鸣的是,HCE应用程序可以使用响应APDU进行回答:
<DATA> 90 00
90 00
是指示成功执行命令的状态字。
由于NFC速度很慢并且不适合交换大量数据,因此您可能只想使用NFC建立初始连接。 然后,您可以交换蓝牙或Wi-Fi连接的凭据,以用于传输实际数据文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.