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
}
相关推荐
百锦再7 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
2501_916008898 小时前
全面介绍Fiddler、Wireshark、HttpWatch、SmartSniff和firebug抓包工具功能与使用
android·ios·小程序·https·uni-app·iphone·webview
玉梅小洋8 小时前
Windows 10 Android 构建配置指南
android·windows
Libraeking10 小时前
视觉篇:Canvas 自定义绘图与高级动画的华丽圆舞曲
android·经验分享·android jetpack
Fushize10 小时前
多模块架构下的依赖治理:如何避免 Gradle 依赖地狱
android·架构·kotlin
Jomurphys11 小时前
Kotlin - 类型别名 typealias
android·kotlin
Haha_bj11 小时前
Flutter ——flutter_screenutil 屏幕适配
android·ios
Haha_bj12 小时前
Flutter ——device_info_plus详解
android·flutter·ios
前端小伙计12 小时前
Android/Flutter 项目统一构建配置最佳实践
android·flutter
Mr_sun.13 小时前
Day09——入退管理-入住-2
android·java·开发语言