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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NFC reader ( ISO 15693 ) NFC相关技术详解(附源代码)

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NFC reader ( ISO 15693 ) NFC相关技术详解(附源代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NFC reader ( ISO 15693 ) NFC相關技術詳解

本文主要介紹Android系統中,使用ISO 15693協議讀取NDEF message的相關技術,并結源代碼進行講解

源代碼地址:https://github.com/nikolajohn/Reader_of_NFCv


概述

本文主要介紹在Android框架下NFC檢測相關的技術

以及如何調用NFC相關的API

從而完成NDEF message格式的NFC數據

關于NDEF Message,主要存在以下兩種應用場景:

  • 從NFC tag中讀取NDEF數據
  • 使用Android Beam處理NDEF數據

在Android系統中,tag dispatch system(一些書里對這個強行中文翻譯,但樓主覺得中文容易引起歧義,因此保留英文)

用于分析手機NFC天線檢測到的NFC tag

然后對接收到的數據進行簡單的分類,并將分類好的數據發給需要的應用程序

如果用戶的應用程序需要去處理被掃描的NFC tag ,我們需要在intent filter里面進行聲明

就像這樣:

至于這里為什么要寫這個

android.nfc.action.TECH_DISCOVERED

我們后面會提到

這篇文章主要寫NDEF Message的處理,Android Beam方面的內容,樓主以后有機會再寫


Tag dispatch system

只要設備的屏幕是點亮的,Android系統就會一直搜索NFC tag,除非系統設置里面禁用了NFC,或者設備沒有NFC功能

當Android設備發現了NFC tag后,最希望的操作是有合適的activity去處理intent

而非讓用戶去選擇,我用哪個應用程序去處理讀取到的NFC tag(如果讓用戶選擇就會用到Activity Chooser)

為什么這么說呢?

因為設備掃描NFC tag時,往往設備和NFC是貼得很近的

此時如果讓用戶去選擇一個應用程序,很可能會導致連接的中斷

為了避免這樣的情況發生

Android的tag dispatch system完成了對檢測到的NFC tag進行掃描、解析以及嘗試定位最合適的應用程序的工作

為什么說是嘗試呢?因為有可能出現沒有最合適的應用程序來處理的情況,這時候就要用到file chooser了

tag dispatch system主要做下面這幾件事:

1. 解析NFC tag,并找出能夠指出payload的數據類型的MIME type或者URI,關于payload的介紹下面會講到

2. 將找到的MIME type或者URI結合payload,一起打包封裝進intent

3. 打開一個可以處理這個intent的activity

下面詳細地介紹這個過程


NDEF

首先我們介紹一下NFC tag的種類,其實NFC tag可以分為很多種,有很多的技術可以完成對NFC tag進行讀取和寫入

在這些NFC相關的技術中,最為常用的還是NFC Forum指定的NDEF協議

NFC Forum是一個制定NFC協議的組織,官網如下:

https://nfc-forum.org/

那么NDEF協議是什么意思呢?

簡單地說,就是把所有的NFC數據都都放到一個新的數據結構里,叫做NDEF message

這個NDEF message可以包含一條或多條NDEF record

每條NDEF record都必須嚴格按照指定的規范來生成

Android也支持其他種類的NFC數據,要處理這些類型的NFC tag,需要自己去寫基于底層的協議棧

這個如果有需求可以留言,樓主以后寫,這篇文章主要講NDEF格式的NFC數據

完整的NDEF協議,可以在下面這個地址找到:

https://nfc-forum.org/our-work/specifications-and-application-documents/

不過我們不需要了解得特別細致,把這篇文章里的東西看懂了就差不多了


NFC tag映射到MIME type或URI

當Android設備掃描到含有NDEF格式數據的NFC標簽時

tag dispatch system將會解析NDEF message,然后嘗試找出數據的MIME type或URI

那么tag dispatch system具體是如何做到的呢?

其實很簡單,tag dispatch system會讀取NDEF message中的第一條NDEFrecord

通過從第一條NDEFrecord中獲取的信息

決定tag dispatch system如何去解釋整個的NDEF message

規范的第一條NDEF record應該包含以下信息:

?

總結

以上是生活随笔為你收集整理的NFC reader ( ISO 15693 ) NFC相关技术详解(附源代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

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