Android實戰之音量獲取與設定
阿新 • • 發佈:2019-01-25
獲取和設定安卓音量資訊主要使用了到
AudioManager
,通過getSystemService
拿到AudioManager
,然後就可以使用其提供的API輕鬆完成音量值的獲取和設定了。
獲取各類別音量最大值與當前值
fun getVoiceInfo(view: View) {
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
// 通話音量
val callVoiceMax = audioManager.getStreamMaxVolume (AudioManager.STREAM_VOICE_CALL)
val callVoiceCurrent = audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL)
println("callVoiceMax:$callVoiceMax ,callVoiceCurrent:$callVoiceCurrent")
// 系統音量
val systemVoiceMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM)
val systemVoiceCurrent = audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM)
println("systemVoiceMax:$systemVoiceMax ,systemVoiceCurrent:$systemVoiceCurrent")
// 鈴聲音量
val ringVoiceMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING)
val ringVoiceCurrent = audioManager.getStreamVolume(AudioManager.STREAM_RING)
println("ringVoiceMax:$ringVoiceMax ,ringVoiceCurrent:$ringVoiceCurrent")
// 音樂音量
val musicVoiceMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
val musicVoiceCurrent = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
println("musicVoiceMax:$musicVoiceMax ,musicVoiceCurrent:$musicVoiceCurrent")
// 提示音音量
val alarmVoiceMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM)
val alarmVoiceCurrent = audioManager.getStreamVolume(AudioManager.STREAM_ALARM)
println("alarmVoiceMax:$alarmVoiceMax ,alarmVoiceCurrent:$alarmVoiceCurrent")
}
輸出為:
10-22 14:18:48.810 24532-24532/com.happy.deviceinfo.demo I/System.out: callVoiceMax:11 ,callVoiceCurrent:5
10-22 14:18:48.812 24532-24532/com.happy.deviceinfo.demo I/System.out: systemVoiceMax:15 ,systemVoiceCurrent:6
10-22 14:18:48.813 24532-24532/com.happy.deviceinfo.demo I/System.out: ringVoiceMax:15 ,ringVoiceCurrent:6
10-22 14:18:48.819 24532-24532/com.happy.deviceinfo.demo I/System.out: musicVoiceMax:15 ,musicVoiceCurrent:2
10-22 14:18:48.821 24532-24532/com.happy.deviceinfo.demo I/System.out: alarmVoiceMax:15 ,alarmVoiceCurrent:10
設定音量值
同理,通過
AudioManager
提供的setStreamVolume
可輕鬆完成設定,以音樂音量為例:
fun setMusicVoice(view: View) {
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
// 設定前音量
val musicVoiceCurrentBeforeSet = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
println("設定前:musicVoiceCurrentBeforeSet:$musicVoiceCurrentBeforeSet")
// 設定音量
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_PLAY_SOUND)
// 設定好音量
val musicVoiceCurrentAfterSet = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
println("設定前:musicVoiceCurrentAfterSet:$musicVoiceCurrentAfterSet")
}
輸出為:
10-22 14:37:30.816 25012-25012/com.happy.deviceinfo.demo I/System.out: 設定前:musicVoiceCurrentBeforeSet:2
10-22 14:37:30.827 25012-25012/com.happy.deviceinfo.demo I/System.out: 設定前:musicVoiceCurrentAfterSet:0