Android实战之音量获取与设置

安卓音量控制详解
本文详细介绍了如何在安卓设备上使用AudioManager API获取和设置不同类别的音量信息,包括通话、系统、铃声、音乐和提示音的音量最大值与当前值,并提供了具体的Kotlin代码示例。

获取和设置安卓音量信息主要使用了到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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值