android 音频抢占问题

复制代码
private val mAudioManager: AudioManager by lazy {
    Utils.getApp().getSystemService(Context.AUDIO_SERVICE) as AudioManager
}
复制代码
fun checkSpeakerOn():Boolean {

    val afChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange ->
            if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
                focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK
            ) {
                // 音频焦点暂时丢失,可能是因为多媒体占用
                LogUtils.d(TAG, "Temporarily lost audio focus due to media play")
            } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
                // 永久失去音频焦点,可能是因为多媒体或其他应用正在播放
                LogUtils.d(TAG, "Permanently lost audio focus")
            } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
                // 重新获得音频焦点
                LogUtils.d(TAG, "Gained audio focus")
            } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
                // 暂时失去焦点,但允许降低音量而不是停止播放
                LogUtils.d(TAG, "Temporarily lost audio focus, can duck")
            }
        }

    val result: Int = mAudioManager.requestAudioFocus(
        afChangeListener,
        AudioManager.STREAM_MUSIC,
        AudioManager.AUDIOFOCUS_GAIN
    )
    return if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
        // 成功获取到音频焦点
        true
    }else
        false
}
相关推荐
liang_jy19 分钟前
Android View Tag
android
liang_jy42 分钟前
Android 架构中的统一分发与策略路由
android·架构
EasyDSS1 小时前
私有化视频会议系统/视频高清直播点播EasyDSS一体化视频平台赋能各行业数字化高效协同
音视频
scan7243 小时前
长期记忆存储在数据库里
android
xingpanvip3 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua
科研前沿5 小时前
镜像视界浙江科技有限公司的关键技术突破有哪些?
大数据·人工智能·科技·算法·音视频·空间计算
儿歌八万首6 小时前
Jetpack Compose 实战:实现一个动态平滑折线图
android·折线图·compose
东方佑7 小时前
VideoBlockTokenizer:视频色块语义token化器的设计与实现
音视频
Black蜡笔小新8 小时前
国标GB28181之后,视频监控EasyCVR的下一个“统一战场”在哪里?
音视频
沃虎Chinty-039 小时前
音频变压器选型与应用:三大核心功能深度解析
音视频