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
}
相关推荐
AI视频工具指南34 分钟前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
呆呆敲代码的小Y2 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
辰辰观影3 小时前
无广告播放器推荐来啦
音视频
TrueDei3 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
思想觉悟3 小时前
SEAndroid实战
android·linux·c++
思想觉悟4 小时前
Aosp开发磨刀石之ADB速查
android·c++
一条破秋裤4 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_966827454 小时前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频
八月的雨季 最後的冰吻6 小时前
音视频面试--延迟优化
面试·职场和发展·音视频
应用市场6 小时前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理