相关问题
使用第三方开源播放器场景下,如何监听音频焦点被抢占事件
943浏览 • 1回复 待解决
无音频流的音频焦点的请求和释放
1578浏览 • 1回复 待解决
如何判断音频焦点的获取和丢失?
6040浏览 • 1回复 待解决
监听音频打断事件,该如何处理?
779浏览 • 1回复 待解决
HarmonyOS 音频后台播放问题
300浏览 • 1回复 待解决
HarmonyOS音频播放问题
289浏览 • 1回复 待解决
如何监听TextInput是否获得焦点
1720浏览 • 1回复 待解决
OH _Audio播放音频问题
1927浏览 • 1回复 待解决
基于AVPlayer音频后台播放
388浏览 • 1回复 待解决
HarmonyOS TextInput焦点问题
260浏览 • 1回复 待解决
HarmonyOS 如何判断音频是否在播放
244浏览 • 1回复 待解决
鸿蒙 如何使用 player 播放网络音频?
7335浏览 • 1回复 已解决
HarmonyOS实现后台播放音频
297浏览 • 1回复 待解决
AudioCapturer录音+AudioRenderer播放音频
1112浏览 • 1回复 待解决
HarmonyOS 音频录制与播放
432浏览 • 1回复 待解决
SoundPool实现音频播放功能
1110浏览 • 1回复 待解决
音频后台播放应用突然正常退出问题定位
746浏览 • 1回复 待解决
ArkTS音频播放,音频播放的主要工作是将音频数据转码为可听见的音频模拟信号并通过输出设备进行播放
1135浏览 • 1回复 待解决
HarmonyOS 开启后台播放音频,切换到后台播放一段时间后,音频任务自己退出的问题
319浏览 • 1回复 待解决
如何区分页面可见无焦点和页面可见有焦点
1792浏览 • 1回复 待解决
音频播放长时任务不生效
1765浏览 • 1回复 待解决
使用AudioRenderer开发音频播放功能
941浏览 • 1回复 待解决
AVplayer开发音频播放功能
1020浏览 • 1回复 待解决
鸿蒙-如何实现播放一段音频
10915浏览 • 2回复 待解决
TextInput输入框如何失去焦点?输入框获取焦点后,点击页面上其他任意地方无法失去焦点,焦点在输入框中
2056浏览 • 1回复 待解决
请参考:https://blog.51cto.com/chenfenglove/11395674
音频分类
枚举值
说明
AUDIOSTREAM_USAGE_UNKNOWN
未定义
AUDIOSTREAM_USAGE_MUSIC
音乐
AUDIOSTREAM_USAGE_COMMUNICATION
通话
AUDIOSTREAM_USAGE_VOICE_ASSISTANT
语音助手
AUDIOSTREAM_USAGE_ALARM
闹钟
AUDIOSTREAM_USAGE_VOICE_MESSAGE
语音消息
AUDIOSTREAM_USAGE_RINGTONE
铃声
AUDIOSTREAM_USAGE_NOTIFICATION
通知
AUDIOSTREAM_USAGE_ACCESSIBILITY
无障碍
AUDIOSTREAM_USAGE_MOVIE
视频
AUDIOSTREAM_USAGE_GAME
游戏
AUDIOSTREAM_USAGE_AUDIOBOOK
有声读物
AUDIOSTREAM_USAGE_NAVIGATION
导航
如何处理音频焦点抢占问题
音频焦点处理策略整体交给系统自动管理了,但是由于是系统自动触发的,应用需要监听相关事件,修改页面显示状态,例如:
1. 音乐播放过程中被其他音频打断自动停止播放,这时候页面的播放状态需要显示暂停,页面的状态不由系统管控,需要应用监听相关事件做状态修改;
2. 音乐播放过程被其他闹钟或者来电铃声等内容打断时需要恢复。
针对系统提供的几种音频播放方式,分别有提供对应的音频焦点事件,具体可以查看文档多音频播放的并发策略 - 监听音频打断事件
音频中断类型
枚举值
说明
AUDIOSTREAM_INTERRUPT_HINT_NONE
不提示
AUDIOSTREAM_INTERRUPT_HINT_RESUME
恢复流提示
AUDIOSTREAM_INTERRUPT_HINT_PAUSE
暂停流提示
AUDIOSTREAM_INTERRUPT_HINT_STOP
停止流提示
AUDIOSTREAM_INTERRUPT_HINT_DUCK
短暂降低音量
AUDIOSTREAM_INTERRUPT_HINT_UNDUCK
恢复音量
当应用程序监听到音频焦点事件,触发暂停和恢复流的情况时,通常需要在应用内部调用相应的音频播放和暂停方法来实现音频的暂停和恢复。
在触发暂停的音频焦点事件时,系统可能会自动暂停当前应用程序的音频播放,但这并不保证所有设备和操作系统都会以相同的方式处理。为了确保一致性和最佳用户体验,建议在应用内部显式调用暂停方法来停止音频播放,并更新应用界面以反映播放状态的变化。
而在触发恢复流的音频焦点事件时,系统通常不会自动恢复音频播放。应用程序需要通过监听焦点事件的回调函数,在收到恢复流焦点事件时,调用应用内部的音频播放方法来恢复播放。这样可以确保应用程序根据焦点事件的变化来控制音频的播放状态,并提供一致的用户体验。
1. 针对OpenSLES做的音频播放内容,由于系统未提供音频播放类型以及音频焦点事件,无法在触发系统音频焦点策略之后,应用做相应处理,以及无法做到想要的焦点策略,例如游戏声音和音乐共存,以及导航音等焦点策略,故需要采用系统提供的OHAudio接口处理
2. 截止当前Developer Beta1版本 AVPlayer提供的NDK接口中还不能设置音频类型,以及监听焦点事件,默认采用是音乐类型,ArkTS接口中提供audioRendererInfo属性可配置音频渲染通道指定音频类型
应用切前后台时的音频行为
应用切前后台时,应用其实主要表现为下述几种行为:
1. 应用切后台暂停,切回前台继续播放 -- 游戏音效场景,当前应用未申请长时任务情况下,应用切后台后,应用进程冻结,音频播放会暂停,但是切回前台不会自动播放,需要应用主动调用继续播放
2. 应用切后台不暂停继续播放 -- 音乐类软件,申请长时任务之后,应用后台继续播放
在大多数情况下,当音频播放应用切换到后台时,系统会自动暂停音频播放。然而,当应用切回前台时,系统不会自动触发音频的恢复播放。