HarmonyOS鸿蒙Next中Distributed Service Kit API疑问

HarmonyOS鸿蒙Next中Distributed Service Kit API疑问 https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-distributeddevicemanager-0000001813576620#ZH-CN_TOPIC_0000001813576620__devicestatechange

我想尝试根据 OpenHarmony 样例学习 HarmonyOS NEXT 上分布式设备连接的开发,在开发过程中我发现目前的 API 中没有老版本的 on(‘PublishSuccess’) on(‘PublishFail’) 两个关键注册回调,也没有 authenticateDevice 和 unAuthenticateDevice 两个 jsapi 函数,是因为目前的NEXT版本完全不支持分布式设备的连接,这也是为何不支持超级终端以及分布式计算器无法互联的原因吗?


更多关于HarmonyOS鸿蒙Next中Distributed Service Kit API疑问的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

更多关于HarmonyOS鸿蒙Next中Distributed Service Kit API疑问的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好,您提供给我的是 Preview0 即 API10 版本的 @ohos.distributedHardware.deviceManager,我在 DevEco Studio NEXT Developer Preview2 Build Version: 4.1.3.700, built on March 19, 2024 尝试使用,但引入后通过查看包的声明内容仅为

declare namespace deviceManager {
    /**
     * Provides methods for managing devices.
     *
     * @interface DeviceManager
     * @syscap SystemCapability.DistributedHardware.DeviceManager
     * @since 7
     */
    interface DeviceManager {
    }
}
export default deviceManager;

无任何其他声明,无法正常使用,

接上楼,我在日志中查看到我执行 discovery 函数显示能够搜索到其他设备

发现日志被我手残刷掉了,是候补的

但是却显示 eventType DiscoverSuccess not find, 而且我获取不到系统应该返回的设备信息

deviceFound(data: Data): void {
  for (let i = 0; i < this.discoverList.length; i++) {
    if (this.discoverList[i].deviceId == data.device!.deviceId) {
      logger.info('[DeviceManager.RemoteDeviceModel] device founded ignored');
      return;
    }
  }
  this.discoverList[this.discoverList.length] = data.device!;
  AppStorage.SetOrCreate('discoverDeviceList', this.discoverList);
  logger.info('[DeviceManager.RemoteDeviceModel] deviceFound self.discoverList=' + this.discoverList);
}

startDeviceDiscovery(): void {
  if (typeof (this.deviceManager) == 'undefined') {
    logger.error('[DeviceManager.RemoteDeviceModel] deviceManager has not initialized');
    constant.showToast('deviceManager has not initialized');
    return;
  }
  let self = this;
  this.deviceManager.on('discoverSuccess', (data: Data) => {
    logger.info('[DeviceManager.RemoteDeviceModel] deviceFound data=' + JSON.stringify(data));
    self.deviceFound(data);
  })
  this.deviceManager.on('discoverFailure', (data) => {
    logger.info('[DeviceManager.RemoteDeviceModel] discoverFail data=' + JSON.stringify(data));
  })
  this.deviceManager.on('serviceDie', () => {
    logger.error('[DeviceManager.RemoteDeviceModel] serviceDie');
  })

  let info : Record<string, number> = {
    'discoverTargetType': 1
  };
  logger.info('[DeviceManager.RemoteDeviceModel] startDeviceDiscovery ' + SUBSCRIBE_ID);
  this.discoverList = [];
  AppStorage.SetOrCreate('discoverDeviceList', this.discoverList);

  let filterOptions : Record<string, number> = {
    'availableStatus': 0
  };
  logger.info('[DeviceManager.RemoteDeviceModel] startDeviceDiscovery filterOptions = ' + JSON.stringify(filterOptions));
  try {
    this.deviceManager.startDiscovering(info, filterOptions);
  } catch (e) {
    logger.error('[DeviceManager.RemoteDeviceModel] startDeviceDiscovery failed err: ' + e.toString());
  }
}

在HarmonyOS鸿蒙Next中,Distributed Service Kit API主要用于实现跨设备的服务调用和数据共享。开发者可以通过该API实现设备间的无缝协同,如分布式任务调度、数据同步等。常见疑问包括如何注册和发现服务、如何处理跨设备通信的安全性和性能优化等。建议参考官方文档和示例代码,确保正确配置权限和网络环境,以实现高效的分布式服务调用。

回到顶部