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. 【记录】AutoMapper Project To OrderBy Skip Take 正确写法

    AutoMapper:Queryable Extensions 示例代码: using (var context = new orderEntities()) { return context.Ord ...

  2. MySQL入门04-MySQL主从配置

    1.主节点授权同步用户 2.主节点修改配置文件 3.从节点修改配置文件 4.主节点锁定后查看状态 5.从节点配置并启动同步.查看状态 6.主节点解锁并验证从节点是否正常同步 环境:CentOS 6.7 ...

  3. java多线程--几个多线程面试题小结

    自学了一段时间的多线程知识,尝试了做了几个编程题,发现想象中很简单的功能,自己真写起来要花费远超自己想象的功夫,知识点易学,不易用啊. 面试题1:编写程序实现,子线程循环10次,接着主线程循环20次, ...

  4. Tomcat服务器本地的搭建,以及在 IDEA软件下的配置,以及项目的测试运行(基于supermvc框架下的web)

    一.声明 使用了基于springmvc的supermvc的web框架.实习公司的框架. 二.tomact的下载与安装 1选择适合自己电脑配置的jdk和jre版本(截图来自tomcat的官方网站http ...

  5. PHP CURL CURLOPT参数说明(curl_setopt)

    CURLOPT_RETURNTRANSFER 选项: curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 如果成功只将结果返回,不自动输出任何内容. 如果失败返回F ...

  6. Bootstrap 3.0正式版发布!

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包,包含了丰富的Web组件.根据这些组件,开发者可以快速的搭建一个漂亮.功能完备的网站.在经过Bootstrap 3 RC版的测试和 ...

  7. MySQL如何利用索引优化ORDER BY排序语句

    MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度. MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作. 通 ...

  8. string转byte[]

    static byte[] GetBytes(string str) { byte[] bytes = new byte[str.Length * sizeof(char)]; System.Buff ...

  9. C# MVC绑定 List<DapperRow>到bootstrap-table列表

    1.Dapper返回List<dynamic>对象 /// <summary> /// 获取候选人推荐的分页数据 /// </summary> /// <pa ...

  10. 使用pyinstaller打包Python应用,生成EXE执行文件

    在命令行中切换到要打包的程序所在目录,或者在程序目录打开命令行,直接输入下面的指令即可pyinstaller -F xxx.py pyinstaller -F -w -i manage.ico app ...