访问 Microsoft Band 上的环境光传感器

Accessing Ambient Light Sensor on Microsoft Band

Microsoft Band 有一个环境光传感器,Windows 商店中的某些应用程序以 Lux 为单位显示 ALS 值,但我无法在 Band SDK 中找到读取 ALS Lux 的方法值。

如何访问 ALS?

ALS 当前未通过 Public SDK 为第 3 方应用公开。您可以在 SDK 的未来版本中添加访问此传感器的功能请求:http://microsofthealth.uservoice.com/

如前所述,public SDK 未公开该传感器 - 但显然可以通过使用原始蓝牙接口获取信息(以及一堆其他内容) - public API 是一种原始蓝牙协议的包装器。

因此,如果您不害怕逆向工程和摆弄原始字节,您也许能够弄清楚如何解码传感器数据。您可以使用 Windows.Devices.Bluetooth.Rfcomm 库 - Microsoft 提供了一个代码示例,展示了如何设置基本的蓝牙 rfccomm 通信:https://code.msdn.microsoft.com/windowsapps/Bluetooth-Rfcomm-Chat-afcee559

如果您使用的是 Win 或 iOS,您可以使用 RFCOMM。但是你必须自己写所有的东西。订阅传感器数据很容易,解析响应也很容易。但是,如果您需要与设备进行交互,它就会变得复杂——与磁贴进行通信等等。 如果您使用 Android,您将获得 MS Health 应用程序的支持,但由于它不公开此功能,您无法使用它。仅当您禁用(卸载?)MS Health 应用程序并再次自行编写所有内容时。

Microsoft Band SDK(NuGet 包 v1.3.11121)现在公开了环境光传感器。

if (bandClient.SensorManager.AmbientLight.IsSupported)
{
    bandClient.SensorManager.AmbientLight.ReadingChanged += (s, args) =>
    {
        Debug.WriteLine(bandClient.SensorManager.AmbientLight.Brightness);
    };
    await bandClient.SensorManager.AmbientLight.StartReadingsAsync();
    await Task.Delay(TimeSpan.FromSeconds(5));
    await bandClient.SensorManager.AmbientLight.StopReadingsAsync();
}