控制音频的音量大小
系统有提供AudioManager管理音频相关服务
文档地址:https://developer.android.com/reference/android/media/AudioManager
两种方案实现控制音频音量大小
1、adjustStreamVolume(int streamType, int direction, int flags)
- streamType 音频流类型
- direction 音量调整方向 ADJUST_LOWER 减小音量 ADJUST_RAISE增大音量ADJUST_SAME主要用于显示当前音量大小
- flags FLAG_PLAY_SOUND调整音量时播放声音 FLAG_SHOW_UI显示系统的音量UI
增加音量
var am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND)
减少音量
var am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND)
2、setStreamVolume(int streamType, int index, int flags)
- streamType 音频流类型
- index 音量大小
- flags FLAG_PLAY_SOUND调整音量时播放声音 FLAG_SHOW_UI显示系统的音量UI
var am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
am.setStreamVolume(AudioManager.STREAM_MUSIC, position, AudioManager.FLAG_PLAY_SOUND)
注意
From N onward, volume adjustments that would toggle Do Not Disturb are not allowed unless the app has been granted Do Not Disturb Access
Android N之后如果开启勿扰模式使用setStreamVolume方法的时候要先申请权限,否则会抛出权限异常的crash
适配Android N
/**
*是否可控制音量
*/
fun canControllerVolume(): Boolean {
try {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE)
as NotificationManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N &&!notificationManager.isNotificationPolicyAccessGranted) {
startActivity(Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS))
return false
}
return true
} catch (e: Exception) {
return false
}
}
文章有什么不对的地方,请大家斧正