getPairedBands() returns Microsoft Band SDK 中没有设备

getPairedBands() returns no devices in Microsoft Band SDK

起初我以为这是我在做的事情,但在尝试了 Microsoft Band 包含的一个官方代码示例 (BandLayoutApp) 之后,我仍然无法使用 SDK 连接到我的 Band 2。我正在逐字使用示例项目及其包含的 AndroidManifest.xml.

Microsoft Band 2 已与我的 Nexus 6p 配对并正常运行。我每天都用它来锻炼,结果会同步到我 Android phone 上的 Microsoft Health App。我知道 Android 6.0.1 更新打破了与 Microsoft Health App 的兼容性并且刚刚更新,所以也许 SDK 还没有更新来解决这个问题?这只是我在排除故障并将健康应用程序版本与最新 SDK 版本匹配后的猜测(假设它们遵循相同的版本控制)。

我有一个较旧的 Android Phone (运行 Android 5.1) 我可以配对测试,但必须将手环恢复出厂设置才能做到这一点.

设备:Microsoft Band 2

设备固件版本:2.0.3923.0 26R

配对设备:Nexus 6p

Android OS: 6.0.1

Microsoft 健康应用程序版本:1.3.11217.1

手环SDK版本:1.3.10929.1

相关代码来自微软官方示例:

https://developer.microsoftband.com/bandSDK

private boolean getConnectedBandClient() throws InterruptedException, BandException
{
    if (client == null) {
        BandInfo[] devices = BandClientManager.getInstance().getPairedBands();
        if (devices.length == 0) {
            appendToUI("Band isn't paired with your phone.\n");
            return false;
        }
        client = BandClientManager.getInstance().create(getBaseContext(), devices[0]);
    }
    else if (ConnectionState.CONNECTED == client.getConnectionState()) {
        return true;
    }

    appendToUI("Band is connecting...\n");
    return ConnectionState.CONNECTED == client.connect().await();
}

预期结果

下面的行应该 return 一个结果(我已经配对的 Microsoft Band):

BandInfo[] devices = BandClientManager.getInstance().getPairedBands();

实际结果

以下行 returns 未找到设备:

BandInfo[] devices = BandClientManager.getInstance().getPairedBands();

当前发布的 Android Microsoft Band SDK 版本将无法与 Android 6.0.1 一起使用,因为 Google 破坏了 SDK 用于连接的关键蓝牙 API 之一确定蓝牙设备是否为 Microsoft Band。

因此,为了回答您的问题,现在移动到较旧的 phone 几乎可以肯定会解决您的问题,但您必须在 Microsoft 发布带有解决方法的更新 SDK 后立即更新您的 SDK 版本.

编辑:

Microsoft 于 2016 年 1 月 6 日发布了解决此问题的新 SDK。 最新版本的 SDK 可以在这里找到: http://developer.microsoftband.com/bandSDK