日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

基于NFC的Android读写软件,Android基于nfc的读写(一)

發布時間:2023/12/9 Android 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于NFC的Android读写软件,Android基于nfc的读写(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里寫自定義目錄標題

Android的NFC讀寫(一)

NFC簡介

代碼解析

源碼(Demo)

Android的NFC讀寫(一)

近來,因需求需要開發nfc讀寫功能,網上查閱了許多資料,發現相關方面資料魚龍混雜,許多demo甚至無法跑起來,于是無奈只能硬啃官方文檔,終于頗有感悟,demo見末尾

nfc相關資料,大家可以參考以下幾個網站,里面講的非常透徹。

https://developer.android.com/guide/topics/connectivity/nfc

https://developer.android.com/guide/topics/connectivity/nfc/nfc.html

https://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html

NFC簡介

這里簡單的介紹一下nfc,近場通信(NFC)是一組短距離無線技術,通常需要4cm或更短的距離才能啟動連接。NFC允許您在NFC標簽和Android設備之間或兩個Android設備之間共享小的數據有效負載。在Android中,我們通常會遇到三種操作模式:

讀/寫模式,允許NFC設備讀取和/或寫入被動NFC標簽和貼紙。

P2P模式,允許NFC設備與其他NFC對等體交換數據; Android Beam使用此操作模式。

卡仿真模式,允許NFC設備本身充當NFC卡。然后,可以通過外部NFC讀取器(例如NFC銷售點終端)訪問模擬的NFC卡。

本文實現了nfc標簽NDEF和ultralight兩種格式的讀取效果

代碼解析

首先先配置android權限,文件內容如下:

標簽調度系統的基本工作方式如下:

1.嘗試以解析NFC標記(ACTION_NDEF_DISCOVERED或其中一個ACTION_TECH_DISCOVERED)時標記調度系統創建的意圖啟動一個Activity 。

2.如果沒有活動過濾該意圖,請嘗試啟動具有下一個最低優先級意圖的活動(ACTION_TECH_DISCOVERED或者ACTION_TAG_DISCOVERED),直到應用程序篩選意圖或標記分派系統嘗試所有可能的意圖。

3.如果沒有應用程序篩選任何意圖,請不執行任何操作。

大家可以參考這張圖

然后將Activity啟動模式設置為singleTop,在這種模式下,如果Activity已經在任務棧的棧頂了,當再次啟動同一個Activity的時候,這個Activity不會被重新創建,而且它的onNewIntent()方法會被調用,但是它的onCreate()、onStart()方法不會被調用。

#####新建xml文件夾,新建nfc_tech文件(自定義):

該文件指定您的活動在tech-list集合中支持的技術,如下所示:

android.nfc.tech.IsoDep

android.nfc.tech.NfcA

android.nfc.tech.NfcB

android.nfc.tech.NfcF

android.nfc.tech.NfcV

android.nfc.tech.Ndef

android.nfc.tech.NdefFormatable

android.nfc.tech.MifareClassic

android.nfc.tech.MifareUltralight

在主界面方法里判斷手機是否具有nfc功能,如下所示:

if (mNfcAdapter == null) {

Toast.makeText(this, "該設備不支持nfc", Toast.LENGTH_SHORT).show();

finish();

return;

}

if (!mNfcAdapter.isEnabled()) {

Toast.makeText(this, "請打開nfc開關", Toast.LENGTH_SHORT).show();

Intent intent=new Intent(Settings.ACTION_NFC_SETTINGS);

startActivity(intent);

}

//創建PendingIntent對象,當檢查到一個tag標簽就會執行此Intent

mPendingIntent=PendingIntent.getActivity(this,0,new Intent(this,getClass()),0);

在onNewIntent方法中取出獲取到的標簽,并進入讀取標簽的方法:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

String techList[] = tag.getTechList();

for (String tech : techList) {

System.out.print(tech);

}

readNdeftag(tag);

自定義讀取標簽的方法:這里目前只做了NDEF格式的讀取:

Ndef ndef = Ndef.get(tag);

try {

ndef.connect();

NdefMessage ndefMessage = ndef.getNdefMessage();

if (ndefMessage != null) {

mReadText.setText(parseTextRecord(ndefMessage.getRecords()[0]));

Toast.makeText(this, "成功", Toast.LENGTH_SHORT).show();

}else {

mReadText.setText("該標簽為空標簽");

}

源碼(Demo)

最后Demo已經上傳,歡迎大家交流下載,不足之處,還望請教。

鏈接: https://github.com/zcyyouminghuo/Android_NfcDemo.

總結

以上是生活随笔為你收集整理的基于NFC的Android读写软件,Android基于nfc的读写(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。