音频路由
由于鸿蒙系统不再提供音频输出设备切换的API,如果需要应用内切换音频输出设备,请实现系统提供的 AVCastPicker
组件,相关参数可参考使用通话设备切换组件
使用 AVCastPicker 切换音频路由
- 创建
voice_call
类型的AVSession
,AVSession
在构造方法中支持不同的类型参数,由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');
- 在需要切换设备的通话界面创建
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)
}