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
}