android播放语音,切换听筒模式遇到的问题
android播放语音,切换听筒模式遇到的问题
2016年09月18日 15:14:40 Jessehuyang 阅读数:4943 标签: android
在android5.0以上我们设置听筒模式audioManager.setMode(AudioManager.MODE_IN_CALL)没有效果;后来各种查阅资料,发现android5.0以上Google官方文档推荐使用
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
直接上切换代码:
/*** 设置语音播放的模式* @param ctx* @param mode*/
public void setAudioMode(Context ctx, int mode) {if (mode != AudioManager.MODE_NORMAL && mode != AudioManager.MODE_IN_COMMUNICATION) {return;}AudioManager audioManager = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);if (mode == AudioManager.MODE_NORMAL) {audioManager.setSpeakerphoneOn(true);//打开扬声器} else if (mode == AudioManager.MODE_IN_COMMUNICATION) {audioManager.setSpeakerphoneOn(false);//关闭扬声器}audioManager.setMode(mode);
}
做到这一步,如果此时还是没有解决问题:
那就是在播放模式没有设置正确:
在这里我使用的是AudioTask播放语音,初始化AudioTask设置如下:int sampleRate = readInt(packet, offset + 36);//比特率int minBufferSize = AudioTrack.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);//缓冲大小AudioTrack track = new AudioTrack(AudioManager.STREAM_VOICE_CALL, sampleRate,AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT,minBufferSize, AudioTrack.MODE_STREAM);我之前一直设置的是AudioManager.STREAM_MUSIC,找这个问题找了一天后来找到,知道看到下面这个网站,才找到答案
下面是链接:
[这里写链接内容](http://stackoverflow.com/questions/6577646/what-is-audio-focus-in-android-class-audiomanager?rq=1)
- 1
写到这里就结束了,稍微扩展下,
像很多音乐播放器,插入耳机时会使用耳机播放,当我们拔出而且得时候,会暂停,或者别的操作如何实现咧?
其实很简单,当耳机插入或者链接蓝牙耳机,系统已经默认处理插入耳机切换模式的操作,此时我们需要处理就是拔出耳机的处理
监听耳机状态首先想到广播:而系统也为我们提供相应的广播,我们只需要监听耳机变化广播就可以了
代码如下:
- state — 0代表拔出,1代表插入
- name— 字符串,代表headset的类型。
microphone – 1代表这个headset有麦克风,0则没有。
BroadcastReceiver mHeadSetReceiver = new BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub if(intent.hasExtra("state")){ if(intent.getIntExtra("state", 0)==0){ Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show(); } else if(intent.getIntExtra("state", 0)==1){ Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show(); } }
}
注意:这个广播必须是在代码里面注册Receiver才有效,在xml中添加intentfilter没效。
android播放语音,切换听筒模式遇到的问题相关推荐
- iOS语音播放之切换听筒和扬声器的方法解决方案
iOS下微信语音播放之切换听筒和扬声器的方法解决方案 [[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; //建议在播放之前设置 ...
- android 设置听筒模式切换,Android开发【06-29视频贴】切换听筒模式部分手机失效,怎么解决?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 就是我做的是一个可以切换手机听筒模式和扬声器模式的APP,在其他手机上可以正常切换,但是在华为手机上切换失败,是什么原因? 是不是华为手机又其他方式?希望 ...
- android关闭听筒模式,Android开发【06-29视频贴】切换听筒模式部分手机失效,怎么解决?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 就是我做的是一个可以切换手机听筒模式和扬声器模式的APP,在其他手机上可以正常切换,但是在华为手机上切换失败,是什么原因? 是不是华为手机又其他方式?希望 ...
- android开发 听筒模式,Android开发【06-29视频贴】切换听筒模式部分手机失效,怎么解决?...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 就是我做的是一个可以切换手机听筒模式和扬声器模式的APP,在其他手机上可以正常切换,但是在华为手机上切换失败,是什么原因? 是不是华为手机又其他方式?希望 ...
- 手机 播放音频 切换听筒和
奇葩需求年年有 今年特别多, 东西不难 , 但总忘 [[self.receiverSwitch rac_signalForControlEvents:UIControlEventValueChan ...
- 原生android 播放语音、获取wifi名字
最近在研究android获取wifi名字.想实现一个类似链接wifi后,APP里播放下,链接这个wifi地方的信息.比如,已连接wifi,APP就播放语音啊天气啊.或者欢迎使用本wifi等等. 这里记 ...
- Android5.0版本之后切换听筒模式
5.0以前Android听筒模式和扬声器模式这样就管用 扬声器: //关闭麦克风 mAudioManager.setMicrophoneMute(false); // 打开扬声器 mAud ...
- iOS 类微信语音播放之切换听筒和扬声器的方法解决方案
[[UIDevice currentDevice] setProximityMonitoringEnabled:NO]; //建议在播放之前设置yes,播放结束设置NO,这个功能是 //添加监听 ...
- iOS-OC-语音播放之切换听筒和扬声器的方法解决方案(红外感应)
1.设置监听,设置红外线开启状态(先关闭) //监听是否靠近耳朵 [[NSNotificationCenter defaultCenter] addObserver:self selector ...
最新文章
- struts2 不返回result的做法
- JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo
- SAP Cloud Platform integration上创建一个最简单的iFlow
- 符号说明表怎么做_能看懂这些房屋施工图,说明你家装修没问题了
- python3123_使用sox和python,基于时间戳列表对音频区域进行静音处理
- 对 app_offline.htm 的几点错误认识
- WinForm 处理未处理的异常 Application.ThreadException + AppDomain.CurrentDomain.UnhandledException
- matlab数字图像处理系统
- 推导飞机飞行动力学方程组
- 图片转Excel表格 文字识别 表格识别
- python自动注册邮箱_python自动化办公——邮箱
- 核心游戏系统架构设计
- mac:系统存在两个Macintosh HD是怎么回事
- 图像重采样/插值原理与其在MRI脑影像分辨率修改中的应用——将尺寸为1mm标准模板修改成体素尺寸为3、6、8mm标准模板(FSL、SPM12、NIfTI_20140122、dpabi、nilearn)
- Android-内存泄露知识详解
- 高博视觉SLAM十四讲--罗德里格斯公式推导
- c语言中void的用法
- Oracle JDBC使用lob不释放临时表空间的解决方案
- windows 趣味实用脚本
- 013 Rust死灵书之类型转换