跳到主要内容

音频路由

由于鸿蒙系统不再提供音频输出设备切换的API,如果需要应用内切换音频输出设备,请实现系统提供的 AVCastPicker 组件,相关参数可参考使用通话设备切换组件

使用 AVCastPicker 切换音频路由

  1. 创建 voice_call 类型的 AVSessionAVSession 在构造方法中支持不同的类型参数,由 AVSessionType 定义,voice_call 表示通话类型,如果不创建,将显示空列表。
TypeScript
import { avSession } from '@kit.AVSessionKit';

private session: avSession.AVSession | undefined = undefined;

// 通话开始时创建voice_call类型的avsession
this.session = await avSession.createAVSession(getContext(this), 'voiptest', 'voice_call');
  1. 在需要切换设备的通话界面创建 AVCastPicker 组件。
TypeScript
import { AVCastPicker } from '@kit.AVSessionKit';

// 创建组件,并设置大小
build() {
Row() {
Column() {
AVCastPicker()
.size({ height:45, width:45 })
}
}
}

自定义样式实现

自定义样式通过设置 CustomBuilder 类型的参数 customPicker 实现。

实现自定义样式的步骤与实现默认样式基本相同,开发者可参考默认样式实现,完成创建 AVSession 、实现音频播放等步骤。

TypeScript
import { AVCastPicker } from '@kit.AVSessionKit';

@State pickerImage:ResourceStr = $r('app.media.earpiece'); // 自定义资源

build() {
Row() {
Column() {
AVCastPicker(
{
customPicker: (): void => this.ImageBuilder() // 新增自定义参数
}
).size({ height: 45, width:45 })
}
}
}

// 自定义内容
@Builder
ImageBuilder(): void {
Image(this.pickerImage)
.size({ width: '100%', height: '100%' })
.backgroundColor('#00000000')
.fillColor(Color.Black)
}