android之AudioManager详解_什么是AudioManager

AudioManager类位于android.Media 包中,该类提供访问控制音量和钤声模式的操作。官方文档中注明了:Use Context.getSystemService(Context.AUDIO_SERVICE) to get an instance of this class.所以我们可以通过下面的语句获得: AudioManager audiomanage =

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

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

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

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

 

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,则设置为静音;否则,不设置为静音。

//音量控制,初始化定义

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


 

直接控制音量的多少:

if(isSilent){
  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0, 0);
}else{
  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,tempVolume, 0);//tempVolume:音量绝对值
}

 

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

//降低音量,调出系统音量控制
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);

//通话音量

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 ); 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 程序员垃圾简历长什么样?

    程序员垃圾简历长什么样?已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份这篇文章会用实例告诉你,什么是差的程序员简历!疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》一石激起千层浪,三天收到两百多封简历。花光了两个星期的所有空闲时…

  • SQL Server中的GUID

    GUID(Globaluniqueidentifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及CPU时钟的唯一数字生成的的一个16字节的二进制值。GUID

    2021年12月22日
  • 2020朝花夕拾-不务正业的大学生做了什么比赛?[通俗易懂]

    2020朝花夕拾-不务正业的大学生做了什么比赛?[通俗易懂]朝花夕拾,旧事重提之意。恰逢CSDN年终征文,所以写作本文为年终总结,实为大学四年的总结,和CSDN一起成长参与各类竞赛的回忆。四年里和小伙伴们一起辛苦奋斗做了那么多比赛,当比赛结束,那些作品便无人问津了,放在学校的犄角旮旯里随着时间风化,也许并没有那么完善,但是对于当时付出时间和精力的我们来说,尤为珍贵,因此今天将它们一一回顾,作为纪念。

  • ubuntu删除route_linux下route add route del 用法

    ubuntu删除route_linux下route add route del 用法显示现在所有路由#routeroot@ubuntu:~#routeKernelIProutingtableDestinationGatewayGenmaskFlagsMetricRefUseIface10.147.9.0*255.255.255.0U…

  • 图的数据结构_数据结构关于图的算法

    图的数据结构_数据结构关于图的算法图的定义和术语完全图:任意两个点都有一条边相连连通图(强连通图)连通分量(强连通分量)有向图和无向图的工程案例#include “pch.h”#include <iostream>using namespace std;//有向图 无向图 有向网 无向网enum GraphKing { DG, DN, UDG, UDN };//定义图…

  • 善待自己:改变命运的N个人生哲理

    善待自己:改变命运的N个人生哲理心灵的栅栏  人与月亮的距离并不遥远,因为人与人心灵间的距离更为遥远。  ——王尔德    当玛格丽特的丈夫杰瑞因脑瘤去世后,她变得异常愤怒,生活太不公平,她憎恨孤独。孀居3年,她的脸变得紧绷绷的。  一天,玛格丽特在小镇拥挤的路上开车,忽然发现一幢她喜欢的房子周围竖起一道新的栅栏。那房子已有一百多年的历史,颜色变白,有很大的门廊,过去一直隐藏在路后面。如今马路扩展,街口竖起了红绿灯,小镇已颇有些

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号