2011年7月10日 星期日

[Android] 簡單範例: NFC Push

Nfc

想不出啥好idea來利用NFC, 所以呢, 身體力行勝於一切, 寫隻小範例體驗一下比較真切, 所幸Android NFC API並不難, 從研究API到寫出這個範例, 比我畫上面那張圖花的時間還更短....

接收的範例已經有了NFC Demo, 而且我比較想體驗一下P2P的狀況, 所以就寫了隻push的範例

這範例的功能如:

Idea

功能很簡單: 在Browser瀏覽網頁時按下Menu->Share page->NFC Push demo, 然後拿另一支NFC裝置來讀取分享的頁面, 因此這一頁面需要能透過NFC push去發送一個含有欲分享的URL的Message

首先要讓這隻程式支援NFC, 在AndroidManifest.xml有三個必要的要素:

  1. SDK level >= 10: <uses-sdk android:minSdkVersion="10" />
  2. NFC feature : <uses-feature android:required="true" android:name="android.hardware.nfc"></uses-feature>
  3. Permission for NFC: <uses-permission android:name="android.permission.NFC"></uses-permission>

然後我們必須要一個Activity來支援URL的發送, 這個URL要包裝成NdefMessage

NdefRecord rec = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, NdefRecord.RTD_URI, new byte[0],share.getBytes());

new NdefMessage(new NdefRecord[]{rec})

要支援push, 只需要在onResume時使用enableForegroundNdefPush就可以了, onPause記得把它disable (沒disable會怎樣? 我碰到狀況是, 沒disable, 可能連之後讀取似乎都有問題) , 文件裡面是說要在main thread裡呼叫, 但試驗結果是, 也不能放在onCreate

Android API 網站上有一篇介紹NFC的, 還算蠻簡單的

完整的範例程式在此