目前我正在使用平板电脑安装操作系统Android 2.3.3而非NFC手机,所以我需要将外部读卡器连接到平板电脑。请告诉我应该选择哪种读卡器以及将读卡器连接到平板电脑所需的任何驱动程序。 内置的NFC库是否支持该读卡器? 提前谢谢。
答案 0 :(得分:10)
我找到了答案,ACS现在为他们的读者提供了android库和示例应用程序。你可以找到库here,并且有一些关于android支持的读者的信息和视频演示是here
唯一的问题是ACS安卓库只支持Android 3.1及以上版本。 希望它会对你有所帮助。
如果您仍有疑问,请随时询问..
答案 1 :(得分:7)
Android 2.3和4.0中的内置NFC库仅支持恩智浦半导体的PN544 NFC芯片。我不认为市场上有任何读卡器使用它,因为这款芯片专门设计用于移动设备。但是,您可以找到支持其他NFC芯片的Android NFC API的替代实现。
另一个问题可能是您的平板电脑很可能没有安装所需的NFC库,包括所需的系统服务(NfcManager)。毕竟,您的平板电脑没有NFC支持,因此它不需要这些软件组件。因此,必须为包含这些软件组件的平板电脑创建新的ROM系统映像。
使用众多常见桌面阅读器之一可能并不可行。创建所有必要的软件以将其集成到Android中并不是一件轻而易举的事。购买带有NFC的Android手机可能更容易,或者等待带有NFC的Android平板电脑出现。
答案 2 :(得分:2)
Froyo 2.3(支持NFC的最低SDK版本)或Ice Cream Sandwich 4.0都不兼容各种芯片。
当制造商推出使用不同NFC芯片的新手机时,有人创建了驱动程序以使用此类芯片并与Android的NFC类接口,特别是NfcManager类和NfcAdapter类代表本地NFC适配器。
最好的情况是,您可以使用Android NDK创建低级C / C ++类,以便以某种方式与Android外部NFC读卡器进行通信,然后使用NDK进行更多自定义编程,使SDK上的NfcAdapter能够检测到它......并且没有保证你会成功。
并且......如果您正考虑前往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等......这些都可以直接使用,这就是我们正在做的事情。
答案 3 :(得分:2)
在我的项目中,我们使用了ACR122智能卡读卡器,它将连接到不是Android设备的电脑。该读卡器用于读取任何nfc标签。启用nfc的Android设备将在卡仿真模式中充当nfc标记。
现在问题的另一部分“内置NFC库是否支持该读者”。
所以这个读卡器可以读取卡片值。
答案 4 :(得分: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是您要使用的阅读器编号。如果我正确的话,如果你使用一个阅读器/ usbdevice,这总是0。
示例命令:
new byte[] command {(byte) WRITE, 0x04, 0x06, 0x0a, 0x00, 0x21}
第二个字节是要写的页面。第4页和第1页是可写的(第0页和第1页是id,第2页是锁定字节,第3页是OTP。所有这些都是只读的。)
Read函数与WRITE函数的工作方式相同,只在阵列中发送3次0x00,以获得正确的读取设置:
new byte[] command {(byte) READ, 0x04, 0x00, 0x00, 0x00}
第二个字节是要读的页面。
答案 5 :(得分:0)
此视频是否可以解答您的问题:http://www.youtube.com/watch?v=6Xe7Ux0cTuI “低成本,简单,无驱动 - 适用于Ipad,Android和Windows的EM4100或Mifare RFID阅读器”
PS:我不会对这个公司工作,也从不尝试他们的解决方案。
答案 6 :(得分:0)
这是一个很好的话题。我回应了RacZo对阿里巴巴采购平板电脑中NFC库支持的担忧。由于设备中的NFC芯片组有所不同,而且有些设备对某些操作有疑问或不支持,因此您需要小心并事先测试应用程序。
ACS阅读器可以是一种经济高效的解决方案,并且有一些成熟且受到良好支持的库和SDK支持其与Android的集成。 ACS外部读卡器的缺点是电池寿命。因为它独占USB端口,并且Android平板电脑不允许在外围设备连接时通过USB端口充电。因此,如果您的应用程序是某种自助服务终端或自助服务应用程序,这可能是一个问题。
在面对这一挑战时,有关你的各种选择的帖子很here。如果不了解您的应用程序,很难以这种或那种方式推荐。
答案 7 :(得分:0)
在这里回答有点晚,但我实际上尝试将外部NFC阅读器尽可能接近原生NFC。
可以添加其他服务,但常规NFC初始化(NfcAdapter等)将不会知道此服务,因此必须另外初始化。
结果是,在技术上无法在库存ROM上更换或添加内置NFC服务 - 以“替代方式”替代方式。
可以重用Tag和IsoDep等一些原生NFC类。
然而,作为NFC应用程序的开发人员,您真的不希望外部服务具有与内置服务相同的功能。外部阅读器可能具有更多功能,您至少想知道阅读器是否已插入。
有关其他信息,请参阅External NFC API(注意:它不是完全开源的产品)。