码迷,mamicode.com
首页 > 其他好文 > 详细

nfc

时间:2016-01-13 19:27:05      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

NDEF:

NFC Data Exchange Format:NFC数据交换格式,NFC组织约定的NFC tag中的数据格式。他是轻量级的紧凑的二进制格式,可带有URL、vCard和NFC定义的各种数据类型

android nfc中Ndef格式的读写

检测到标签后在Activity中的处理流程

1.在onCreate()中获取NFCAdapter对象

NfcAdapter nfcAdapter=NfcAdapter.getDefaultAdapter(this);

2.在onNewIntent()中获取Tag对象或是NdefMessage信息

获取Tag对象:

Tag tag=intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

获取DeafMessage信息:

Parcelabel[] rawMsgs=getIntent().getParcelabelArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)

3.也可以通过Tag创建Ndef对象等,以实现标签的属性和I/O操作

Ndef ndef=Ndef.get(tag);

 

NDEF格式标签的读取流程

1.在onCreate()中获取NFCAdapter对象;

2.在onNewIntent()中判断是否为NDEF格式标签(ACTION_NDEF_DISCOVERED),若是则获取NdefMessage信息;(需要强制转换成NdefMessage对象)

Parcelabel[] rawMsgs=getIntent().getParcelabelArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)

3.对NdefMessage对象进行解析,获取相关的文本信息或Uri等。

 

NDEF格式标签的写入流程

1.在onCreate()中获取NFCAdapter对象

2.在onNewIntent()中获取tag对象

Tag tag =intent.getparcelabelExtra(NfcAdapter.EXTRA_TAG);

3.通过Tag创建Ndef对象

Ndef ndef=Ndef.get(tag);

4.将文本数据封装成NdefMessage

5.判断是否为NDEF格式标签

若是NDEF格式:

(1)允许进行标签操作:ndef.connect();

(2)调用ndef.writeNdefMessage(NdefMessage)方法写入。

若非NDEF格式:

(1)NdefFromatable format=NdefFromatable.get();

(2)允许进行标签操作:format.connect();

(3)调用ndef.writeNdefMessage(NdefMessage)方法写入。

 

NFC的基本类

Android平台提供了两个android.nfc和android.nfc.tech包,里面有API来实现NFC标签的操作。

android.nfc包主要有4个类:

NFCManager类:可以用来滚利Android设备中指出的所有NFC Adapter,但由于大部分Android设备只支持一个NFC Adapter,可以直接使用getDefaultAdapter方法来获得系统支持的Adapter

NFCAdapter类:本设备的NFC adapter,可以定义Intent来请求江系统检测到tags的提醒发送到你的Activity,并提供发送方去注册前台tag提醒发布和前台NDEF推送

NdefMessage类:NDEF是NFC论坛定义的数据结构,用来有效的存数据到标签中,如文本,URL和其他MIME类型一个NdefMessage扮演一个容器,这个容器存放发送和读到的数据,一个NdefMessage对象包含0或多个NdefRecord,每个NDEF record有一个类型,比如文本,URL等,在NDEFMessage里的第一个NFCRecord的类型用来发送tag到一个android设备的activity

Tag类:表示一个被动的NFC目标,比如tag,card等,可提供对标签的各种操作方法。

 

NFC前台调度

将处理NFC标签的权利交给某个窗口(优先级最高)

1.在onCreate()中获得NFCAdapter对象

2.创建与该Activity关联的PendingIntent

3.指定一个用于处理NFC标签的窗口,通常会在onResume()方法中采用nfcAdapter.enableForegroundDispatch()来实现

4.禁止窗口处理NFC标签,爱用nfcAdapter.disableForegroundDispatch()来实现

 

点对点的数据交换

前台推送技术支持简单点对点的数据交换,可以用enableForegroundNdefPush(Activity,NdefMessage)方法来打开此功能,用这个功能

  • 推送数据的Activity必须是前台Activity
  • 必须将要发送的数据封装到NdefMessage对象里
  • 棘手推送数据的设备必须支持com.android.npp NDEF推送协议

要打开前台推送:

  • 创建一个你要推送给其他NFC设备的包含NdefRecords的NdefMessage
  • 在Activity里实现onResume()和onPause()的回调来正确处理前台推送的生命周期,必须在Activity位于前台并在主线程里调用enableForegroundNdefPush(Activity,NdefMessage)(可以在onResume()里调用来保证这点)

 

nfc

标签:

原文地址:http://www.cnblogs.com/chhom/p/5127880.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!