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
|