2012-02-26 275 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閱讀。

相關問題