Android 距离感应器和耳机状态监测(控制Audio输出通道切换)
* 切换扬声器播放声音 or 听筒播放
* 1. 距离感应器:继承SensorEventListener这个监听,重写onSensorChanged方法
* 2. 检测耳机插入和拔出:HeadsetPlugReceiver监听广播AudioManager.ACTION_AUDIO_BECOMING_NOISY和"android.intent.action.HEADSET_PLUG",
* 3. 切换扬声器模式和听筒模式 需要增加权限: <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>
下面是核心代码:
1. 距离感应器监听方法:
/** 实现SensorEventListener需要实现的两个方法。*/@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubf_proximiny = event.values[0];if (f_proximiny >= mProximiny.getMaximumRange()) {Log.i("==================>onSensorChanged", "MODE_NORMAL");audioManager.setMode(AudioManager.MODE_NORMAL);} else {Log.i("==================>onSensorChanged", "MODE_IN_CALL");audioManager.setMode(AudioManager.MODE_IN_CALL);}}
2. 耳机插拔监听:
2.1 广播注册:
myNoisyAudioStreamReceiver = new HeadsetPlugReceiver();IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);intentFilter.addAction("android.intent.action.HEADSET_PLUG");registerReceiver(myNoisyAudioStreamReceiver, intentFilter);
2.2 广播监听:
public class HeadsetPlugReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("NoisyAudioStreamReceiver=====================>", "change mode");if (intent.hasExtra("state")){ if (intent.getIntExtra("state", 0) == 0){ Log.i("NoisyAudioStreamReceiver=====================>headset not connected", "change mode1");audioManager.setMode(AudioManager.MODE_NORMAL);} else if (intent.getIntExtra("state", 0) == 1){ Log.i("NoisyAudioStreamReceiver=====================>headset connected", "change mode3");audioManager.setMode(AudioManager.MODE_IN_CALL);} } } }
2.3 广播注销:
@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(myNoisyAudioStreamReceiver);}
Demo下载:
Android 距离感应控制Audio输出通道
Android 距离感应器和耳机状态监测(控制Audio输出通道切换)相关推荐
- android距离感应器控制黑屏,白屏
最近在做一个网络通话的apk,功能和手机打sim卡电话一样.虽然只做java部分,但也遇到很多问题,其中一个就是模拟通话时的状态,要控制屏幕锁屏.我知道是通过手机上的距离感应器来实现,但也搞了好久,今 ...
- android距离感应器控制屏幕灭屏白屏
最近在做一个网络通话的apk,功能和手机打sim卡电话一样.虽然只做java部分,但也遇到很多问题,其中一个就是模拟通话时的状态,要控制屏幕锁屏.我知道是通过手机上的距离感应器来实现,但也搞了好久,今 ...
- Android距离感应器P-Sensor浅析
(一) 前言 P-Sensor,距离感应器,可以感应手机和人体距离.具体使用用途是在通话过程中打开P-Sensor,那么当手机屏幕贴近用户脸部时,就会自动感应出手机和人体距离是多少.当小于某一个值时 ...
- android 距离感应器控制屏幕熄灭_书房大变身!有格调的屏幕挂灯,加了它桌面秒变神仙颜值...
趁着这段时间宅在家里,我把凌乱了好长时间的书房收拾了一下,上网买了一些小清新摆饰,又把一些颜值比较高的音箱.耳机放上去,老婆现在终于不再吼我了. 原先的书房是这样的,真可以用"脏乱差&quo ...
- android 距离感应器控制屏幕熄灭_苹果 | 最新折叠专利曝光!屏幕下方无铰链结构解决折痕问题...
文 | 小C君 · 编译 | Nina.山海观 来源 :Businesspost.Appleinsider CINNO Research 产业资讯,3月10日,IT媒体9to5Mac报道,苹果当天在美 ...
- android 距离感应器应用----喇叭、话筒播放音乐
转自新浪博客sony9997 http://blog.sina.com.cn/s/blog_5462e93f0100w7bn.html AudioManager audioManager = (Au ...
- android Phone 距离感应器锁的实现
android手机在正常打电话的过程中,靠近面部会灭屏,这个主要是PhoneApp中的mProximityWakeLock的作用.这个锁是在PhoneApp中被初始化的. if ((pm.getSup ...
- android开机耳机检测,android耳机状态的检测
在android检测耳机的状态,比如耳机的插入或拔出等是比较容易的.主要是对系统广播的接收和处理. 工作原理: android系统在耳机插入和拔出的时候都会发送广播,所以我们要想检测耳机的状态只需要注 ...
- Android4.2距离感应器
先说现象,现象就是来电话,接通电话,把手机屏幕靠近脸部,遮挡住P-sensor,屏幕变黑了,不遮挡住P-sensor,屏幕就点亮了.接着我们来看看代码流程. 距离感应器与屏幕休眠可参考 http:// ...
最新文章
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step
- containsObject 总是不含有,你会用吗
- 处理 Maven 项目名称红色感叹号的问题
- 反射(二) :整型数组能存字附---反射”暴力“超越数据类型的检测
- POI操作Excel表格相关API说明
- Shell命令打包Android apk
- 为方便储户,某银行拟开发计算机储蓄系统。
- 数字信号处理-基础一
- Unity 移动的几种方法(从某一点移动到另外一点)
- 【062】百度识图-以图搜图,查找图源及相似图
- PageHelper.startPage 分页的坑
- 小黄鸡 java_用java实现Simsimi小黄鸡接口
- 如何更改您的Apple ID电子邮件地址
- 3d在线展示线上VR全景展示系统
- HaLoop—适用于迭代计算的Hadoop
- 奇葩Bug频出,苹果AirPods Pro 2提醒用户换电池
- 2018年广东工业大学文远知行杯新生程序设计竞赛 1006 那天的延长线在今天β
- Firefox浏览器页面输出为pdf文件/Win7Win8系统没有Microsoft print to pdf/微信公众号文章输出为pdf文件
- iOS开发-Umeng第三方登录-个人整理
- 视频教程-Access2013数据库入门教程2窗体部分-MySQL