ANDROID NFC笔记86

来源:互联网 发布:c语言switch用法 编辑:程序博客网 时间:2024/05/16 04:51

http://3y.uu456.com/bp_0s5p28q5cd68ub00wpik_1.html

问题arduino是用MIME或者是URI两者都;手机之间才能MIME和;URI,我这个是ARDUINO比较特殊,没有这样;NFCADVANCE;来写;android.nfc;ProvidesaccesstoNearFiel;readNDEFmessageinNFCtags;tag.;Here'sasummaryoftheclass;这允许我们得到对应的服务


问题arduino是用MIME或者是URI两者都不是我用 NFC自己写咯?恩,是这样的,因为一般

手机之间才能MIME 和

URI,我这个是ARDUINO比较特殊,没有这样的协议,所以只能别

NFCADVANCE

来写

android.nfc

Provides access to Near Field Communication (NFC) functionality, allowing applications to

read NDEF message in NFC tags. A "tag" may actually be another device that appears as a

tag.

Here's a summary of the classes:

这允许我们得到对应的服务,然后获取

adapter This represents the device's NFC adapter, which is your entry-point to performing NFC

这是我们操作NFC的入口

Represents an NDEF data message, which is the standard format in which "records"

carrying data are transmitted between devices and tags. Your application can receive

data being shared and carries the data itself.

Note:

Not all Android-powered devices provide NFC functionality.

NFC tag

标签-指的是被外界device扫描时,device判断是否触发相应的activity的一种标识

API9API10的话可以用Reader/Writer支持来获取NDEF Messages

API14更简单的push NDEF messages给别的device,只需通过Android beam和一些别的更

方便的方法来创建NDEF Record

让我们定义NFC enable,从而能操作手机的access

我们加下面这句话就是当我们在android市场卖我们的产品,会指示必须有nfc支持才能使用

还有什么样的标签启动,mime才启动这样

a MIME type of text/plain指纯文本

The following example filters for a URI in the form

of http://developer.android.com/index.html.

The following example filters for a URI in the form

of http://developer.android.com/index.html.

其实上面的intent-filter就是过滤掉别的,保留intent,就是接触到intent发来的信息先考虑

启动,和logcat的system.out一样

从intent中获取信息

如果一个activity是因为NFC intent启动的话,

一个intents能包含如下extras信息

EXTRA_TAG(必须的):代表被扫描的Tag对象

EXTRA——NDEF——MESSAGES(optional):一个从tag中扫描得到的NDEF messages的

数组

下面那个程序的话就是当ACTION_NDEF_DISCOVERED被检测了,从intent exra中得到

NDEF messages

上面是class NfcAdapter的

我觉得EXTRA的都是通过intent方法来获取的

我们能通过下面方法来获得tag对象

Creating Common Types of NDEF Records

现在说明怎么创建 NDEF record的common types 来实现写到NFC 标签上来传递数据通过Android的Beam.也会描述如何为对应的记录record创建对应的intent filter.所有的NDEF record的例子应该要是NDEF message的第一个写到标签tag或beam第一个记录NDEF record

TNF_ABSOLUTE_URI


2



theintentfilterwouldlook;同理;TNF_MIME_MEDIA;第一个参数传输方式,tnf多媒体传输;第二个type类型,传输类型;第三个,传输id,每个recode一个唯一id;第四个,payload,就是要传的东西thein;TNF_WELL_KNOWNwithRTD_TE;theintentfilterwouldlook;Andr


the intent filter would look like this: ,xml也要声明

同理

TNF_MIME_MEDIA

第一个参数 传输方式,tnf多媒体传输

第二个type类型,传输类型

第三个,传输id,每个recode一个唯一id

第四个,payload,就是要传的东西

the intent filter would look like this:

TNF_WELL_KNOWN with RTD_TEXT

the intent filter would look like this:

Android Application Records

API level14 ,提供一个更强的准确性当NFC tag被扫描了

详细请看

文档里有

Beaming NDEF Messages to Other Devices

从一个NDEF给另外一个仪器发送消息

Android Beam允许简单的两台Android-powered仪器实现点对点的对传,这个应用想要把beam数据传到另外个仪器的话那必须再前台运行而且没有被锁的情况下,当两个已经靠近,beam device会显示 “Touche to Beam”的UI,用户可以选择是否接收数据

注意 前台

NDEF pushing再API10时可用,它提供像Android Beam的类似功能,但现在已经被废弃了

我们可以enable Android Beam for your application by calling one of the two methods:

? beam. Automatically beams the message when two devices are in close enough proximity. 这个方法不用咨询用户

setNdefPushMessageCallback(): Accepts a callback that contains a createNdefMessage()which is called when a device is in range to beam data to. The callback lets you create the NDEF message only when necessary靠近时会有反馈,告诉用户是否要连接,注意上面两个指接受msg beam出,并没有开始

用Android Beam还要注意下面的指引

activity必须要在前台显示出来,而且屏幕解锁(screens unlocked)

必须封装数据到NdefMessage对象上

接收NFC那台被beamed的device必须支持com.android.npp的NDEF push protocol 或者NFC Forum的SNEP (Simple NDEF Exchange Protocol).

note:如果有Beam的activity在前台,然而standard intent dispatch system是disable的,但个

activity一次只能push一个NDEF message,所 setNdefPushMessageCallback() takes

precedence

是,只要activity enables了foreground dispatching,那么他还是能扫描对应的intent filters set的tag的

enable Android beam的方法是

1. 创建个NdefMessage对象为了push到别的仪器上(下面的例子是通过写个function)

2. Call

用setNdefPushMessage() with a NdefMessage或

者in

setNdefPushMessageCallback passing with Android Beam,伴着一个可选择activities那个acitivate的列表? the onCreate() method of your activity. 这两个函数要求至少一个activity能enable

3. 通常用setNdefPushMessage(),用setNdefPushMessageCallback是党你的应用要照顾到当前应用context

下面给出个怎么实现简单的 activity能 NfcAdapter.CreateNdefMessageCallback在in the onCreate()方法中

源代码可以再

下载

This example also has methods to help you create a MIME record:

//结束进程

finish();

return;

}

// Register callback

//为什么是this this???????? 首先它是enable这个class是先beam,但两个this原因不清楚

mNfcAdapter.setNdefPushMessageCallback(this, this);

}

//因为 继承了public static interface.NfcAdapter.CreateNdefMessageCallback ,所以要重写里面

的CreateNdefMessage方法

(NfcEvent event)

Called to provide a NdefMessage to push.


3



//把字符串转换成字节:publicbyte[];public;voidsetNdefPushMessageCa;传递NFC之前;public;voidsetOnNdefPushComplet;callback,activity,activi;Setthecallbackonasuccess;就是当成功传递到NFC后继续反馈;


//把字符串转换成字节 :public byte[] getBytes () or public byte[] getBytes ( charset)

public

void setNdefPushMessageCallback ( callback, activity, activities)

传递NFC之前

public

void setOnNdefPushCompleteCallback (

callback, activity, activities)

Set the callback on a successful NDEF push over NFC.

就是当成功传递到NFC后继续反馈


0 0
原创粉丝点击