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
}
相关推荐
fengci.25 分钟前
ctfshow其他(web396-web407)
android
JJay.42 分钟前
Android 17 大屏适配变化解
android
TE-茶叶蛋2 小时前
结合登录页-PHP基础知识点解析
android·开发语言·php
alexhilton2 小时前
Jetpack Compose元球边缘效果
android·kotlin·android jetpack
Black蜡笔小新2 小时前
花屏/蓝屏/黑屏/画面抖动/冻结/模糊检测,聊聊EasyCVR的视频质量诊断插件,解决运维人的实际烦恼
运维·音视频
琪伦的工具库2 小时前
批量音频音量调整工具使用说明:固定增减分贝与目标响度两种模式怎么选
音视频
y小花3 小时前
安卓音频子系统之USBAlsaManager
android·音视频
AI2512243 小时前
2026年9款主流AI视频生成器功能评测
人工智能·音视频
2401_885885043 小时前
视频短信二次开发接口怎么做?视频短信API发送教程
音视频
KevinCyao4 小时前
安卓android视频短信接口怎么集成?AndroidStudio视频短信开发指南
android