1. 程式人生 > >Android中NFC功能流程圖解析及程式碼演示『轉』

Android中NFC功能流程圖解析及程式碼演示『轉』

在Android4.0推出的時候,一個非常引人注目的功能就是NFC(Near Field Communication).

Near Field Communication (NFC) is a set of short-range wireless technologies, typically requiring a distance of 4cm or less to initiate a connection. NFC allows you to share small payloads of data between an NFC tag and an Android-powered device, or between two Android-powered devices.

翻譯:
近場通訊(NFC)是一系列短距離無線技術,一般需要4cm或者更短去初始化連線。近場通訊(NFC)允許你在NFC tag和Android裝置或者兩個Android裝置間共享小負載資料。

典型的應用為刷卡應用,如刷信用卡,公交車卡,吃飯的飯卡之類。騰訊2011年1月份文章“Android首款NFC近場通訊應用推出”,說明了基於Android的NFC應用目前已經有了,得益於日本在手機刷卡的應用氛圍。據2011年7月網易文章“PayPal推出Android系統NFC移動支付服務”報道,PayPal已經做了嘗試了,相信這股風很快要刮到中國。

下面我們從技術的層面來分析一下這個技術。

官方的圖片示例為:

相關的類程式碼有:NfcAdapter,NdefMessage, NdefRecord,ACTION_TAG_DISCOVERED.
在功能層面上,涉及到了NFC的讀寫功能。下面我們分別來做總結。
在程式碼層上面:

使用的時候,需要在AndroidManifest.xml裡面加一些許可權以及屬性。

<uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc"
android:required="true" /> <uses-sdk android:minSdkVersion="10"/>

這裡注意,在Android Version 9的時候僅僅支援了ACTION_TAG_DISCOVERED,對於其他的需要10以上。

在上面的基礎上,還需要增加intent-filter的支援。

<intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> </intent-filter>

獲取NfcAdapter的程式碼為:

public static String getStatusNfcDevice () { NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(); if (nfcAdapter.isEnabled()) { String status = "enabled"; return status; } else { String status = "disabled"; return status; } }

處理函式為

public void onResume() { super.onResume(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMsgs != null

相關推薦

AndroidNFC功能流程圖解析程式碼演示

在Android4.0推出的時候,一個非常引人注目的功能就是NFC(Near Field Communication). Near Field Communication (NFC) is a set of short-range wireless tech

Android三種常用解析XML的方式(DOM、SAX、PULL)簡介區別

字符串 lan win name屬性 Coding 空間 toc log fin XML在各種開發中都廣泛應用,Android也不例外。作為承載數據的一個重要角色,如何讀寫XML成為Android開發中一項重要的技能。今天就由我向大家介紹一下在Android平臺下幾種常見的

Android Design: 九種常見Activity程式碼解析之"Navigation Drawer Activity"

Navigation Drawer Activity 如果我們是直接new一個“Navigation Drawer Activity”,自動生成的程式碼如下: NavigationDrawerActivity.java public class NavigationDra

Android 上層wifi簡單介紹程式碼演示

閒來無事,研究一下Android的wifi模組。 涉及到的類: *1.WifiManager:管理wifi連線的service,可由getSystemService(Context.WIFI_SERVICE)獲取* *2.ScanResult:包含wifi的SSID、B

Android工程師開發iOS之與Android對應功能的控制元件

iOS中和安卓控制元件應用還是差不的,從控制元件的命名上我們就能看出來,下面來介紹一下吧: ios中UILabel 對應Android 中TextView ios中UIImage對應Android 中ImageView 圖片控制元件 ios中UIButton對應An

TextView+SpannableString實現Android富文字的顯示點選衝突解決

前言 最近專案中需要實現一個文章跟讀效果的顯示,還要能夠點選文章中的單詞能夠彈出對話方塊顯示單詞的英美髮音,那麼如何實現這樣的需求呢?當然是利用SpannableString啦,下面就結合專案中使用到的和參考其他部落格的成果,整理一下常用的用法吧。 SpannableString其

K-means演算法解析程式碼

上週看到K-means演算法,覺得挺有意思的,然後就分析了一下原理,又用JAVA實現了一下,水平有限,還請看到此部落格的各路大神, 如果看到有誤的地方,還請幫我糾正一下。 我給這個演算法的定義:根據某種規則,將相同的或者相近的物件,存放到一起。 基本原理: 1.定義幾個初始點當做基準

deformable convolution(可變形卷積)演算法解析程式碼分析

可變形卷積是指卷積核在每一個元素上額外增加了一個引數方向引數,這樣卷積核就能在訓練過程中擴充套件到很大的範圍。 可變形卷積的論文為:Deformable Convolutional Networks【1】 而之前google一篇論文對這篇論文有指導意義:Spatial

Android判斷網路是否可用的程式碼_大企鵝

這篇文章主要介紹了Android中判斷網路是否可用的程式碼分享, 本文直接給出實現程式碼,需要的朋友可以參考下 獲取網路資訊需要在AndroidManifest.xml檔案中加入相應的許可權: <uses-permission android:nam

如何有效的清除Android無用的資源(靜態程式碼分析)

最近公司要做這個,簡單調研了一下,現有的大多數部落格也比較舊了,不太合適,總結了這麼幾個方式吧,一起來學習下。 為什麼要清除Android中這些資源呢 是這樣的,今天收到的郵件裡,有這麼一條任務: 資源優化 軟體中無用的圖片和佈局檔案,找到並驗證是否無用. 這個需要設計一套工具進行分析(自

Android繪製圓角矩形圖片任意形狀圖片

package com.example.phototest; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactor

JAVA以及JSP讀取XML檔案(解析路徑問題)

    在系統開發過程中,從配置檔案中讀取配置資訊是每一個系統必須具備的功能,例如,我們要配置讀取資料庫配置資訊,包括驅動程式名、連線字串,使用者名稱,口令等資訊,由於這些資訊會隨著使用者的不同而發生

Android執行緒的建立啟動

 Android中執行緒的型別為Thread型別,我們在構建執行緒物件時通常會參考如下構造方法? 1)Thread(): 構建Thread類子類物件,然後重寫run方法; 2)Thread(Runnable r):採用此方式構建物件必須傳入一個Runnble型別的物件。

Android的DrawRect()引數解析

官方文件中的定義: drawRect(float left, float top, float right, float bottom, Paint paint) Draw the specif

Android三級快取實現原理LruCache 原始碼分析

介紹 oom異常:大圖片導致 圖片的三級快取:記憶體、磁碟、網路 下面通過一張圖來了解下三級快取原理: 程式碼: public class Davince { //使用固定執行緒池優化 private static Exec

ERC20藏品合約標準解析程式碼實現

我們可以用以太坊智慧合約來模擬稀有的收藏品,每一個通證都遵循以太坊ERC-721標準, 它是DieterShirley在2017年末提出的以太坊改進建議書。ERC721可以使智慧合約像類似於 ERC20代幣一樣進行交易, 區別在於,ERC721通證是獨一無

Unity3d筆記:爐石傳說功能實現解析

播放片頭動畫:在void OnGUI()中用GUI.DrawTexture()方法顯示視訊,用GUI.Label()顯示提示;Start()中使用MovieTexture().Play()方法播放視訊。此介面互動分兩種情況:點選一次彈出提示,再點選一次退出視訊;動畫自動播

android 非同步訊息處理機制Handler

這時就需要Handler了,修改MainActivity如下:public class MainActivity extends AppCompatActivity { public static final int UPDATE_TEXT =1 ; @Override protec

Android broadcast 註冊過程解析

來源: 前言: 本文主要解析Android 中廣播的註冊過程,其中包括動態廣播的註冊和靜態廣播的註冊。 靜態廣播:一般是在AndroidManifest.xml 中註冊,在PMS 會進行解析(詳見 android PMS 如何解析 APK)。 動態廣播:一般通

androiddrawable資源的解釋例子

        文章中的內容參考Dev Guide中的Drawable Resources,英文好的朋友可以直接去讀英文。總結這篇文章的目的是自己在使用drawable資源遇到一些問題跟大家分享下,同時整理下自己對drawable的理解。         drawable資