您的位置:首页 > 移动开发 > Android开发

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

2014-03-26 13:14 211 查看
向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  有很多类型,借助于它,可以实现拨打电话,打开应用,打开网址等诸多功能,下面详细介绍各种方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nfc android