繁体   English   中英

是否可以在没有“触摸到光束”屏幕的情况下将NFC文件从一台Android设备传输到另一台?

[英]Is it possible to transfer NFC files from one Android device to another without the 'Touch to Beam' screen?

遵循这个问题,我找到了无需使用Beam UI即可传输消息的方法

是否可以在没有“ Touch to Beam”屏幕的情况下将NFC数据从一个Android设备传输到另一设备?

这是我想要的答案:

仅从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传输文件可能不是最佳选择。

使用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速度很慢并且不适合交换大量数据,因此您可能只想使用NFC建立初始连接。 然后,您可以交换蓝牙或Wi-Fi连接的凭据,以用于传输实际数据文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM