一、NFC介紹
NFC(Near Field Communication)指的是近場通信技術,它是一種簡短距離的、無線的通信技術,最初用於收款機和交通設施,現在被應用於各種場景,如移動支付、智能標籤、門禁等。NFC技術是基於RFID技術,但有一個關鍵的不同之處是距離範圍,RFID可以在更長的距離內進行通信,而NFC只能在極短的距離內進行通信,通常距離只有幾厘米。
二、NFC應用場景
NFC技術可以用於各種場景,包括:
1. 移動支付
利用NFC技術,手機可以被用作移動支付設備,用戶只需將手機放在讀卡器上即可完成支付。此外,用戶可以使用手機,在商場等地方輕鬆購物。
2. 智能標籤
在任何物品上粘貼一個NFC標籤,這個標籤上可以包含任何信息,如聯繫方式、地理位置、甚至是網站鏈接。用戶可以使用NFC手機掃描這些標籤來獲取這些信息。
3. 門禁
NFC技術可以用於門禁系統,使員工或其他人員通過一些門禁系統從而進入不同的區域。
三、NFC的開發實踐
在Android上,開發人員可以使用NFC技術,以更簡單,更快速的方式實現多種應用場景。
1. 發送和接收NFC數據
要使用Android中的NFC功能,您需要從NeftService創建一個PendingIntent,並使用它處理所有NDEF_DISCOVERED意圖。然後,您需要創建一個IntentFilter,該IntentFilter將在您的應用中的Manifext中註冊,以便您可以處理在您的應用內發現的所有NFC標記。
private NfcAdapter mNfcAdapter; private PendingIntent mPendingIntent; private IntentFilter[] mIntentFilters; private String[][] mTechLists; mNfcAdapter = NfcAdapter.getDefaultAdapter(this); mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); IntentFilter ndefIntent = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try { ndefIntent.addDataType("text/plain"); } catch (IntentFilter.MalformedMimeTypeException e) { e.printStackTrace(); } mIntentFilters = new IntentFilter[] {ndefIntent,}; mTechLists = new String[][] { new String[] { NfcF.class.getName() } };
當用戶掃描一個標籤時,如果在您的應用內,它將觸發您的PendingIntent,您可以在您的activity中捕獲由標籤觸發的intent,以及包含標籤數據的一個Parcelable對象:
public void onNewIntent(Intent intent) { if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMsgs != null) { NdefMessage[] msgs = new NdefMessage[rawMsgs.length]; for (int i = 0; i 0) { String text = new String(msgs[0].getRecords()[0].getPayload()); //將數據顯示在UI界面上 } } } }
2. 創建NFC標籤
要創建一個NFC標籤,您可以使用createUri或createMimeRecord函數創建一個NDEF記錄,然後將其添加到NDEFmessage中。消息將被寫入一個可寫的NFC標籤:
NdefRecord record = NdefRecord.createUri("http://www.google.com"); NdefMessage message = new NdefMessage(new NdefRecord[] {record}); Ndef ndef = Ndef.get(tag); ndef.connect(); ndef.writeNdefMessage(message); ndef.close();
3. 讀取NFC標籤的id
要讀取NFC標籤的ID,您可以調用由標籤對象提供的getId方法。標籤ID是一個位元組數組,可以根據需要進行轉換和使用。
String tagId = ByteArrayToHexString(tag.getId());
結論
總的來說,NFC技術是一項非常方便的技術,可以在多種應用場景中使用。開發人員可以輕鬆使用Android的NFC API構建各種NFC應用程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/220040.html