HarmonyOS鸿蒙Next中AVPlayer播放音频如何切换到听筒模式播放
HarmonyOS鸿蒙Next中AVPlayer播放音频如何切换到听筒模式播放 在IM播放语音场景,当手机靠近耳朵时(距离传感器部分已实现),需要将语言切换到听筒模式,
请问AVPlayer 播放音频 如何切换到听筒模式播放?
在 AVPlayer 处于 initialized 状态,调用 prepare 方法前设置 audioRendererInfo 属性为:
{
usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
rendererFlags: 0,
}
即可用听筒播放。
更多关于HarmonyOS鸿蒙Next中AVPlayer播放音频如何切换到听筒模式播放的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以通过AVCastPicker组件来实现切换播放模式。具体可参考: https://developerlf.hwcloudtest.cn/consumer/cn/doc/harmonyos-guides-V5/using-switch-call-devices-V5
参考代码:
import AVCastPicker from '@ohos.multimedia.avCastPicker'
import AVSessionManager from '@ohos.multimedia.avsession';
@Entry
@Component
struct Index {
async onPageShow(){
// 开始创建并激活媒体会话 // 创建session
let context: Context = getContext(this)
let type: AVSessionManager.AVSessionType = 'voice_call';
let session = await AVSessionManager.createAVSession(context,'SESSION_NAME', type);
console.log('AVSession成功:'+JSON.stringify(session))
// 激活接口要在元数据、控制命令注册完成之后再执行
await session.activate();
console.info(`session create done : sessionId : ${session.sessionId}`);
}
build() {
Row() {
Column() {
AVCastPicker()
.width('40vp')
.height('40vp')
.border({ width: 1, color: Color.Red })
}
.height('50%')
}
.width('50%')
}
}
暂不支持通过api自动切换听筒和扬声器播放音频,只能通过AVCastPicker组件来让用户自行选择播放模式。AVPlayer没有相关切换接口,具体可看代码示例
我也在研究这个功能,尝试使用AVPlayer播放发现没办法切换听筒扬声器。后来改成用AudioRenderer播放,发现这个只能播放PCM编码格式的,我现在在研究怎么调OH_AVCodec (C++)去做音频解码。
讲真,我就想做一个聊天列表中的音频播放听筒扬声器切换,研究了一周了。这种简单的功能应该系统来做支持,而不是我们自己研究。AVPlayer要是加上听筒扬声器切换,一上午就能搞完这个需求,现在这需求压在我手里一周了,都是做客户端的C++早就还给课本了。
您好,请问现在有实现的方案了吗?也在做这个功能遇到了同样的问题。
我这也是,看了一天文档了,官方没有做切换的接口,
哈哈,同问呢,我现在开始研究下这个功能
在HarmonyOS鸿蒙Next中,AVPlayer播放音频切换到听筒模式播放可以通过设置音频路由实现。具体步骤如下:
- 获取
AudioManager
实例。 - 使用
AudioManager
的setMode
方法设置音频模式为AudioManager.MODE_IN_COMMUNICATION
。 - 使用
AudioManager
的setSpeakerphoneOn
方法关闭扬声器,强制音频通过听筒输出。
示例代码如下:
import audio from '@ohos.multimedia.audio';
let audioManager = audio.getAudioManager();
audioManager.setMode(audio.AudioManagerMode.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(false);
通过以上步骤,AVPlayer播放的音频将切换到听筒模式。
在HarmonyOS鸿蒙Next中,使用AVPlayer播放音频时,可以通过设置音频输出模式来切换到听筒模式。具体步骤如下:
- 使用
AudioManager
获取音频管理器实例。 - 调用
AudioManager
的setMode
方法,将模式设置为AudioManager.MODE_IN_COMMUNICATION
,这会将音频路由到听筒。 - 使用
AudioManager
的setSpeakerphoneOn
方法,传入false
,关闭扬声器模式,确保音频通过听筒播放。
代码示例:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(false);
这样,AVPlayer播放的音频就会通过听筒输出,适合需要私密听音的场景。