我想问下 .鸿蒙手机端 发送蓝牙广播数据 ,手机 nrf Connect 接收 接收到的Device type 信息是 UNKNOWN 是什么原因

import { ble } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
const TAG: string = 'BleAdvertisingManager';
export class BleAdvertisingManager {
private advHandle: number = 0xFF; // 初始的无效值
// 1. 定义广播状态上报事件
onReceiveEvent = (data: ble.AdvertisingStateChangeInfo) => {
console.info(TAG, 'bluetooth advertising state = ' + JSON.stringify(data));
AppStorage.setOrCreate('advertiserState', data.state);
};
public async startAdvertising() {
// 2.1 设置广播发送的参数
let setting: ble.AdvertiseSetting = {
interval: 160,
txPower: 0,
connectable: true
};
let advData: ble.AdvertiseData = {
serviceUuids: [
"000008F0-0000-1000-8000-00805F9B34FB",
"00000810-0000-1000-8000-00805F9B34FB",
"00009D13-0000-1000-8000-00805F9B34FB",
"0000950E-0000-1000-8000-00805F9B34FB",
"00004E2D-0000-1000-8000-00805F9B34FB",
"000041F0-0000-1000-8000-00805F9B34FB",
"00001DE1-0000-1000-8000-00805F9B34FB",
"00007EB9-0000-1000-8000-00805F9B34FB",
"0000F59C-0000-1000-8000-00805F9B34FB",
"00002D98-0000-1000-8000-00805F9B34FB",
"0000343D-0000-1000-8000-00805F9B34FB",
"00002B0B-0000-1000-8000-00805F9B34FB",
"00002D89-0000-1000-8000-00805F9B34FB"],
manufactureData: [],
serviceData: [],
includeDeviceName: false // 表示是否携带设备名,可选参数。注意:带上设备名时,容易导致广播报文长度超出31个字节,使得广播启动失败
};
// 2.3 构造广播启动完整参数AdvertisingParams
let advertisingParams: ble.AdvertisingParams = {
advertisingSettings: setting,
advertisingData: advData, // 注意: 广播报文长度不能超过31个字节
// advertisingResponse: advResponse, // 注意: 广播报文长度不能超过31个字节
duration: 0 // 可选参数,若参数大于0,则广播发送一段时间后会停止,但分配的广播资源还在,可重新启动发送
}
// 2.4 首次启动广播,蓝牙子系统会分配相关资源,包括应用获取到的广播标识ID
try {
ble.on('advertisingStateChange', this.onReceiveEvent);
this.advHandle = await ble.startAdvertising(advertisingParams);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 3. 停止指定标识的广播,即首次启动时分配的标识,停止后,该路广播资源仍然存在
public async disableAdvertising() {
// 3.1 构造停止广播参数
let advertisingDisableParams: ble.AdvertisingDisableParams = {
advertisingId: this.advHandle // 使用首次启动广播时获取到的广播标识ID
}
try {
// 3.2 停止
await ble.disableAdvertising(advertisingDisableParams);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 4. 启动指定标识的广播,即首次启动时分配的标识
public async enableAdvertising(enableDuration: number) {
// 4.1 构造启动广播参数
let advertisingEnableParams: ble.AdvertisingEnableParams = {
advertisingId: this.advHandle, // 使用首次启动广播时获取到的广播标识ID
duration: enableDuration
}
try {
// 4.2 再次启动
await ble.enableAdvertising(advertisingEnableParams);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
// 5. 完全停止广播,释放广播资源
public async stopAdvertising() {
try {
await ble.stopAdvertising(this.advHandle);
ble.off('advertisingStateChange', this.onReceiveEvent);
} catch (err) {
console.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}
}
let bleAdvertisingManager = new BleAdvertisingManager();
export default bleAdvertisingManager as BleAdvertisingManager;