Windows 8 Metro 学习笔记(十六)--NFC

NFC(Near Field Commuciation),近距离无线通讯技术,是一种短距离的高频无线通讯技术。那不禁想到它与Bluetooth蓝牙有什么区别呢?
在网上查询了一下,区别大概分为以下几点:
(1)传输距离
   NFC的传输距离一般为10cm,而Bluetooth的传输距离可以达到10米
(2)配置
   NFC不需要手动设置匹配,直接将两部设备碰触一下即可;Bluetooth需要单独设置和匹配
(3)适用场合
   NFC的适用场景比较多,如支付、打卡、刷卡等;Bluetooth的适用场景就比较局限

NFC对应的WinRT API--Windows.Networking.Proximity
PeerFinder
通过该类可以实现去发现附近的设备并与之创建socket连接,发送接收信息。
 PeerFinder.TriggeredConnectionStateChanged += new TypedEventHandler<object, TriggeredConnectionStateChangedEventArgs>(TriggeredConnectionStateChangedEventHandler);
PeerFinder.ConnectionRequested += new TypedEventHandler<object, ConnectionRequestedEventArgs>(PeerConnectionRequested); 

PeerFinder.Start();
IReadOnlyList<PeerInformation> _peerInformationList=await PeerFinder.FindAllPeersAsync();
StreamSocket _socket = await PeerFinder.ConnectAsync(peerToConnect);

首先注册两个事件:
TriggeredConnectionStateChanged :用于跟踪与远程机触碰期间的一个连接状态
ConnectionRequested: 当远程机有连接请求时触发
调用相应的方法:
FindAllPeersAsync():浏览所有在无线区域范围内运行相同APP的同等计算机
await PeerFinder.ConnectAsync():与范围内的同等计算机相连接

 

ProximityDevice
可以发送消息或订阅消息至直接的设备,即发送一消息,然后与另一设备触碰一下,别一设备即可收到相应的消息
事件:
DeviceArrived: 当在近距离范围内有设备进入时触发
DeviceDeparted: 当在近距离范围内有设备移出时触发

 

//先实例化一个ProximityDevice对象,并激活
ProximityDevice _proximityDevice=ProximityDevice.GetDefault();
//发送消息,当然发送方法有很多重载,可以发送字符,可以发送二进制流,可以发送Uri
long _publishedMessageId = _proximityDevice.PublishMessage("Windows.SampleMessageType", publishText);

 

//另一设备与执行subscribe方法,即可获得消息
long _subscribedMessageId = _proximityDevice.SubscribeForMessage("Windows.SampleMessageType", MessageReceived);
 void MessageReceived(ProximityDevice proximityDevice, ProximityMessage message)
        {
            if (message.MessageType == "StringMessage")
            {
                string mes = message.DataAsString;
            }
            else if(message.MessageType=="BufferMessage")
            {
                IBuffer buffer = message.Data;
            }
        }
 当然还有其它的属性和方法,这里就不一一试了,做一个完整的Demo流程,测试一下还是挺好玩的。
PeerFind:使用这个对象需要先寻找,连接,然后进行传输信息
ProximityDevice:这种方式相对简单些,一端发送消息,另一端只要subscribe就可获得消息,但前提是距离得相当地近。

 

如果您对该技术有更深的理解也希望能指点下哦~

posted on 2012-07-13 14:34  ShinyTang  阅读(3056)  评论(4编辑  收藏  举报

导航

作者:LucyTangLucyTang's Blog on 博客园
出处:http://www.cnblogs.com/jing870812/

本作品由LucyTang创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言