1. 引言

上一篇文章《Windows 8.1 低功耗蓝牙开发》讲述了如何在Windows 8.1平台上创建低功耗蓝牙应用,并且以TI的Sensor Tag为例,给出了代码步骤和演示。其实当前很多低功耗蓝牙的应用场景是与用户的手机相连接,如TI的Sensor Tag官方就给出了Android和iOS的客户端应用(很遗憾没有Windows Phone版本的,不过现在大家可以去Store上下载个人开发者开发的Sensor Tag应用了,前段时间刚刚出现在美国区的市场了)。再比如小米刚刚出的79块钱的手环,也是通过低功耗蓝牙与Android设备连接。今天,让我们来看一看如何在Windows Phone 8.1上开发低功耗蓝牙的应用。

2. 设备

Windows Phone 8的大部分设备从硬件上是支持蓝牙4.0 BLE的,前提是系统必须升级,以Lumia设备为例,需要在Black以上。而且,从Build大会上的消息来看,目前大部分开发者的Developer Preview系统在软件上是不支持蓝牙4.0 BLE的。不过昨天刚刚在中国举办的Windows Phone 8.1 Update 1表明,1520、1320、1020等设备马上就要迎来这次关键的系统更新,更新以后就可以开发蓝牙4.0 BLE应用了。另外,已经在市场上可以买到了Lumia 630和Lumia 930是原生的Windows Phone 8.1系统,他们是支持蓝牙4.0 BLE的。这里,我使用的是Lumia 630的设备,系统版本号是8.10.12359.845。

蓝牙设备用的是Nokia Treasure Tag,淘宝上有卖,国内好像没有出行货。对于这个小东西,我想很多人可能不知道。其实,这个东西对于那些马虎爱丢东西的人比较有用,我们可以把车钥匙挂在上面,或者把它和钱包等重要的东西放在一起,同时与手机通过蓝牙连接起来,只要这个Tag与手机之间的距离超过一定范围,手机和Tag就会发出警报提醒用户。而当手机和 Treasure Tag 距离非常远的时候,可以通过 HERE 地图定位出位置。Store中有专门的应用Nokia Treasure Tag,用于实现上述功能。下面给出实验用到的设备,左边的是Treasure Tag,中间的是Lumia 630,右边的是待追踪的钥匙,如图1所示。

图1

3. 准备

如果在Windows Phone上第一次使用Treasure Tag,我们需要进行配对,第一次使用配对成功以后,后面就不需要再进行这个操作了。首先,在设置->蓝牙中打开蓝牙,等待Nokia Proximity Sensor的出现,然后点击配对,PIN码是0000.如下图2所示。

图2

连接以后,我们就可以创建应用了。

4. 创建应用

关于Nokia Treasure Tag的应用程序处理,可以参考今年Build大会上的课程《Building Great Bluetooth Apps for Windows Phone》,目前在Channel9上可以看到这个视频。这个视频所对应的代码也可以在msdn的code sample网页上找到:Keep The Keys (Bluetooth LE)。源代码工程包含三个项目:KeepTheKeys、KeepTheKeysBackground和KeepTheKeysCommon。

需要注意的地方有以下几点:

4.1在应用的Package.appxmanifest文件中,添加以下Capabilities,因为这个和Treasure Tag的蓝牙通信有关:

<Capabilities>

<m2:DeviceCapability Name="bluetooth.genericAttributeProfile">

<m2:Device Id="any">

<m2:Function Type="serviceId:1803" />

</m2:Device>

</m2:DeviceCapability>

</Capabilities>

4.2 后台任务

关于Treasure Tag的任务,是以后台方式运行的,这个工程是winmd的工程.

4.3 在main project中需要添加对这个后台任务的引用,如下图3所示。

图3

4.4 在Package.appxmanifest文件的Application中,将"Toast capable" 设置为"Yes",因为应用要用到Toast消息,如下图4所示。

图4

4.5 在Package.appxmanifest文件的Declarations中,添加"Background Task"这一项,设置其EntryPoint为"KeepTheKeysBackground.KeyFobTask",如下图5所示。

图5

4.6 Treasure Tag中提供的服务是GATT Service中标准的LinkLoss服务,并不包含如TxPower等等其他服务。

应用程序运行以后,主页面显示的是设备页面,即蓝牙能够搜索到的当前BLE 4设备,如下图6所示。

图6

点击其中的Nokia Proximity Sensor,进行报警的设置。如下图7所示。

图7

在Tag远离手机以后,Tag端会发出声音提示。手机端也会在Action Center中出现消息,如下图8所示。

图8

资源:

1. Channel 9:Building Great Bluetooth Apps for Windows Phone

2. MSDN Code Sample:Keep The Keys (Bluetooth LE)

3. Windows Store:Nokia Treasure Tag

Windows Phone 8.1低功耗蓝牙开发-Nokia Treasure Tag的更多相关文章

  1. Windows 8.1 低功耗蓝牙开发

    1. 概述 在蓝牙4.0发布以前,给大家的直观印象就是蓝牙耳机,它就是用来满足短距离内中等带宽的音频通信需求.然而蓝牙4.0发布之后,用途就大不一样了,特别是现在物联网和可穿戴之风盛行的年代,很多小玩 ...

  2. 物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探

    物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探 唐朝实验室 · 2015/10/30 10:22 Author: FengGou 0x00 目录 0x00 目录 0x01 前言 0x02 BLE概 ...

  3. NRF52833蓝牙5.1可用于105℃环境温度的Nordic蓝牙5.1 SoC能实现更广泛的并发多协议低功耗蓝牙、mesh和Thread应用

    Nordic Semiconductor宣布推出nRF52833先进多协议系统级芯片(SoC),这是其广受欢迎且验证通过的nRF52系列的第五个新成员.nRF52833是一款功耗超低的低功耗蓝牙 (B ...

  4. 低功耗蓝牙4.0BLE编程-nrf51822开发(9)

    Android 4.3以后的系统自动支持蓝牙4.0规范的低功耗蓝牙(BLE).在android4.3之前,蓝牙4.0支持是由手机厂家加入支持的,接口各异,导致开发一个支持蓝牙4.0程序支持市面上的手机 ...

  5. Android低功耗蓝牙(BLE)开发的一点感受

    最近一段时间,因为产品的需要我做了一个基于低功耗蓝牙设备的Android应用,其中碰到了一些困难,使我深深体会到Android开发的难处:不同品牌,不同型号和不同版本之间的差异使得Android应用适 ...

  6. 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体 ...

  7. Android 低功耗蓝牙BLE 开发注意事项

    基本概念和问题 1.蓝牙设计范式? 当手机通过扫描低功耗蓝牙设备并连接上后,手机与蓝牙设备构成了客户端-服务端架构.手机通过连接蓝牙设备,可以读取蓝牙设备上的信息.手机就是客户端,蓝牙设备是服务端. ...

  8. Android低功耗蓝牙(蓝牙4.0)——BLE开发(上)

    段时间,公司项目用到了手机APP和蓝牙设备的通讯开发,这里也正好对低功耗蓝牙(蓝牙4.0及以后标准)的开发,做一个总结. 蓝牙技术联盟在2010年6月30号公布了蓝牙4.0标准,4.0标准在蓝牙3.0 ...

  9. 【转】Android低功耗蓝牙应用开发获取的服务UUID

    原文网址:http://blog.csdn.net/zhangjs0322/article/details/39048939 Android低功耗蓝牙应用程序开始时获取到的蓝牙血压计所有服务的UUID ...

随机推荐

  1. 附录E 安装Kafka

    E.1   安装Kafka E.1.1    下载Kafka Kafka是由LinkedIn设计的一个高吞吐量.分布式.基于发布订阅模式的消息系统,使用Scala编写,它以可水平扩展.可靠性.异步通信 ...

  2. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  3. 相克军_Oracle体系_随堂笔记009-检查点队列

    1.检查点队列 checkpoint queue RBA 日志块地址 redo block address LRBA 第一次被脏的地址 HRBA 最近一次被脏的地址 on disk rba 重做日志( ...

  4. js制作点击会自动隐藏的导航栏(固定在在头部的)

    想必大家应该见过这样的特效,本来头部是固定在网页的最上方的,点一下缩进去,再点一下 又可以缩回来,这种效果怎么实现的呢,我今天就做了一个.菜鸟勿喷. @charset "utf-8" ...

  5. FineUI Grid控件高度自适应

    引言 页面里使用f:Grid控件,添加分页功能,然后高度填充整个页面. 如何使用 使用FineUI 控件的每个页面都有一个f:PageManager控件,它包含属性:AutoSizePanelID,设 ...

  6. 会务准备期间材料准备工作具体实施总结 ----(vim技巧应用, python信息提取与整合, microsoft word格式调整批量化)

    会务准备期间材料准备工作具体实施总结(vim, python, microsoft word) span.kw { color: #007020; font-weight: bold; } code ...

  7. Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室)

    简介       ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端 ...

  8. 第一篇:Entity Framework 简介

    先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架.要开发O ...

  9. C# 工作中遇到的几个问题

    C#  工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...

  10. PHP资源网站收藏

    PHP之道 http://laravel-china.github.io/php-the-right-way/#use_the_current_stable_version http://www.ph ...