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. servlet中用注解的方式读取web.xml中的配置信息

    在学习servletContext的时候,我们知道了可以在web.xml中通过<context-param>标签来定义全局的属性(所有servlet都能读取的信息),并在servlet中通 ...

  2. Maven工程引入jar包

    Maven项目引入jar包的方法 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add Exte ...

  3. 源码阅读系列:EventBus

    title: 源码阅读系列:EventBus date: 2016-12-22 16:16:47 tags: 源码阅读 --- EventBus 是人们在日常开发中经常会用到的开源库,即使是不直接用的 ...

  4. 【JUC】JDK1.8源码分析之ReentrantLock(三)

    一.前言 在分析了AbstractQueuedSynchronier源码后,接着分析ReentrantLock源码,其实在AbstractQueuedSynchronizer的分析中,已经提到过Ree ...

  5. JS实现动态显示当前时间

    效果图: 代码实现: <script language="JavaScript"> var timerID = null; var timerRunning = fal ...

  6. iOS页面间传值的一些方式总结

    废话不多说,直接进入主题: 这里要说的方式有6种:1.属性传值 2.block 3.delegate 4.UserDefault 5.单例 6.通知(篇幅原因我只写核心代码,如果看不懂可以直接在最下面 ...

  7. 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...

  8. anonymousIdentification 与匿名访问

    anonymousIdentification 元素(ASP.NET 设置架构) 来自 <https://msdn.microsoft.com/zh-cn/library/91ka2e6a(v= ...

  9. Java代码优化(长期更新)

    前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸 ...

  10. Thinking in Java——笔记(20)

    Annotations They provide information that you need to fully describe your program, but that cannot b ...