ANDROID NFC笔记86
来源:互联网 发布:c语言switch用法 编辑:程序博客网 时间:2024/05/16 04:51
问题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后继续反馈
- ANDROID NFC笔记86
- android NFC学习笔记
- 【Android】NFC学习笔记
- android NFC学习笔记
- Android NFC学习笔记
- android NFC学习笔记(一)
- android NFC学习笔记(一)
- android NFC学习笔记(一)
- android NFC学习笔记(一)
- android NFC学习笔记(二)
- android NFC学习笔记(三)
- Android NFC 学习笔记与总结
- android NFC学习笔记(二)
- android NFC学习笔记(三)
- android NFC学习笔记(二)
- android NFC学习笔记(三)
- android NFC学习笔记(二)
- android NFC学习笔记(三)
- 1018
- 解决http://wthrcdn.etouch.cn/weather_mini?city=接口获取天气的返回字符串是乱码
- 远程windows主机 ping 不通
- java连接池
- Ubuntu桌面管理器
- ANDROID NFC笔记86
- 只读存储器和闪速存储器
- Linux下环境变量的设定以及配置文件的修改
- 敏捷开发在项目中的应用心得
- Spanned.SPAN_EXCLUSIVE_EXCLUSIVE的含义
- open_basedir restriction in effect. File() is not within the allowed path(s)
- T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
- html 定位
- 最简单的WebRTC示例