Android 修改系统音量及监听

您所在的位置:网站首页 监听音量怎么调 Android 修改系统音量及监听

Android 修改系统音量及监听

2024-06-30 12:37:18| 来源: 网络整理| 查看: 265

效果

在这里插入图片描述

修改系统音量这种操作还是挺常见的,一般在多媒体开发中都多少会涉及到。

常用方法 获取音频管理器 mAudioManager = this.getSystemService(Context.AUDIO_SERVICE) as AudioManager 获取媒体音量最大值 mMaxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) 获取系统当前媒体音量 mCurrentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC)

这里涉及到几个常见音量类型:

STREAM_VOICE_CALL 通话STREAM_SYSTEM 系统STREAM_RING 铃声STREAM_MUSIC 媒体音量STREAM_ALARM 闹钟STREAM_NOTIFICATION 通知 获取系统音量模式 mAudioManager.ringerMode

音量模式:

RINGER_MODE_NORMAL 正常RINGER_MODE_SILENT 静音RINGER_MODE_VIBRATE 震动 设置系统媒体音量

来看一下是如何修改音量的

btn_add.setOnClickListener { if (mCurrentVolume mCurrentVolume = mMaxVolume } updateNum(mCurrentVolume) setStreamVolume(mCurrentVolume) } btn_reduce.setOnClickListener { if (mCurrentVolume > 0) { mCurrentVolume-- } else { mCurrentVolume = 0 } updateNum(mCurrentVolume) setStreamVolume(mCurrentVolume) }

注意,这里要判断一下是否超出了音量的最大值最小值。

在事件中,除了判断最大值最小值之外,还调用了两个方法

updateNum更新页面显示:

/** * 更新页面显示 */ private fun updateNum(volume: Int) { tv_volume.text = volume.toString() seekBar.progress = volume }

还调用了setStreamVolume方法,这里就涉及到setStreamVolume和adjustStreamVolume的区别:

setStreamVolume 直接设置音量,指哪打哪adjustStreamVolume 步长式设置音量,即10,20,30这样阶梯式

二者都可以设置音量,可以根据自己的业务需求来选择。

setStreamVolume

来看一下具体的setStreamVolume方法:

private fun setStreamVolume(volume: Int) { mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, AudioManager.FLAG_SHOW_UI) } 参数1:音量类型参数2:音量数值参数3: AudioManager.FLAG_SHOW_UI 调整音量时显示系统音量进度条 , 0 则不显示AudioManager.FLAG_ALLOW_RINGER_MODES 是否铃声模式AudioManager.FLAG_VIBRATE 是否震动模式AudioManager.FLAG_SHOW_VIBRATE_HINT 震动提示AudioManager.FLAG_SHOW_SILENT_HINT 静音提示AudioManager.FLAG_PLAY_SOUND 调整音量时播放声音 adjustStreamVolume 音量递增 private fun adjustRaise() { mAudioManager.adjustStreamVolume( AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI ) } 参数1:音量类型参数2:音量调整方向 AudioManager.ADJUST_RAISE 音量逐渐递增AudioManager.ADJUST_LOWER 音量逐渐递减AudioManager.ADJUST_SAME 不变 参数3:同setStreamVolume参数3 音量递减 private fun adjustLower(volume: Int) { mAudioManager.adjustStreamVolume( AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI ) }

Github: https://github.com/yechaoa/BrightnessAndVolume

监听音量控制按键

除了我们手动去改之外,用户也可以通过物理按键或是耳机来控制音量,这时,我们理应也要做出相应的改变,所以,还需要对音量按键做监听才行。

这里就用到熟悉的老方法了,重写Activity的onKeyDown方法:

/** * 监听并接管系统的音量按键, * 注意:最好保持原有逻辑不变 */ override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { when (keyCode) { //音量+按键 KeyEvent.KEYCODE_VOLUME_UP -> { if (mCurrentVolume mCurrentVolume = mMaxVolume } updateNum(mCurrentVolume) setStreamVolume(mCurrentVolume) return true } //音量-按键 KeyEvent.KEYCODE_VOLUME_DOWN -> { if (mCurrentVolume > 0) { mCurrentVolume-- } else { mCurrentVolume = 0 } updateNum(mCurrentVolume) setStreamVolume(mCurrentVolume) return true } } return super.onKeyDown(keyCode, event) }

其实很简单,拦截事件,然后执行我们的逻辑就行了。

总结

总的来说,代码量并不多,难度系数也不高,唯一要注意的是各个参数的类型,要根据自己的实际业务来选择即可。

ok,至此关于修改音量的讲解就全部结束了,如果对你有用,就点个赞吧^ - ^

Github

https://github.com/yechaoa/BrightnessAndVolume



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭