安卓手機APP開發__近距離無線通信(NFC)概述

安卓手機APP開發__近距離無線通信(NFC)概述

概述

近距離無線通信 (NFC) 是一組近距離無線技術,距離通常不超過 4 厘米才能
發起連接。通過 NFC,您可以在 NFC 標簽和 Android 設備之間,或兩臺 Android 設備之間共享較小的數據載荷。

標簽的復雜度可能各有不同。簡單的標記僅提供讀取和寫入語義,有時還具有
一次性可編程區域,使卡片變為只讀。更復雜的標簽可提供數學運算,并具有
加密硬件來對扇區訪問進行身份驗證。最復雜的代碼都包含操作環境,允許與
代碼上執行的代碼進行復雜的互動。存儲在標簽中的數據也可以采用多種格式
編寫,但許多 Android 框架 API 都基于名為 NDEF(NFC 數據交換格式)的
NFC Forum 標準。

具有 NFC 功能的 Android 設備同時支持三種主要操作模式:

??? 讀取器/寫入器模式,允許 NFC 設備讀取和寫入被動 NFC 標簽和貼紙。
??? 點對點模式,允許 NFC 設備與其他 NFC 對等設備交換數據;Android Beam 使用此操作模式。
??? 卡模擬模式,允許 NFC 設備本身充當 NFC 卡。然后,可通過外部 NFC
??? 讀取器(例如 NFC 銷售終端)訪問模擬 NFC 卡。

NFC 基礎知識

??? 將 NDEF 數據與 Android 結合使用時,會有兩個主要用例:

??? 從 NFC 標簽讀取 NDEF 數據
??? 使用 Android BeamTM 將 NDEF 消息從一臺設備傳輸到另一臺設備

從 NFC 標簽讀取 NDEF 數據的操作由標簽調度系統處理,該系統分析發現的 NFC 標簽,對數據進行適當分類,然后啟動對分類數據感興趣的應用。想要處理掃描的 NFC 標簽的應用可以聲明 intent 過濾器并請求處理數據。

借助 Android BeamTM 功能,設備可以將 NDEF 消息推送到另一臺設備,只需將兩臺設備實際靠在一起即可。與藍牙等其他無線技術相比,這種互動提供了一種更簡便的數據發送方式,因為使用 NFC 時無需手動發現或配對設備。當兩部設備接近時,連接會自動開始。Android Beam 通過一組 NFC API 提供,因此任何應用都可以在設備之間傳輸信息。例如,通訊錄、瀏覽器和 YouTube 應用使用 Android Beam 與其他設備共享聯系人、網頁和視頻。

標簽調度系統

Android 設備通常會在屏幕解鎖時查找 NFC 標簽,除非在設備的“設置”菜單中停用了 NFC 功能。當 Android 設備發現 NFC 標簽時,期望的行為是讓最合適的 activity 處理 intent,而無需詢問用戶要使用哪個應用。由于設備在非常短的范圍內掃描 NFC 標簽,因此讓用戶手動選擇 activity 可能會迫使用戶將設備從標簽中移除并斷開連接。您應將 activity 開發為僅處理 activity 關注的 NFC 標簽,以防止 activity 選擇器顯示。

為了幫助您實現這一目標,Android 提供了一個特殊的標簽調度系統,該系統可以分析掃描的 NFC 標簽、解析這些標簽,并嘗試定位對掃描的數據感興趣的應用。其實現方式如下:

??? 解析 NFC 標簽并確定 MIME 類型或 URI(用于標識標簽中的數據載荷)。
??? 將 MIME 類型或 URI 與負載一起封裝到 Intent 中。NFC 標簽如何映射到 MIME 類型和 URI 中介紹了前兩個步驟。
??? 根據 Intent 啟動 Activity。如何將 NFC 標簽分發到應用中介紹了這一點。

如何將 NFC 標簽映射到 MIME 類型和 URI

在開始編寫 NFC 應用之前,請務必先了解不同類型的 NFC 標簽、標簽調度系統如何解析 NFC 標簽,以及標簽調度系統在檢測到 NDEF 消息時所做的特殊工作。NFC 標簽涉及多種技術,也可以通過多種不同方式將數據寫入 NFC 標簽。Android 對 NFC Forum 定義的 NDEF 標準的支持最多。

NDEF 數據封裝在包含一條或多條記錄 (NdefRecord) 的消息 (NdefMessage) 中。每條 NDEF 記錄的格式都必須正確,符合您要創建的記錄類型的規范。Android 還支持其他類型的不包含 NDEF 數據的標簽,您可以使用 android.nfc.tech 軟件包中的類來處理這些標簽。如需詳細了解這些技術,請參閱高級 NFC 主題。在處理這些其他類型的標簽時,您需要編寫自己的協議堆棧來與這些標簽進行通信,因此我們建議您盡可能使用 NDEF,以簡化開發并最大限度地支持 Android 設備。


高級 NFC

??? 本文檔將介紹可使用 Android 支持的各種標簽技術的 API。如果您不處理 NDEF 數據,或者當您處理 Android 無法完全理解的 NDEF 數據,則必須使用自己的協議堆棧手動讀取或寫入原始字節中的標簽。在這些情況下,Android 支持檢測某些標簽技術,并使用您自己的協議堆棧開放與標簽的通信。

??? 使用支持的標簽技術


處理 NFC 標簽和 Android 設備時,用于讀取和寫入標簽數據的主要格式是 NDEF。當設備掃描包含 NDEF 數據的標簽時,Android 會盡可能支持解析消息并在 NdefMessage 中傳遞。不過,在某些情況下,您掃描的標簽不包含 NDEF 數據,或者 NDEF 數據無法映射到 MIME 類型或 URI。在這些情況下,您需要直接開啟與標簽的通信,并使用您自己的協議(以原始字節形式)對其執行讀寫操作。Android 通過 android.nfc.tech 軟件包對這些用例提供一般性支持,如表 1 中所述。您可以使用 getTechList() 方法確定標簽支持的技術,并使用 android.nfc.tech 提供的類之一創建相應的 TagTechnology 對象

基于主機的卡模擬

許多提供 NFC 功能的 Android 設備已經支持 NFC 卡模擬。在大多數情況下,卡由設備中的一個單獨的芯片(稱為安全元件)模擬。無線運營商提供的許多 SIM 卡也包含安全元件。

Android 4.4 及更高版本提供了一種不涉及安全元件的額外卡模擬方法,稱為“基于主機的卡模擬”。這樣一來,任何 Android 應用都可以模擬卡并直接與 NFC 讀取器通信。本主題介紹了基于主機的卡模擬 (HCE) 在 Android 上的工作原理,以及如何開發使用此技術模擬 NFC 卡的應用。
使用安全元件進行卡模擬
使用安全元件提供 NFC 卡模擬時,要模擬的卡會通過 Android 應用配置到設備上的安全元件中。然后,當用戶將設備靠近 NFC 終端時,設備中的 NFC 控制器會將來自讀取器的所有數據直接路由到安全元件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15292.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15292.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15292.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Redis】 String類型的內部編碼與使用環境

文章目錄 🍃前言🌴內部編碼🎄典型使用場景🚩緩存功能🚩計數(Counter)功能🚩共享會話(Session)🚩驗證碼功能 ?總結 🍃前言 本篇文章重…

Unity-Sprite Atlas+UGUI系統的運行原理

每日一句:別聽世俗耳語,看自己的風景就好 目錄 SA的原理: SA的優點: SA的缺點: DrawCall是什么? 批處理是什么? 我們先了解一下UGUI系統的運行原理吧! 提到圖集優化&#xff0…

cocosCreator動態生成二維碼

cocosCreator 版本:3.7.2 開發語言:typeScript 我們在游戲開發中,經常會生成一個專屬于玩家個人的二維碼,比如說推廣、充值等功能。 接到這個任務,在網上找了下,還是有很多教程的。但是這些教程大部分都是用…

Ollydbg動態分析MessageBoxA輸出hellow world

一、目的 找到main函數找到調用的MessageBoxA函數 測試源碼 #include <iostream> #include <windows.h>int main() {MessageBoxA(NULL, "Hellow World", "Title", MB_OK);return 1; }二、快捷鍵 指令快捷鍵說明RestartCtrlF2重新開始調試S…

buu[HCTF 2018]WarmUp(代碼審計)

buu[HCTF 2018]WarmUp&#xff08;代碼審計&#xff09; 題目 訪問source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

MySQL基礎學習: SET FOREIGN_KEY_CHECKS = 0

文章目錄 一、介紹二、使用方法三、注意事項 一、介紹 在MySQL中&#xff0c;SET FOREIGN_KEY_CHECKS 0; 是一個特殊的命令&#xff0c;用于臨時禁用外鍵約束檢查。這在你執行一些涉及多個表并且可能違反外鍵約束的批量操作時非常有用。 為什么需要禁用外鍵約束檢查&#xf…

電腦鍵盤如何練習盲打?

電腦鍵盤如何練習盲打&#xff1f;盲打很簡單&#xff0c;跟著我做&#xff0c;今天教會你。 請看【圖1】&#xff1a; 【圖1】中&#xff0c;紅色方框就是8個基準鍵位&#xff0c;打字時我們左右手的8個手指就是放在這8個基準鍵位上&#xff0c;F鍵和J鍵上各有一個小突起&…

Spring6基礎筆記

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 輕量級開源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并創立&#xff0c;其目的是用于簡化 Java 企業級應用的開發難度和開發周期。Spring的用途不僅限于服務器端的開發…

mysql圖形化界面及將mysql注冊成后臺程序

安裝圖形化界面版本 右鍵新建數據庫 字符集使用utf8防止以后數據庫中存在中文字符導致亂碼 將mysql注冊成后臺程序 cmd進入命令行界面 切換路徑到cd /mysql/bin 將mysql注冊成后臺程序 mysqld.exe --install mysql1 (失敗&#xff0c;說明沒有權限) 以管理員身份打開成功…

ASP.NET防止流量攻擊的措施

請求速率限制&#xff1a; // 在 Global.asax.cs 文件中 Application_BeginRequest 方法中添加以下代碼 protected void Application_BeginRequest() {// 檢查請求頻率&#xff0c;限制每個 IP 地址的請求次數if (RequestThrottler.IsRequestLimitExceeded(Context.Request.Use…

如何跨過robots協議的限制爬取內容?

在討論如何“跨過robots協議的限制爬取內容”之前&#xff0c;重要的是強調遵循網絡禮儀和法律法規的必要性。robots協議&#xff08;Robots Exclusion Standard&#xff09;是網站所有者向網絡爬蟲&#xff08;包括搜索引擎和其他自動化工具&#xff09;傳達其爬取意愿的一種方…

SYSTEM文件夾介紹(sys文件夾、deley文件夾、USART 文件夾、SysTick、printf函數、fputc函數、半主機模式)

參考 http://t.csdnimg.cn/P9H6x 一、sys文件夾介紹 在上述介紹的 sys 文件夾中&#xff0c;涉及了一些與系統控制、中斷管理、低功耗模式、棧頂地址設置、系統時鐘初始化以及緩存配置等相關的函數。以下是對每個功能的簡要分析&#xff1a; 1.中斷類函數&#xff1a; sys_n…

CCF20230901——坐標變換(其一)

CCF20230901——坐標變換&#xff08;其一&#xff09; #include<bits/stdc.h> using namespace std; int main() {int n,m,x[101],y[101],x1[101],y1[101];cin>>n>>m;for(int i0;i<n;i)cin>>x1[i]>>y1[i];for(int j0;j<m;j)cin>>x[…

uniapp 高德地圖與百度地圖精準定位,高德地圖定位報錯

目前我這邊測試發現的問題 UNIAPP 獲取定位的代碼 在這里插入代碼片 data的參數 data() {return {id: 0, // 使用 marker點擊事件 需要填寫idtitle: map,latitude: 39.909,longitude: 116.39742,covers: [{latitude: 39.909,longitude: 116.39742,width: 50,height: 50,iconPa…

負反饋系統中運放的相位裕度仿真、環路增益的stb仿真

這里沒目錄標題 一、引言二、巴克豪森判據、最壞情況下的相位裕度、相位裕度三、相位裕度與開環&#xff0c;環路&#xff0c;閉環增益的關系四、環路增益、閉環增益和相位的仿真4.1 運放為雙入單出時4.1.1 系統的閉環增益4.1.2 stb仿真系統的環路增益和相位裕度&#xff08;環…

Python項目:數據可視化_下載數據【筆記】

源自《Python編程&#xff1a;從入門到實踐》 作者&#xff1a; Eric Matthes 02 下載數據 2.1 sitka_weather_07-2021_simple.csv from pathlib import Path import matplotlib.pyplot as plt import csv from datetime import datetimepath Path(D:\CH16\sitka_weather_0…

python web自動化(Allure報告)

Allure詳細安裝請看之前的博客 1.Allure配置與?? 運??例&#xff0c;?成allure報告 pip install allure-pytest -i https://mirrors.aliyun.com/pypi/simple/ 運??例&#xff0c;?成allure報告 # main.py import os import pytest if __name__ __m…

SpringBoot如何實現熱部署

熱部署 使用SpringBoot提供的DevTools實現熱部署 原理&#xff1a;實時監控classpath下文件的變化&#xff08;即編譯后的target目錄&#xff09;&#xff0c;如果發生變化則自動重啟 配置&#xff1a;添加DevTools的依賴即可&#xff08;需要開啟IDEA的自動編譯&#xff09…

ROS學習記錄:用C++實現IMU航向鎖定

前言 獲取IMU數據的C節點 在了解了如何獲取到IMU的姿態信息&#xff08;鏈接在上面&#xff09;后&#xff0c;接下來嘗試實現讓一個節點在訂閱IMU數據的時候&#xff0c;還能發布運動控制指令&#xff0c;使機器人能對姿態變化做出反應&#xff0c;達到一個航向鎖定的效果。 …

神奇動物在哪里,但導演是微軟

大數據產業創新服務媒體 ——聚焦數據 改變商業 一說到計算機視覺&#xff0c;大多數人第一時間聯想到的便是“人臉識別”、“自動駕駛“、道路檢測”等跟我們日常生活息息相關的關鍵詞。而在2024年的5月末&#xff0c;微軟在GitHub上面上傳了這樣一個計算機視覺的項目&#x…