Android 听筒扬声器切换 并且监听音量变化
记录一下。
在activity 监听按键:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {//设置聊天播放语音是 声音大小 随按键 变化int direction = keyCode == KeyEvent.KEYCODE_VOLUME_UP ? AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER;int flags = AudioManager.FX_FOCUS_NAVIGATION_UP;AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);if (扬声器模式){am.adjustStreamVolume(AudioManager.STREAM_SYSTEM, direction, flags);}else {am.adjustStreamVolume(AudioManager.STREAM_VOICE_CALL, direction, flags);}return true;}return super.onKeyDown(keyCode, event);
}
听筒、扬声器 模式切换:
private static void init(Context mContext) {audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
}
/*** 设置播放模式*/
public static void setAudioStreamType(Context mContext, boolean speaker) {if (speaker) {audioManager.setSpeakerphoneOn(true);audioManager.setMode(AudioManager.MODE_NORMAL);//设置音量,解决有些机型切换后没声音或者声音突然变大的问题audioManager.setStreamVolume(AudioManager.STREAM_SYSTEM,audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM), AudioManager.FX_KEY_CLICK);} else {audioManager.setSpeakerphoneOn(false);//关闭扬声器//5.0以上if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);//设置音量,解决有些机型切换后没声音或者声音突然变大的问题audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL), AudioManager.FX_KEY_CLICK);} else {audioManager.setMode(AudioManager.MODE_IN_CALL);audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL), AudioManager.FX_KEY_CLICK);}}
}
audioManager.setMode(int mode)
mode 类型参照表:
/** Used to identify the volume of audio streams for phone calls */
public static final int STREAM_VOICE_CALL = AudioSystem.STREAM_VOICE_CALL;/** Used to identify the volume of audio streams for system sounds */
public static final int STREAM_SYSTEM = AudioSystem.STREAM_SYSTEM;/** Used to identify the volume of audio streams for the phone ring */
public static final int STREAM_RING = AudioSystem.STREAM_RING;/** Used to identify the volume of audio streams for music playback */
public static final int STREAM_MUSIC = AudioSystem.STREAM_MUSIC;/** Used to identify the volume of audio streams for alarms */
public static final int STREAM_ALARM = AudioSystem.STREAM_ALARM;/** Used to identify the volume of audio streams for notifications */
public static final int STREAM_NOTIFICATION = AudioSystem.STREAM_NOTIFICATION;/** Used to identify the volume of audio streams for DTMF Tones */
public static final int STREAM_DTMF = AudioSystem.STREAM_DTMF;/** Used to identify the volume of audio streams for accessibility prompts */
public static final int STREAM_ACCESSIBILITY = AudioSystem.STREAM_ACCESSIBILITY;
参考:
- Android 听筒扬声器切换(多机型兼容、兼容5.0以上)
Android 听筒扬声器切换 并且监听音量变化相关推荐
- Android 听筒扬声器切换(多机型兼容、兼容5.0以上)
目录 目录 亲测有效机型案例有限仅供参考 代码 用法 Demo Feature 本以为是个很简单的切换,没想到搞了快一天.网络上各种答案,各种坑,浪费了大量的时间. 亲测有效机型(案例有限.仅供参考) ...
- android 听筒模式外放模式的切换,YY项目之Android 听筒 扬声器 切换
废话不多说,直接上代码: private void setSpeakerphoneOn(boolean on) { if (on) { // 为true打开喇叭扩音器:为false关闭喇叭扩音器. a ...
- Android 听筒 扬声器 切换
private void setSpeakerphoneOn(boolean on) { if (on) { // 为true打开喇叭扩音器:为false关闭喇叭扩音器. audioManager.s ...
- android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键
本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){ ...
- android 窗口监听按键,Android编程实现Dialog窗体监听的方法
本文实例讲述了Android编程实现Dialog窗体监听的方法.分享给大家供大家参考,具体如下: 今天做了一个Dialong窗体监听包括窗体内的xml监听. 效果图: test.class代码 pac ...
- android 监听界面变化,Android之页面有变化用onWindowFocusChanged来监听权限是否开启...
1 问题 我们需要在Activity里面监听网络变化.热点是否开启和关闭.GPS服务是否开启.位置权限是否开启等一些列行为. 2 思路 方法一: 如果是需要启动activity进行权限申请,我们可以用 ...
- Android 第十九课 大喇叭--广播机制----动态注册监听网络变化与静态注册实现开机启动
为了便于进行 系统级别的消息通知,Android引入了一套广播消息机制. 1.广播机制简介: 因为Android中的每个应用程序都可以对自己感兴趣的广播尽心注册,这样程序只会接收自己所关心的广播内容, ...
- android 监听图库变化,Android ContentObserver 监听图库变化
电脑环境是XP,软件是gVim7.3,安装在C盘的 Program Files 下.如何设置gVim的字体和背景颜色:C---Program Files---Vim---_vimrc文件,用文本编辑器 ...
- android 关机消息广播,Android开机、关机播音监听
Android开机.关机广播监听 一.开机广播的监听 1.在AndroidManifest.xml文件注册接收开机广播 2.在BroadcastReceiver里执行要做的事情 public clas ...
最新文章
- 通用兄弟元素选择器 E ~ F
- 回顾2019年5个重大宕机事件
- 标签的宽度_27 表格标签
- 【bzoj1010-toy】斜率优化入门模板
- C++ 定义 string
- 运筹学与计算机知识,计算机、数学、运筹学等领域的36个重要算法
- 为什么css效果在本地测试没问题,上传到服务器后却显示位置乱动,css下拉菜单本地正常,上传后360浏览器中显示错位,火狐、IE8显示正常...
- 智能一代云平台(二十三):Mycat高可用的探索
- paper reading:[第一代GCN] Spectral Networks and Deep Locally Connected Networks on Graphs
- CodeForces615A-Bulbs-模拟
- Atitit.软件gui按钮and面板---通讯子系统(区)-- github 的使用....
- IDEA插件-Translation提示更新TKK失败,配置有道翻译解决
- 智能优化算法——篇1
- 服务器自检后显示scsi,“服务器百问百答”服务器怎样格式化SCSI硬盘?
- el-table使用span-method合并行
- python实现Ensembl ID和gene symbol的相互转换
- 修改远程计算机 时间,Pubwin服务器时间修改的四种办法
- 由浅入深玩转华为WLAN—25 高可用性系列(1)双击热备概述
- 硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)
- java 1st 2nd 3rd 4th_1st(3rd)