我正在开发一款使用Mi Band 1来追踪心率的应用。现在我实现了配对(通过身份验证)。但我无法想象如何取消Mi Band的配对。
编码Mi Band的取消配对不是我的首要任务,但是我想用我的应用程序做这个,而不是去MiFit配对mi Band并且每次我想要配对时都取消配对(使用auth)马达)用我的应用程序。
我使用以下序列进行初始化:
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个数据包:
我想我只需要发送第二个HCI命令(当我调用disconnect()或close()时,第一个命令已经发出)。问题是我不知道如何发送该命令。