HarmonyOS鸿蒙Next中DLNA投屏如何使用代码(不用AVCastPicker)自行获取可投屏设备和进行设备切换

HarmonyOS鸿蒙Next中DLNA投屏如何使用代码(不用AVCastPicker)自行获取可投屏设备和进行设备切换 https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-vdeocast#section6237193134112

投播想了解如何通过api获取当前可投播列表, 不使用AVCastPicker切换投播设备,这个如何做呢,试了

videoSession.getOutputDevice()

这个方法发现只返回当前local设备信息,没有当前局域网其他DLNA设备信息。


更多关于HarmonyOS鸿蒙Next中DLNA投屏如何使用代码(不用AVCastPicker)自行获取可投屏设备和进行设备切换的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中实现DLNA投屏,需使用@ohos.multimedia.media@ohos.multimedia.avsession模块。通过DeviceManager获取可用设备列表,使用AVSession创建投屏会话。调用AVSession.setOutputDevice(deviceId)切换设备,通过AVPlayerMediaController控制播放流程。具体实现需参考鸿蒙官方文档中关于媒体设备管理和会话控制的API说明。

更多关于HarmonyOS鸿蒙Next中DLNA投屏如何使用代码(不用AVCastPicker)自行获取可投屏设备和进行设备切换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,可以通过AVSessionManagerOutputDeviceInfo来获取可投屏设备列表并进行设备切换。以下是具体实现方法:

  1. 获取设备列表: 使用AVSessionManager.getOutputDevices()获取所有可用输出设备,然后筛选出DLNA设备:
import avSession from '@ohos.multimedia.avsession';

let devices = avSession.AVSessionManager.getOutputDevices();
let dlnaDevices = devices.filter(device => device.type === avSession.DeviceType.DLNA);
  1. 监听设备变化: 注册设备状态监听器,实时更新设备列表:
avSession.AVSessionManager.on('outputDeviceChange', (devices) => {
  // 更新设备列表
});
  1. 切换投屏设备: 使用AVSession.setOutputDevice(deviceId)切换目标设备:
let session = ... // 获取当前AVSession实例
session.setOutputDevice(deviceId).then(() => {
  console.log('设备切换成功');
});
  1. 设备信息解析: 通过OutputDeviceInfo可获取设备名称、ID、类型等详细信息,用于UI展示。

注意:需要确保应用已申请ohos.permission.MANAGE_MEDIA_RESOURCES权限,且设备与手机处于同一局域网。这种方式比使用AVCastPicker更灵活,可直接集成到自定义投屏界面中。

回到顶部