你的位置:首页 > 操作系统

[操作系统]Microsoft Band 开发 – 连接设备并进行简单操作


一、准备工作

去年10月,微软发布了微软手环,并在几个月后发布了相应平台的SDK并在持续更新中。今天,我们就来说说在Windows Phone当中进行MS Band应用的开发。

所谓Band开发,你写的App其实在根本上是运行在你手机上的,Band只用于呈现信息、采集信息和显示通知。当然,Band上强大的传感器也可以帮助你构建更牛逼的健康类应用。我就抛砖引玉地来给大家简单说说Band开发的所需的基础知识。

首先,创建一个WP8.1(RT)的空白项目,下载并引用Band SDK(可以在Nuget上获取)。

打开项目中的Package.appxmanifest文件,在“功能”选项卡(Capabilities)中勾选 “临近”(Proximity)。

然后右键Package.appxmanifest,选择查看代码,在 <Capabilities> 标签内下加入如下代码:

<m2:DeviceCapability Name="bluetooth.rfcomm">   <m2:Device Id="any">    <!-- Used by the Microsoft Band SDK -->       <m2:Function Type="serviceId:A502CA9A-2BA5-413C-A4E0-13804E47B38F" />  <!-- Used by the Microsoft Band SDK -->       <m2:Function Type="serviceId:C742E1A2-6320-5ABC-9643-D206C677E580" />     </m2:Device>  </m2:DeviceCapability>

 

二、获取设备列表

现在,准备工作就做得差不多了。可以正式开始写代码了。先在MainPage中放一个ListBox,名字就叫DevicesListBox,再弄一个Button。我们要做的就是在按下Button之后,显示已经配对或连接的手环设备。

进入MainPage.xaml.cs,using一下Microsoft.Band这个命名空间。给Button的Click处理方法加入async关键字使其成为异步方法,因为我们一会要异步获取手环列表。在Button_Click中加入下列代码。

IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();

这样,我们就得到了一个包含已配对或连接的手环的列表。这个IBandInfo接口提供了两个常用的属性:Name和ConnectionType,分别用于获取手环的名称和连接方式(一般是蓝牙)

所以,比如我们想把pairedBands列表中手环的名称依次显示在DevicesListBox列表中,只需用foreach遍历每一项然后将Name属性添加到DevicesListBox中即可,如下。:

foreach (var b in pairedBands){   DevicesListBox.Items.Add(b.Name);}

 

三、连接手环

使用BandClientManager.Instance.ConnectAsync(IBandInfo bandInfo);方法来连接到指定的Band设备。

具体实现如下:

using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[DevicesListBox.SelectedIndex])){  //告知用户连接成功      }

因为IBandClient实现了IDisposable接口,所以可以用using(){}的形式,便于释放资源。

而为了应对在连接过程中可能出现的异常,最好使用try-catch来处理异常并告知用户。

 

四、获取信息

在IBandClient中有两个常用的方法,用于获取用户连接的手环的软硬件信息。

分别是:

GetFirmwareVersionAsync();   获取手环的固件版本

GetHardwareVersionAsync();   获取手环的硬件版本

两个方法都返回 string

 

五、总结

今天在这篇文章里简单地介绍了一下微软手环应用的开发,事实上还只是连接,还没有到具体的开发这一步,在下一篇文章中,我应该会讲一下在Band上进行和动态磁贴有关的操作。之后还会讲如何在手环上创建UI之类的。

但是现在Band在中国依然是不温不火的状态,主要是由于没有在中国发售和不支持中文的缘故。最近也有各种说法说微软正在研发Band 2代,应该会弥补1代的不足,而对于开发者来说,2代的开发我预感不会有特别大的区别。所以,现在有Band的开发者可以学习手环应用的开发,而还没有Band的开发者,也可以简略了解一下,为将来2代手环的开发打一些基础。万一Band 2能比Apple Watch更成功呢?(尽管不太可能2333。。)