是什么协议解开Mi Band 1s? (HCI命令)

时间:2018-03-15 12:44:17

标签: java android bluetooth-lowenergy hci xiaomi

我正在开发一款使用Mi Band 1来追踪心率的应用。现在我实现了配对(通过身份验证)。但我无法想象如何取消Mi Band的配对。

编码Mi Band的取消配对不是我的首要任务,但是我想用我的应用程序做这个,而不是去MiFit配对mi Band并且每次我想要配对时都取消配对(使用auth)马达)用我的应用程序。

这里有appprotocol我搜索/计算/等等。

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

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的断开连接:

enter image description here

正如您所看到的,主机只向该频段发送了4个数据包:

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

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

0 个答案:

没有答案