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

.net 访问Microsoft Band上的环境光照传感器,.net,sensors,microsoft-band,.net,Sensors,Microsoft Band,有一个带有Microsoft Band的环境光传感器,Windows应用商店中的一些应用程序显示ALS勒克斯值,但我在Band SDK中找不到读取ALS勒克斯值的方法 如何访问ALS?第三方应用的公共SDK当前未公开ALS。您可以在SDK的未来版本中添加访问此传感器的功能请求:如前所述,该传感器未被公共SDK公开-但显然可以获取信息(以及一堆其他内容)通过使用原始蓝牙接口,公共API是原始蓝牙协议的包装器 因此,如果你不害怕逆向工程和摆弄原始字节,你也许能够想出如何解码传感器数据。您可以使用Wi

有一个带有Microsoft Band的环境光传感器,Windows应用商店中的一些应用程序显示ALS勒克斯值,但我在Band SDK中找不到读取ALS勒克斯值的方法


如何访问ALS?

第三方应用的公共SDK当前未公开ALS。您可以在SDK的未来版本中添加访问此传感器的功能请求:

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


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

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

Microsoft Band SDK(NuGet package 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();
}

谢谢但是有些应用程序使用这种传感器,如果我想在安卓设备上实现同样的结果呢?还有可能吗?你不能像在Windows手机上那样在Android上通过蓝牙协议进行通信吗?你知道我如何找到订阅传感器数据的通信协议吗?是的,你可以,但正如我提到的,你必须先卸载MS Health应用程序。如果您有Android 4.4或更新版本,您可以在开发者设置中启用hci snoop日志,然后在Wireshark中打开它。只需使用SDK在常规应用程序中尝试一些操作,您就会看到所有内容。在卸载MS Health之前尝试一下,否则它将不起作用。好的,我设法弄清楚了Band和Android设备之间的协议通信,我知道如何解析接收到的所有订阅数据,并且我能够订阅所有非隐藏传感器。现在的问题是:如何找到与隐藏传感器相关联的ID\您正在查找哪个传感器ID?如果是ALS,那么ID=25,应该得到6个字节。勒克斯值为字节5-6(无符号短整数)。ALS和GSR。我想GSR ID是15,你能确认一下吗?