今天獨山子巡檢更換了新終端,隨之而來的問題是之前rfid標籤讀取硬體(之前是通過介面直接獲取)沒有了,而是用了nfc模組,然後就看了看api,以及google了下。使用很簡單,就三個步驟:
first
在mainifest檔案宣告許可權以及在目標activity下新增action,這些api都有,如下
許可權宣告
目標activity下新增...
...nfc-tech-filter 檔案是res/xml檔案下自建
有兩種方式
1、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
2、android.nfc.tech.nfca
android.nfc.tech.ndef
android.nfc.tech.nfcb
android.nfc.tech.ndef
我的理解是這樣:第一種是&的關係,第二種是||的關係,即第一種需要都支援,才能跳轉,而第二種只要支援一種就能跳轉
second
在目標activity的oncreate()中獲取nfcadapter例項
adapter = nfcadapter.getdefaultadapter(this)
if(adapter==null)
if(!adapter!!.isenabled)
third
在onresume()方法中獲取標籤值
val tagfromintent = intent.getparcelableextra(nfcadapter.extra_tag)
val uidbytes = tagfromintent.getid()
val uid :string? = bytestohexstring(uidbytes)
實際問題
每次刷標籤的時候,目標activity宣告週期都會執行一次,以至於依附在activity上的fragment都會重新重新整理,之前的資料都會清除,不能達到巡檢時候指定頁面不變,只獲取標籤資料的目的。
解決辦法
首先把目標activity的啟動模式改為singletask,然後在目標activity的onnewintent(intent intent)中寫讀取標籤的邏輯。然後通過事件匯流排框架(eventbus)傳送到指定fragment接受即可,至此,問題解決。
Android NFC讀卡以及NFC的三種模式
第一步新增許可權 第二步 在需要讀取卡內容的地方寫下面的內容 suppresslint newapi override protected void onresume suppresslint newapi override protected void onpause override prote...
framelayout中fragment的切換
我們在android開發中經常會用到fragment,例如側拉欄的切換,viewpager的切換。而我們切換fragment無非就兩種方法 1.replace 2.add hide show 兩種發方法相比較而言,我更加推薦使用第二種方法,因為fragmenttanslation的replace 方...
viewpager 中fragment 的生命週期
最近自己做點小專案練練手,用的是 viewpager fragment fragmentpageradapter介面卡 這樣乙個框架 首先普及一下fragment的生命週期 注意 下面我說的生命週期特指從onattach到onresume。結果除錯程式的時候發現乙個莫名其妙的事情,viewpager...