2012-02-26 267 views
7

现在我的平板电脑使用操作系统Android 2.3.3而不是NFC手机,因此我需要将外部读卡器连接到平板电脑。请告诉我应该选择哪种读卡器,以及任何需要将读卡器连接到平板电脑的驱动程序 内置的NFC库是否支持该阅读器? 在此先感谢。如何将外部NFC读卡器连接到平板电脑

回答

9

我找到了答案,ACS现在为他们的读者提供了android库和示例应用程序。您可以找到库here和Android支持的读者的一些信息和视频演示是here

唯一的问题是ACS的android库只支持Android 3.1及以上版本。 希望它能帮助你。

如果您仍然有问题随时问..

7

安卓2.3和4.0内置NFC库仅支持恩智浦半导体的PN544 NFC芯片。我认为市场上没有任何使用它的读卡器,因为这款芯片专门设计用于移动设备。不过,您可能能够找到支持其他NFC芯片的Android NFC API的替代实现。

另一个问题可能是您的平板电脑很可能没有安装所需的NFC库,包括所需的系统服务(NfcManager)。毕竟,平板电脑没有NFC支持,所以它不需要这些软件组件。因此,必须为包含这些软件组件的平板电脑创建一个新的ROM系统映像。

以许多常见的桌面阅读器之一可能不是真的可行。创建所有必要的软件将其集成到Android中并不是一项简单的任务。只需购买带有NFC的Android手机或等待带有NFC的Android平板电脑出来就可能更容易。

+0

感谢这样一个信息丰富的答案,我有ACR122U NFC读卡器。是否可以连接或与读卡器交互?有没有任何驱动程序或SDK需要的? – 2012-02-27 04:30:49

+0

请查看http://www.grundid.de/nfc/,看看它对你是否有用。 – 2012-02-27 08:19:03

+0

我看到link.there没有任何有关连接NFC阅读器和平板电脑的信息,它显示了如何交互或连接NFC手机到PC.But但我知道的一点是我们可以读取或写入数据NFC手机的芯片。再次。 – 2012-02-27 10:05:03

0

这是视频回答您的问题:http://www.youtube.com/watch?v=6Xe7Ux0cTuI “成本低,操作简单,无需驱动程序 - EM4100或的Mifare RFID读写器为iPad,Android和Windows”

PS:我不工作,这COMPAGNY和从不尝试他们的解

2

Froyo 2.3(支持NFC的min SDK版本)或Ice Cream Sandwich 4.0都不兼容各种芯片。

当制造商推出具有不同NFC芯片的新手机时,是因为有人已经创建了使用此类芯片的驱动程序,并与Android的NFC类(特别是NfcManager类和NfcAdapter类)连接,这些类代表本地NFC适配器。

最好的情况下,你可以使用Android NDK创建水平低的C/C++类与Android沟通莫名其妙外部NFC读卡器,然后让更多的自定义编程与NDK使NfcAdapter的SDK上检测它......并且没有保证你会成功。

而且......如果您正在考虑去http://www.alibaba.com并使用NFC读卡器导入平板电脑,请三思,因为那样可能不会让您完成恩智浦半导体芯片与Android Beam(TM)作为读/写并支持与NFC-A,B,F,V或ISO-DEP的不同I/O操作。

为了您的时间(因为时间是这些日子里最宝贵的资产)。我认为你最好的选择是获得一些NFC手机,例如Galaxy Nexus S,DROID Razr,Xperia S,HTC Incredible等......这些都可以直接使用,这就是我们正在做的。

2

嗨sachin, 由于您的设备没有NFC,因此它将不具备NFC收音机,因此无法连接(读取或写入)NFC卡。根据NFC lib,当你试图获得NFCAdapter时,它总是会返回null。 所以你至少需要一个nfc启用android设备进行任何实验。

在我的项目中,我们使用ACR122智能卡读卡器,将连接到一个电脑,而不是android设备。这个读卡器用于读取任何nfc标签。启用nfc的android设备将在卡模拟模式下充当nfc标签。

现在的问题的下一部分“内置的NFC库支持该读者或不”。

所以这个读卡器可以读取卡的值。

0

这是一个很好的话题。我回应RacZo对阿里巴巴采购的平板电脑支持NFC库的担忧。由于设备中的NFC芯片组有所不同,有些对某些操作可疑或不支持,所以您需要小心并事先在您的应用上测试这些应用。

ACS阅读器可以是一个经济高效的解决方案,并且有一些成熟和支持良好的库和SDK支持其与Android的集成。 ACS外部读卡器的缺点是电池寿命。因为它垄断了USB端口,并且在外设连接到Android平板电脑时,Android平板电脑不允许通过USB端口充电。因此,如果您的应用程序是某种自助服务终端或自助服务应用程序,这可能是一个问题。

当遇到这个挑战时,有一个关于您的各种选项的好帖子here。在不了解应用程序的情况下,很难推荐这种或那种方式。

0

有点迟到在这里回答,但我实际上试图实现一个外部NFC阅读器尽可能接近本机NFC。

可以添加额外的服务,但是常规的NFC初始化(NfcAdapter等)不会知道这个服务,所以它必须另外进行初始化。

其结果是,在技术上无法在库存ROM中替换或添加内置NFC服务 - 采用“下载替代方式”。

重复使用一些本地NFC类(如Tag和IsoDep)是可能的。

然而,作为NFC应用程序的开发者,您确实不希望外部服务的功能与内置功能相同。外部阅读器可能具有更多的功能,并且至少要知道阅读器是否插入。

有关更多信息,请参阅External NFC API(注意:它不是完全开源产品)。

1

随着ACS NFC读写器是可能的:

Here你可以找到库和示例代码的文档。但是它似乎没有选择写入数据的选项。如果你想写你的NFC阅读器使用传输功能发送字节数组。

private static final byte READ = (byte) 0x30; 
private static final byte WRITE = (byte) 0xA2; 

这些字节是默认读取和写入用于发射功能字节。默认的NFC协议的完整文档可以发现here

例如:

byte[] response = new byte[300]; 
     int responseLength; 
     try { 
      responseLength = mReader.transmit(slotNum, command, command.length, response, response.length); 
     } catch (ReaderException e) { 
      e.printStackTrace(); 
      return "executeCommand: error: " + e.getMessage(); 
     } 

Slotnum是您要使用的阅读器的数量。如果我是正确的,如果您使用一个reader/usbdevice,则这总是0。

示例命令:

new byte[] command {(byte) WRITE, 0x04, 0x06, 0x0a, 0x00, 0x21} 

第二个字节是页ADRES写入。 (第0页和第1页是id,第2页是lockbytes,第3页是OTP,所有这些都是只读的)。

读功能的工作原理相同,写功能只发3次为0x00阵列中正确的读设置:

new byte[] command {(byte) READ, 0x04, 0x00, 0x00, 0x00} 

第二个字节的页面ADRES阅读。

相关问题