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

本文介绍了如何在Android中向NFC标签(NDEF格式)写入数据,详细步骤包括创建NdefRecord对象,构建NdefMessage,然后将NdefMessage写入Tag。示例代码展示了如何写入网址和启动应用的操作,揭示了NdefRecord的多功能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

向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  有很多类型,借助于它,可以实现拨打电话,打开应用,打开网址等诸多功能,下面详细介绍各种方式。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值