Android讀寫NFC的步驟:
1.首先要在AndroidManifest.xml中宣告如下配置資訊:使用<uses-permission>元素允許裝置訪問NFC硬體:<uses-permission android:name="android.permission.NFC" />
2.使用<uses-sdk>元素設定最小SDK版本:<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
3.NFC TAG的釋出系統:當android裝置掃描到一個NFC標籤時,會自動尋找最適合的Activity來處理這個TAG,如果有多個Activity滿足條件的話,會讓使用者來選擇到底使用哪一個Activity來處理,可以理解為就是簡單的事件響應與事件處理。
4.如何讓一個Activity監聽 ”當掃描到NFC標籤時” 的這一個事件呢?使用intent filter。可以理解為當檢測到一個NFC標籤時,系統自動建立一個相關的Intent物件,含有響應intent filter的Activity將處理這個Intent。其中,intent filter宣告如下:<intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" ></action> <category android:name="android.intent.category.DEFAULT" ></category> <data android:mimeType="text/plain" ></data> </intent-filter>
5.讀取NFC標籤中NDEF格式的文字資訊:先判斷手機支不支援NFC功能,若支援,是否已設定開啟狀態。@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_write); nfcTView=(TextView)findViewById(R.id.info_tv); nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) { nfcTView.setText("裝置不支援NFC!"); finish(); return; } if (nfcAdapter!=null&&!nfcAdapter.isEnabled()) { nfcTView.setText("請在系統設定中先啟用NFC功能!"); finish(); return; } }
6.讀取NFC卡的內容private boolean readFromTag(Intent intent){ Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage mNdefMsg = (NdefMessage)rawArray[0]; NdefRecord mNdefRecord = mNdefMsg.getRecords()[0]; try { if(mNdefRecord != null){ readResult = new String(mNdefRecord.getPayload(),"UTF-8"); return true; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); }; return false; }
Android讀寫NFC的步驟:
1.首先要在AndroidManifest.xml中宣告如下配置資訊:使用<uses-permission>元素允許裝置訪問NFC硬體:<uses-permission android:name="android.permission.NFC" />
2.使用<uses-sdk>元素設定最小SDK版本:<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" />
3.NFC TAG的釋出系統:當android裝置掃描到一個NFC標籤時,會自動尋找最適合的Activity來處理這個TAG,如果有多個Activity滿足條件的話,會讓使用者來選擇到底使用哪一個Activity來處理,可以理解為就是簡單的事件響應與事件處理。
4.如何讓一個Activity監聽 ”當掃描到NFC標籤時” 的這一個事件呢?使用intent filter。可以理解為當檢測到一個NFC標籤時,系統自動建立一個相關的Intent物件,含有響應intent filter的Activity將處理這個Intent。其中,intent filter宣告如下:<intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" ></action> <category android:name="android.intent.category.DEFAULT" ></category> <data android:mimeType="text/plain" ></data> </intent-filter>
5.讀取NFC標籤中NDEF格式的文字資訊:先判斷手機支不支援NFC功能,若支援,是否已設定開啟狀態。@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_write); nfcTView=(TextView)findViewById(R.id.info_tv); nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) { nfcTView.setText("裝置不支援NFC!"); finish(); return; } if (nfcAdapter!=null&&!nfcAdapter.isEnabled()) { nfcTView.setText("請在系統設定中先啟用NFC功能!"); finish(); return; } }
6.讀取NFC卡的內容private boolean readFromTag(Intent intent){ Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage mNdefMsg = (NdefMessage)rawArray[0]; NdefRecord mNdefRecord = mNdefMsg.getRecords()[0]; try { if(mNdefRecord != null){ readResult = new String(mNdefRecord.getPayload(),"UTF-8"); return true; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); }; return false; }