前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >android之AudioManager详解_什么是AudioManager

android之AudioManager详解_什么是AudioManager

作者头像
全栈程序员站长
发布于 2022-07-20 05:51:49
发布于 2022-07-20 05:51:49
4.9K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是全栈君。

AudioManager类位于android.Media 包中,该类提供访问控制音量和钤声模式的操作。

官方文档中注明了:Use Context.getSystemService(Context.AUDIO_SERVICE) to get an instance of this class.

所以我们可以通过下面的语句获得:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AudioManager audiomanage = (AudioManager)getAcitivity().getSystemService(Context.AUDIO_SERVICE);

audiomanager就是我们定义的控制系统声音的对象。

这里只讲述几个比较常用到的方法:

adjustVolume(int direction, int flags)

用来控制手机音量大小,

当传入的第一个参数为AudioManager.ADJUST_LOWER 时,可将音量调小一个单位,

传入AudioManager.ADJUST_RAISE时,则可以将音量调大一个单位。

adjustStreamVolume(int streamType, int direction, intflags)

(以步长)调节手机音量大小 参数1:声音类型,可取为STREAM_VOICE_CALL(通话)、STREAM_SYSTEM(系统声音)、STREAM_RING(铃声)、STREAM_MUSIC(音乐)、STREAM_ALARM(闹铃声) 参数2:调整音量的方向,可取ADJUST_LOWER(降低)、ADJUST_RAISE(升高)、ADJUST_SAME 参数3:可选的标志位

setStreamVolume(int streamType, int index, intflags)

直接设置音量大小

getMode()

返回当前音频模式,如 NORMAL(普通), RINGTONE(铃声), orIN_CALL(通话)

setMode()

设置声音模式,可取值NORMAL(普通), RINGTONE(铃声), or IN_CALL(通话)

getRingerMode()

返回当前的铃声模式。如RINGER_MODE_NORMAL(普通)、RINGER_MODE_SILENT(静音)、RINGER_MODE_VIBRATE(震动)

setRingerMode(int ringerMode)

改变铃声模式

getStreamVolume(int streamType)

取得当前手机的音量,最大值为7,最小值为0,当为0时,手机自动将模式调整为“震动模式”。

getStreamMaxVolume(int streamType)

获得当前手机最大铃声。

setStreamMute(int streamType, boolean state) 静音或不静音音频流 设置指定声音类型(streamType)是否为静音。如果state为true,则设置为静音;否则,不设置为静音。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//音量控制,初始化定义

AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
//最大音量
int maxVolume =mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
//当前音量
int currentVolume =mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

直接控制音量的多少:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(isSilent){
  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0, 0);
}else{
  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,tempVolume, 0);//tempVolume:音量绝对值
}

以一步步长控制音量的增减,并弹出系统默认音量控制条:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//降低音量,调出系统音量控制
if(flag ==0){
  mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_LOWER,
                            AudioManager.FX_FOCUS_NAVIGATION_UP);
}
//增加音量,调出系统音量控制
else if(flag ==1){
  mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,
                            AudioManager.FX_FOCUS_NAVIGATION_UP);
}

常用方法: android audioManager获取音量: 先获取AudioManager实例, AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//通话音量

int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL ); 

int current = mAudioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL ); 

//系统音量

int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM ); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM ); 

//铃声音量

max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_RING); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_RING ); 

//音乐音量

max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC ); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC ); 



//提示声音音量

max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM ); 

current = mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM ); 

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121468.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年3月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android 修改系统音量及监听
还调用了setStreamVolume方法,这里就涉及到setStreamVolume和adjustStreamVolume的区别:
yechaoa
2022/06/10
2.3K0
Android 修改系统音量及监听
Android声音和亮度设置
另外,还有个public void adjustStreamVolume(int streamType, int direction, int flags)方法也可用来调整音量,
码客说
2019/10/22
2K0
Android 听筒扬声器切换 并且监听音量变化
audioManager.setMode(int mode) mode 类型参照表:
103style
2022/12/19
1.7K0
Android开发笔记(五十八)铃声与震动
SeekBar继承自进度条ProcessBar,有关ProcessBar的介绍见《Android开发笔记(四十九)异步任务处理AsyncTask》。SeekBar与ProcessBar的不同之处在于,SeekBar是可以拖动的,因此SeekBar可用于媒体播放的进度条,在拖动进度条后,播放器可快进或者快退到指定位置开始播放媒体;SeekBar也可用于调节铃声的音量大小、调节屏幕的亮度、调节字体的大小等等。 下面是SeekBar新增加的几个方法与事件: setThumb : 设置当前进度位置的图标 setThumbOffset : 设置当前进度图标的偏移量 setKeyProgressIncrement : 设置使用方向键更改进度时每次的增加值 拖动条的拖动事件 监听器类名 : OnSeekBarChangeListener 设置监听器的方法 : setOnSeekBarChangeListener 监听器需要重写的方法 :  onProgressChanged : 拖动过程中触发 onStartTrackingTouch : 开始拖动时触发 onStopTrackingTouch : 停止拖动时触发,一般在该方法中加入业务逻辑
aqi00
2019/01/18
1.7K0
音量及屏幕亮度调节
音量及屏幕亮度调节 屏幕亮度调节 /** * 滑动改变亮度 * @param percent */ private void onBrightnessSlide(float percent) { if (mBrightness < 0) { // mBrightness是当前屏幕的亮度 mBrightness = getWindow().getAttributes().screenBrightness; if (mBrightness <= 0.00f) mBrightness = 0
xiangzhihong
2018/01/26
2K0
音视频基础能力之 Android 音频篇 (四):音频路由
涉及硬件的音视频能力,比如采集、渲染、硬件编码、硬件解码,通常是与客户端操作系统强相关的,就算是跨平台的多媒体框架也必须使用平台原生语言的模块来支持这些功能。本系列文章将详细讲述移动端音视频的采集、渲染、硬件编码、硬件解码这些涉及硬件的能力该如何实现。
声知视界
2024/12/23
2210
音视频基础能力之 Android 音频篇 (四):音频路由
【Android 应用开发】Android游戏音效实现
游戏中会根据不同的动作 , 产生各种音效 , 这些音效的特点是短暂(叫声,爆炸声可能持续不到一秒) , 重复(一个文件不断重复播放) , 并且同时播放(比如打怪时怪的叫声 , 和技能释放的声音需要同时播放) , 即时(技能用处之后声音马上随着玩家操作发出,不能有延迟).
韩曙亮
2023/03/27
6640
实测Android音频的焦点获取和归还
最近老板想在产品中的短视频后者直播播放的时候对于手机中的音乐播放器进行暂停播放,并且退出视频播放后手机的音乐播放器还能继续播放之前的音乐。
静默加载
2022/02/09
3.8K0
实测Android音频的焦点获取和归还
O泡果奶-APK反编译-Lua脚本
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/02
1.1K0
Android开发(20)蜂鸣提示音和震动
最近在读zxing项目,学到了不少东西。推荐大家也读读。里面有个BeepManager类,实现一个蜂鸣音和震动的实现。
张云飞Vir
2020/03/16
2.1K0
Android 打开关闭手机扬声器
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
程序员飞飞
2020/02/27
3.1K0
android里面播放声音的方法---执行某项操作发出滴的一声
/****************提示声音 震动  发送成功之后显示**********/ private MediaPlayer mediaPlayer; private boolean playBeep; private static final float BEEP_VOLUME = 0.10f; private boolean vibrate; private void initBeepSound() { if (playBeep && mediaPlayer == null) { // The v
wust小吴
2019/07/08
2.6K0
Android系统服务
本篇博文主要介绍的是Android中的Java服务。 这部分服务大部分都有一个Manager类,其实就是一个RPC调用,用户通过调用xxxManager的方法,实际上被Binder给迁移到system_server进程中对应的xxxManagerService中对应的方法,并将结果再通过binder带回。
小小工匠
2021/08/16
1.8K0
从 Android 静音看正确的查找 bug 的姿势
0、写在前面 没抢到小马哥的红包,无心回家了,回公司写篇文章安慰下自己TT。。话说年关难过,bug 多多,时间久了难免头昏脑热,不辨朝暮,难识乾坤。。。艾玛,扯远了,话说谁没踩过坑,可视大家都是如何从坑里爬出来的呢? 1、实现个静音的功能 话说,有那么一天, PM:『我这里有个需求,很简单很简单那种』 RD:『哦,需要做三天』 PM:『真的很简单很简单那种』 RD:『哦,现在需要做六天了』 对呀,静音功能多简单,点一下,欸,静音了;再点一下,欸,不静音了;再点一下,欸。。。 我一看 API,是挺简单的: p
腾讯Bugly
2018/03/23
1.1K0
android学习笔记----关于音频焦点Audio Focus
为了便于理解,我们以android的8.0以前的版本为例,8.0以后有一定改动,但是基本思路一样。
砖业洋__
2023/05/06
1.8K0
Android 音量系统分析
最近在处理一个蓝牙设备播放没有声音问题时,发现是设置音量的问题,顺便学习了一下Android系统的音量构架原理及设置方法。这里主要参考了rinswindqin同学写的有关音频及音量分析的文章,加了一些
QQ音乐技术团队
2017/10/12
4.2K0
Android 音量系统分析
笔记60 | Android控制音量与音频播放的学习
控制音量与音频播放 编写:kesenhoo 良好的用户体验应该是可预期且可控的。如果我们的应用可以播放音频,那么显然我们需要做到能够通过硬件按钮,软件按钮,蓝牙耳麦等来控制音量。 同样地,我们需要能够对应用的音频流进行播放(Play),停止(Stop),暂停(Pause),跳过(Skip),以及回放(Previous)等动作,并且并确保其正确性。 鉴别使用的是哪个音频流(Identify Which Audio Stream to Use) 为了创建一个良好的音频体验,我们首先需要知道应用会使用到哪些音频流
项勇
2018/06/19
2K0
Android SoundPool 音效播放库
我们如果想在应用中进行播放一些音效,例如提示音,提示短语等简短的音频文件。可以使用 SoundPool 这个工具进行快捷播放。
zinyan.com
2023/07/14
7700
Android SoundPool 音效播放库
什么是音频焦点管理?音频焦点的行为准则是什么?
两个或两个以上的 Android 应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术,但却会给用户带来很大的困扰。为了避免所有音乐应用同时播放,Android 引入了“音频焦点”的概念。 一次只能有一个应用获得音频焦点。
用户9253515
2022/01/17
2.3K0
Android 音频开发入门指南
Android 平台提供了一套丰富的音频 API,使得开发者可以轻松地为应用添加音频播放、录制、处理等功能。这些 API 包括:
陆业聪
2024/07/23
2560
Android 音频开发入门指南
相关推荐
Android 修改系统音量及监听
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文