尝试将小米手环与 GATT 服务和特性配对,但手环没有响应。问题同样适用于 android 和 iOS。仅适用于 Mi Fit 官方应用。
除电池、日期和其他信息外,既不更新也不通知任何特性的更新。
注意:- 尝试过的服务/特性 -
- FF0F
- 2A37
- 2A39
- 0000180d-0000–1000–8000–00805f9b34fb
- 0000fee0–0000–1000–8000–00805f9b34fb
- 0000009–0000–1000–8000–00805f9b34fb
在开始获取数据之前,您需要对应用程序进行身份验证。步骤是:
我注意到在Mi Band 3中,即使没有配对(身份验证),您也可以访问心率数据和详细信息以进行心率测量:
let BLE_Heart_Rate_Service_CBUUID = CBUUID(string: "0x180D")
let Heart_rate_UUID = CBUUID(string: "2A37")
现在将下面的代码放入didUpdateValueFor
if characteristic.uuid == Heart_rate_UUID {
print("HeartRate_UUID reading: ", characteristic.value)
peripheral.readValue(for: characteristic)
print("HEART RATE: ", getHeartRate(heartRateData: characteristic.value!))
}
使用getHeartRate()读取心率。
func getHeartRate(heartRateData:Data) -> Int{
print("--- UPDATING Heart Rate..")
var buffer = [UInt8](repeating: 0x00, count: heartRateData.count)
heartRateData.copyBytes(to: &buffer, count: buffer.count)
var bpm:UInt16?
if (buffer.count >= 2){
if (buffer[0] & 0x01 == 0){
bpm = UInt16(buffer[1]);
}else {
bpm = UInt16(buffer[1]) << 8
bpm = bpm! | UInt16(buffer[2])
}
}
if let actualBpm = bpm{
return Int(actualBpm)
}else {
return Int(bpm!)
}
}