1. 程式人生 > >Android實戰之音量獲取與設定

Android實戰之音量獲取與設定

獲取和設定安卓音量資訊主要使用了到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