1

我正在开发一个使用 Mi Band 1s 来跟踪心率的应用程序。现在我实现了配对(通过身份验证)。但我不知道如何取消配对 Mi Band。

对 Mi Band 的取消配对进行编码不是我的首要任务,但我想用我的应用程序执行此操作,而不是每次我想执行配对(使用身份验证电机)时都去 MiFit 配对 mi Band 并取消配对我的应用程序。

在这里,您有我搜索/计算/等的应用程序协议。

我使用以下序列进行初始化:

private void initialize() {
    // Enable notifications
    addCall(enableNotifications());

    // Set low latency to do a faster initialization
    addCall(setLowLatency());

    // Reading date for stability - TODO - Check if this is really necessary
    addCall(requestDate());

    // Authentication
    addCall(pair());
    addCall(requestDeviceInformation()); // Needed to send user info to the device
    addCall(requestDeviceName());
    addCall(sendUserInfo()); // Needed to authenticate
    addCall(checkAuthentication()); // Clear the queue when not authenticated

    // Other Initializations
    addCall(sendCommand(COMMAND.SET_WEAR_LOCATION_RIGHT)); // Set wear location // TODO - Check
    addCall(setHeartRateSleepSupport()); // TODO - Check
    addCall(setFitnessGoal(1000)); // TODO - Check and set fitness by the app

    // Enable other notifications // TODO - Check
    addCall(enableNotificationsFrom(UUID_CHAR.REALTIME_STEPS));
    addCall(enableNotificationsFrom(UUID_CHAR.ACTIVITY_DATA));
    addCall(enableNotificationsFrom(UUID_CHAR.BATTERY));
    addCall(enableNotificationsFrom(UUID_CHAR.SENSOR_DATA));

    // Enable Heart Rate notifications
    addCall(enableHeartRateNotifications());

    // Other Initializations
    addCall(setCurrentDate());
    addCall(requestBattery());

    // Set high latency to get an stable connection
    addCall(setHighLatency());

    // Finish initialization - device is ready to make other calls
    //addCall(setInitialized()); // TODO
}

如您所见,仍然有一些电话我必须检查他们是否真的按照他们所说的去做。但目前它似乎正在工作。我将不胜感激任何其他评论(不仅是关于如何取消配对)。

编辑

我开始捕获官方应用程序和我的应用程序的蓝牙数据包(我还用它的 uuid 映射了所有处理程序,即使我不知道是什么特征)。

好的,所以,这是从 MiFit 断开连接的捕获:

在此处输入图像描述

如您所见,主机仅向频段发送 4 个数据包:

  • 其中两个是用于读取步骤和禁用步骤通知的 ATT 数据包。
  • 另外两个是 HCI 命令。

我想我只需要发送第二个 HCI 命令(当我调用 disconnect() 或 close() 时已经发送了第一个命令)。问题是我不知道如何发送该命令。

4

0 回答 0