Android硬件编程NFC学习笔记(3)

向NDEF格式的Tag内写入数据:

NDEF格式的数据简单来说封装在一个NdefMessage里面,而一个NdefMessage里面包括一个或者多个NdefRecord,每个NdefRecord存储一种类型的数据,是一条独立的记录。在向Tag写入数据的时候,

1. 构建NdefRecord对象,将需要写入的数据传到NdefRecord中去。

NdefRecord nedfRecord = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI,
               "http://www.sohu.com".getBytes(Charset.forName("US-ASCII")),
               new byte[0], new byte[0]);

2.将NdefRecord添加到NdefMessage中去

 NdefMessage ndefMsg = new NdefMessage(nedfRecord);

3.将NdefMessage 写入到Tag中。

Tag tag = in.getParcelableExtra(NfcAdapter.EXTRA_TAG);
       Ndef ndef = Ndef.get(tag);

 ndef.writeNdefMessage(ndefMsg);


这样就基本完成了数据的写入。

下面是一个完整的写入方法:

 private void writeNdefToTag(Intent in){
       Tag tag = in.getParcelableExtra(NfcAdapter.EXTRA_TAG);
       Ndef ndef = Ndef.get(tag);
       try {
           ndef.connect(); 


           //创建若干条NdefRecord,每个NdefRecord包含一条记录,让后将NdefRecord数组传递给NdefMessage,再将NdefMessage写入Tag
           
           //写入网址
           NdefRecord nedfRecord = new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI,
               "http://www.sohu.com".getBytes(Charset.forName("US-ASCII")),
               new byte[0], new byte[0]);
           //打开应用
           NdefRecord nedfRecord2 = new NdefRecord( NdefRecord.TNF_MIME_MEDIA ,
                   "application/com.android.TyNfcTest".getBytes(Charset.forName("US-ASCII")),
                   new byte[0],  "com.android.yufeimusic".getBytes(Charset.forName("US-ASCII")));
           NdefMessage ndefMsg = new NdefMessage(nedfRecord);
           ndef.writeNdefMessage(ndefMsg);
       } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (FormatException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
   }


NdefRecord  有很多类型,借助于它,可以实现拨打电话,打开应用,打开网址等诸多功能,下面详细介绍各种方式。



你可能感兴趣的:(android,NFC)