在這節內容中,我們為大家介紹一下nfc的讀寫卡模式的開發。
讀寫卡模式是通過手機對nfc標籤卡資訊經行讀寫操作,但是,在使用前,我們應該去檢查一下設定和新增一些許可權。
在這裡我建議大家將nfc的一些基礎操作放入到乙個nfcbaseactivity中,這樣,我們在使用時就不需要每次都經行重複的操作。
1、檢測nfc狀態
public int nfcadapterinitialize() else
}return 1;
}
private nfcadapter nfcadapter;
private nfcmanager nfcmanager;
private pendingintent pendingintent;
private intentfilter intentfilters;
private string mtechlist;
private void nfcinitialization() catch (intentfilter.malformedmimetypeexception e)
//將我們的意圖放入到陣列中(在我的案例中,intentfilter1其實是沒有使用的)
intentfilters=new intentfilter;
//指定過濾標籤,這裡填入null就好
mtechlist=null;
}
這裡我們初始化了前台排程系統的一些引數,下面我們看一下怎麼啟用前台排程系統
//在activity不可見的時候我們關閉前台排程
@override
protected void onpause()
//在activity顯示的時候,我們讓nfc前台排程系統處於開啟狀態
@override
protected void onresume()
protected void onnewintent(intent intent)
public static string getuid(tag tag)
return stringbuffer.tostring();
}
public static ndefmessage ge***efmessage(intent intent)
這是一些頭函式代表的含義
接下來我們獲取一下nfc中位元組流
byte bytes=records[0].getpayload();
然後我們來判斷一下ndef的型別records[0].gettype();
在ndefrecord定義了
public static final byte rtd_alternative_carrier ;
public static final byte rtd_handover_carrier ;
public static final byte rtd_handover_request l;
public static final byte rtd_handover_select ;
public static final byte rtd_smart_poster ;
public static final byte rtd_text ;
public static final byte rtd_uri ;
這些格式。rtd_text 是文字格式,rtd_uri是可以直接呼叫系統。這是比較常用的兩個,其中uri又可以指定這些型別
public static final short tnf_absolute_uri = 3;//絕對uri
public static final short tnf_empty = 0;
public static final short tnf_external_type = 4;
public static final short tnf_mime_media = 2;
public static final short tnf_unchanged = 6;
public static final short tnf_unknown = 5;
public static final short tnf_well_known = 1;//已知型別,ndef論壇定義
若我們解析的資料僅為text型別時,只需要將位元組的第一位取出,判斷編碼格式,其他位按照指定編碼進行解析
public static string parsewellkonwnurirecord(ndefmessage message)
rtd_uri 方式和讀取字串類似,只是沒有首位的編碼位;tnf_well_known 型別時,表示資料為已知型別,從uri_prefix_map中獲取首位對應的字串即可。
以上就是nfc的讀卡模式,下面我們來說一下nfc的寫入模式
其實nfc的寫卡模式與nfc的讀卡模式是相似的。
首先我們需要將資訊準備好!如uri,或text資訊
然後我們建立乙個 ndefrecord record=new ndefrecord(ndefrecord.tnf_well_known, ndefrecord.rtd_text, new byte[0], payload);
ndefrecord.tnf_well_known:表示已知資料型別
ndefrecord.rtd_text:為指定資料的格式
payload:為準備好的位元組資料
然後就可以生成乙個ndefrecord,在將多個或乙個ndefrecord放入ndefmessage中
new ndefmessage(record,arrrecord);
然後我們在onnewintent,獲取到ndef物件ndef ndef=ndef.get(gettag());
經行提交:ndef.connect();
,接下來判斷是否nfc標籤的標籤是否可以寫入
if (ndef.getmaxsize() < message.getbytearraylength())else if (ndef==null)
ndef.writendefmessage(message);
NFC標籤的讀寫
最近公司要求完成乙個利用nfc標籤管理倉庫庫存的乙個iot專案,要求手機從伺服器獲取的資料後,將資料寫入nfc標籤中。其實主要的核心還是利用讀卡器模式對nfc標籤的讀寫。具體如下 1.許可權的配置 android name android.permission.nfc android name an...
sd卡的讀寫
sd卡全稱為 secrue digital memory card,具有輕巧 可加密 傳輸速度高 適用於手持裝置使用等優點。二 匯流排介面 sd需要高速讀寫,同時也要使手持等嵌入式裝置能方便使用,特設有兩個訪問介面中 sd 模式介面和spi 介面。sd卡在上電初期,卡主控通過檢測引腳 dat3 來決...
CPU卡的讀寫
一般來說,對儲存卡和邏輯加密卡操作,使用接觸式ic 用讀寫器 對 cpu卡使用 cpu卡讀寫器。所謂 通用讀卡器 是指它可以對大多數流行的儲存卡和邏輯加密卡操作。而 cpu卡由於有 iso iec 7816.3 4 的規範,其通訊協議 命令格式都是相容的,被看作是一種卡。當然,也有將 通用讀卡器 與...