添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

AudioManager 的作用 :调整音量和控制响铃模式

  • STREAM_VOICE_CALL:通话声音
  • STREAM_SYSTEM:系统声音,包括按键声音等
  • STREAM_RING:来电响铃
  • STREAM_MUSIC:媒体声音(包括音乐,视频,游戏声音)
  • STREAM_ALARM:闹钟声音
  • STREAM_NOTIFICATION:通知声音

声音模式分类

  • RINGER_MODE_NORMAL:正常模式
    所有声音都正常,包括系统声音,来电响铃,媒体声音,闹钟,通知声音都有
  • RINGER_MODE_SILENT:静音模式
    该模式下,来电响铃,通知,系统声音和震动都没有;闹钟,通话声音保持; 大部分手机媒体声音依然有,但是小米和少部分oppo手机在设置静音的同时会将媒体声音自动调整为0,此时没有媒体声音
  • RINGER_MODE_VIBRATE:震动模式
    该模式下,来电,通知保持震动没有声音;但是媒体,闹钟依然有声音。 不过小米手机只有正常模式和静音模式,没有震动模式

控制声音模式的方法

  • setRingerMode(int):设置指定的响铃模式
  • getRingerMode():得到当前的响铃模式

响铃模式改变的广播

  • action:RINGER_MODE_CHANGED_ACTION
  • extra:EXTRA_RINGER_MODE
  • adjustStreamVolume(int streamType, int direction, int flags):单步控制指定声音的音量,第一个参数为音频流类型,第二个参数为加音量还是减音量,第三个参数为flags,默认为0即可。
  • setStreamVolume(int streamType, int index, int flags):指定设置声音的音量,第一个参数为音频流类型,第二个参数为调整的音量大小,第三个参数为flags,默认为0既可。
  • getStreamVolume(int streamType):得到指定音频流当前的音量
  • getStreamMaxVolume(int streamType):得到指定音频流的最大音量

扬声器控制

  • setSpeakerphoneOn(boolean on):控制扬声器开或者关
  • isSpeakerphoneOn():判断当前扬声器是开还是关

麦克风控制

  • setMicrophoneMute(boolean on):设置麦克风静音开或者关
  • isMicrophoneMute():判断麦克风是否静音

检查是否插入耳机

  • isWiredHeadsetOn():检查是否插入耳机
public class AudioActivity extends Activity { private AudioManager mAudioManager; private static final String TAG = "AudioActivity" ; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_audio); initData(); mBroadcast = new MyRingerBroadcast(); IntentFilter intent = new IntentFilter(); intent.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); registerReceiver(mBroadcast, intent); @Override protected void onDestroy () { super .onDestroy(); unregisterReceiver(mBroadcast); private void initData () { mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int mode = mAudioManager.getRingerMode(); Log.i(TAG, "initData: mode=" + mode); * 静音模式 * @param view public void silent (View view) { mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); * 震动模式 * @param view public void vibrate (View view) { mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); int mode = mAudioManager.getRingerMode(); Log.i(TAG, "initData: mode=" + mode); * 正常模式 * @param view public void normal (View view) { mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); int mode = mAudioManager.getRingerMode(); Log.i(TAG, "initData: mode=" + mode); * 单步调整媒体声音 public void adjustMusicVolume () { int curVolume = mAudioManager.getStreamVolume(STREAM_MUSIC); for ( int i = 0 ; i <= curVolume; i++) { mAudioManager.adjustStreamVolume(STREAM_MUSIC, ADJUST_RAISE, FLAG_SHOW_UI); * 调整某个指定音频流的声音的音量 public void setMusicVolume () { int curVolume = mAudioManager.getStreamVolume(STREAM_MUSIC); mAudioManager.setStreamVolume(STREAM_MUSIC, curVolume , 0 ) private MyRingerBroadcast mBroadcast; *监听响铃模式切换 private class MyRingerBroadcast extends BroadcastReceiver { @Override public void onReceive (Context context, Intent intent) { String action = intent.getAction(); int mode = intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, - 1 ); Log.i(TAG, "onReceive: action==" + action + " the mode=" + mode);

小米手机在静音模式下没有媒体声音的解决方案

一般手机在设置为静音模式下依然保持媒体声音,也就是在静音模式下,播放音乐,视频依然有声音。但是小米手机在设置为静音模式同时将媒体声音自动调整为0。为了解决小米手机在设置静音模式下依然保持媒体声音,解决方案为:在设置静音的同时延时大概500ms之后调整媒体声音到静音之前的声音。

//设置静音
int curVolume = mAudioManager.getStreamVolume(STREAM_MUSIC);
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mAudioManager.setStreamVolume(STREAM_MUSIC, curVolume , 0);
            }, 500);

注意:这里为何要延时500ms之后才去调整媒体声音呢?因为不延时调整媒体声音会无效。声音涉及到硬件资源,设置静音模式后立马去调整声音可能资源还没有及时释放,所以延时500ms等待硬件资源释放后在去调整媒体声音及有效了。

回声(或称回音)是指障碍物对 声音 的反射。声波在遇到障碍物时,一部分声波会穿过障碍物,而另一部分声波会反射回来形成回声。若障碍物具有坚硬光滑的表面易产生回声;反之,具有柔软的表面则易吸收 声音 ;另外,粗糙的表面易散射 声音 。回声相比那些直接传播的 声音 所经过的路程更长,所以会比直接传播的 声音 晚被听到。如果两列声波的时间间隔小于0.1秒,人耳边无法分辨,只能听到被延长的 声音 。因为室温(20℃)时空气中的声速是343米每秒,所以站在声源处的人要听到回声需要障碍物到声源的距离至少17米。 很多时候直播有连麦的需求,这时 Audio Manager audio Manager = ( Audio Manager ) mContext.getSystemService  (Context. AUDIO _SERVICE);          // audio Manager .setMode( Audio Man... 问题描述:在不同的 使用 场景,用户会有调节不同 音频 流音量的需求,APP可以调用接口setStreamVolume(int streamType, int index, int flags)来满足这一需求,但往往开发者并没有将streamType参数与当前场景正在播放的 音频 流类型设置一致,并且该接口可以截获系统的音量按键,导致用户 使用 APP时,按音量键调节音量后,当前的 声音 音量大小却没有变化。建议:由于这个接口直接作用在手机的底层麦克风数据通路,影响范围很大,不建议 使用 这个接口来实现语音静音发送的需求。 这是自己第一次通过写文章的方式来记录在开发中的一些心得,在这里也希望这是一个好的开始并一直坚持下去,同时更是希望能帮助到有需要的开发者。 这篇文章主要讲述的是 Android 使用 Audio Record类和 Audio Track类来进行语音采集和播放相关的知识,在这篇文章中首先介绍的是有关 声音 的一些概念性知识,然后介绍 声音 的采集, 2012-04-03 Audio 输出 通道 有很多,Speaker、headset、bluetooth A2DP等。通话或播放音乐等 使用 Audio 输出过程中,可能发生 Audio 输出 通道 的切换。比如,插入有线耳机播放音乐时, 声音 是从耳机发出的;而此时拔出耳机, Audio 输出 通道 会发生切换。如果音乐播放器不做处理, Audio 输出是被切换到扬声器的, 声音 直接从Speaker发出。我们在... a、通过系统服务获得 声音 管理 器: Audio Manager audio Manager = ( Audio Manager )getSystemService(Service. AUDIO _SERVICE);b、根据实际需要调用适当的方法:(常用方法) audio Manager .adjustStreamVolume(int streamType, int direction, int flags);stre... 初始化 音频 管理 器/*** 初始化 音频 管理 器*/private void init Audio Manager () { audio Manager = ( Audio Manager ) context.getSystemService(Context. AUDIO _SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){aud... 废话不多说,直接上代码:private void setSpeakerphoneOn(boolean on) {if (on) {// 为true打开喇叭扩音器;为false关闭喇叭扩音器. audio Manager .setSpeakerphoneOn(true);} else { audio Manager .setSpeakerphoneOn(false);//关闭扬声器 audio Manager .se... 音频 播放 Audio Track之入门篇 音频 播放 Audio Track作用 Audio Track实现PCM 音频 播放1. 配置基本参数StreamType 音频 流类型MODE模式(static和stream两种)最小缓冲区大小2. 创建 Audio Track对象3. 获取PCM文件,转成DataInputStream4. 开启/停止播放总结 音频 播放 音频 播放 声音 分为MediaPlayer和 Audio Trac... 开始写文章了,才知道写文章真心耗费心力,希望自己尽量做到快速更新,也希望这些文章真心能帮助到开发者们。 这篇文章主要讲述 Android 声音 采集相关的知识,首先介绍 声音 的基础知识,然后介绍如何采集 声音 ,最后再讲述 Android 声音 录制和回声消除的相关步骤。 整个项目已经开源,开源地址:SopCastComponent 二、基础知识 声音 的原理 声音 是振动产生的声波,通过介质(空气或固体、液体)传播并能被人或动物听觉器官所感知的波动现象。 声音 的频率一般会以赫兹表示,记为Hz,指每秒钟周 手机都有 声音 模式, 声音 、静音还有震动,甚至震动加 声音 兼备,这些都是手机的基本功能。在 Android 手机中,我们同样可以通过 Android 的SDK提供的 声音 管理 接口来 管理 手机 声音 模式以及调整 声音 大小,这就是 Android Audio Manager 使用 。 以下分别是 Audio Ma 本文实例讲述了 Android 开发之关闭和打开Speaker(扬声器)的方法。分享给大家供大家参考,具体如下:private int currVolume = 0;/*** 打开扬声器*/private void openSpeaker() {try{ Audio Manager audio Manager = ( Audio Manager ) getSystemService(Context. AUDIO _S...