Android NFC應用場景及開發實戰

一、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 11:03
下一篇 2024-12-09 11:03

相關推薦

發表回復

登錄後才能評論