有一个带有 Microsoft Band 的环境光传感器,Windows Store 中的一些应用程序以 Lux 为单位显示 ALS 值,但我在 Band SDK 中找不到读取 ALS Lux 值的方法。
如何访问 ALS?
有一个带有 Microsoft Band 的环境光传感器,Windows Store 中的一些应用程序以 Lux 为单位显示 ALS 值,但我在 Band SDK 中找不到读取 ALS Lux 值的方法。
如何访问 ALS?
如果您使用的是 Win 或 iOS,您可以使用 RFCOMM。但是,您必须自己编写所有内容。订阅传感器数据很容易,解析响应也很容易。但是,如果您需要与设备交互 - 通信磁贴等等,它就会变得复杂。如果您使用的是 Android,您将获得 MS Health 应用程序的支持,但由于它不公开此功能,您无法使用它。仅当您禁用(卸载?)MS Health 应用程序并再次自己编写所有内容时。
如前所述,公共 SDK 不会公开该传感器 - 但显然可以通过使用原始蓝牙接口获取信息(以及一堆其他东西) - 公共 API 是一种围绕原始蓝牙协议的包装器.
因此,如果您不害怕逆向工程和摆弄原始字节,您也许能够弄清楚如何解码传感器数据。您可以使用 Windows.Devices.Bluetooth.Rfcomm 库 - Microsoft 提供了一个代码示例,展示了如何设置基本的蓝牙 rfccomm 通信:https ://code.msdn.microsoft.com/windowsapps/Bluetooth-Rfcomm-Chat-afcee559
ALS 当前未通过公共 SDK 公开用于第 3 方应用程序。您可以在 SDK 的未来版本中添加访问此传感器的功能请求,网址为:http ://microsofthealth.uservoice.com/
the Microsoft Band SDK (NuGet package v1.3.11121) now exposes the ambient light sensor.
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();
}