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

问题描述 投票:1回答:1

在这个问题之后,我找到了在不使用Beam UI的情况下传输消息的方法

Is it possible to transfer NFC data from one Android device to another without the 'Touch to Beam' screen?

这是我想要的答案:

只有从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设备之间进行此操作。

如果我尝试发送大数据(例如文件中的所有字节),它们永远不会连接。但是,对于小消息(例如样本中的原始数字),可以完成但不是没有很多传递异常。

android xamarin nfc apdu hce
1个回答
0
投票

当然,您可以通过NFC卡仿真交换大量数据(例如整个文件)。由于NFC相当慢,但它可能不是您直接通过NFC传输文件的最佳选择。

Use NFC for data transfer

在卡仿真模式中,您 需要 应该使用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是一个状态字,表示命令的成功执行。

Use NFC to establish an out-of-band channel

由于NFC相当慢并且不适合交换大量数据,因此您可能只想使用NFC来建立初始连接。然后,您可以交换蓝牙或Wi-Fi连接的凭据,以用于传输实际数据文件。

© www.soinside.com 2019 - 2024. All rights reserved.