当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

10.3 AudioManager(音频管理器)

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:27:57

本节引言:在多媒体的第一节,我们用SoundPool写了个Duang的示例,小猪点击一个按钮后,突然发出"Duang"的一声,而且当时的声音很大,吓死宝宝了,好在不是上班时间,上班时间偷偷写博客给经理知道会作死的~嗯,好的,说到这个声音大小就得介绍下Android为我们提供的(音量大小控制)的API:AudioManager(音频管理器)了,该类位于Android.Media包下,提供了音量控制与铃声模式相关操作!本节我们就来学下这个东东的用法,你可以写一个Demo,一个简单的静音,每次看小电影之前,先进Demo点下静音,然后,说说而已哈~嗯,话不多说,开始本节内容!官方API文档:AudioManager1.获得AudioManager对象实例AudioManager audiomanage = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);2.相关方法详解常用方法:adjustVolume(int direction, int flags):控制手机音量,调大或者调小一个单位,根据第一个参数进行判断AudioManager.ADJUST_LOWER,可调小一个单位;AudioManager.ADJUST_RAISE,可调大一个单位adjustStreamVolume(int streamType, int direction, int flags):同上,不过可以选择调节的声音类型1)streamType参数,指定声音类型,有下述几种声音类型:STREAM_ALARM:手机闹铃 STREAM_MUSIC:手机音乐 STREAM_RING:电话铃声 STREAM_SYSTEAM:手机系统 STREAM_DTMF:音调 STREAM_NOTIFICATION:系统提示STREAM_VOICE_CALL:语音电话2)第二个参数和上面那个一样,调大或调小音量的3)可选的标志位,比如AudioManager.FLAG_SHOW_UI,显示进度条,AudioManager.PLAY_SOUND:播放声音setStreamVolume(int streamType, int index, intflags):直接设置音量大小getMode( ):返回当前的音频模式setMode( ):设置声音模式有下述几种模式:MODE_NORMAL(普通), MODE_RINGTONE(铃声),MODE_IN_CALL(打电话),MODE_IN_COMMUNICATION(通话)getRingerMode( ):返回当前的铃声模式setRingerMode(int streamType):设置铃声模式有下述几种模式:如RINGER_MODE_NORMAL(普通)、RINGER_MODE_SILENT(静音)、RINGER_MODE_VIBRATE(震动)getStreamVolume(int streamType):获得手机的当前音量,最大值为7,最小值为0,当设置为0的时候,会自动调整为震动模式getStreamMaxVolume(int streamType):获得手机某个声音类型的最大音量值setStreamMute(int streamType,boolean state):将手机某个声音类型设置为静音setSpeakerphoneOn(boolean on):设置是否打开扩音器setMicrophoneMute(boolean on):设置是否让麦克风静音isMicrophoneMute():判断麦克风是否静音或是否打开isMusicActive():判断是否有音乐处于活跃状态isWiredHeadsetOn():判断是否插入了耳机其他方法:abandonAudioFocus(AudioManager.OnAudioFocusChangeListenerl):放弃音频的焦点adjustSuggestedStreamVolume(int,int suggestedStreamType intflags):调整最相关的流的音量,或者给定的回退流getParameters(String keys):给音频硬件设置一个varaible数量的参数值getVibrateSetting(int vibrateType):返回是否该用户的振动设置为振动类型isBluetoothA2dpOn():检查是否A2DP蓝牙耳机音频路由是打开或关闭isBluetoothScoAvailableOffCall():显示当前平台是否支持使用SCO的关闭调用用例isBluetoothScoOn():检查通信是否使用蓝牙SCOloadSoundEffects():加载声音效果playSoundEffect((int effectType, float volume):播放声音效果egisterMediaButtonEventReceiver(ComponentName eventReceiver):注册一个组件MEDIA_BUTTON意图的唯一接收机requestAudioFocus(AudioManager.OnAudioFocusChangeListener l,int streamType,int durationHint)请求音频的焦点setBluetoothScoOn(boolean on):要求使用蓝牙SCO耳机进行通讯startBluetoothSco/stopBluetoothSco()():启动/停止蓝牙SCO音频连接unloadSoundEffects():卸载音效3.使用示例嘿嘿,属性蛮多的,有些还涉及到蓝牙这些东东,这里我们只讲解最常见的一些方法!遇到一些特殊的没见过的,我们再来查文档!简单的示例:使用Mediaplayer播放音乐,通过AudioManager调节音量大小与静音!对了,先在res下创建一个raw的文件夹,往里面丢一个MP3资源文件!运行效果图:代码实现:布局代码activity_main.xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="播放" /> <Button android:id="@+id/btn_stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:enabled="false" android:text="停止" /> <Button android:id="@+id/btn_higher" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="调高音量" /> <Button android:id="@+id/btn_lower" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="调低音量" /> <Button android:id="@+id/btn_quite" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="静音" /></LinearLayout> MainActivity.java:public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_start; private Button btn_stop; private Button btn_higher; private Button btn_lower; private Button btn_quite; private MediaPlayer mePlayer; private AudioManager aManager; //定义一个标志用来标示是否点击了静音按钮 private int flag = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

[1] [2]  下一页


10.3 AudioManager(音频管理器)