* 切换扬声器播放声音 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输出通道切换)相关推荐

  1. android距离感应器控制黑屏,白屏

    最近在做一个网络通话的apk,功能和手机打sim卡电话一样.虽然只做java部分,但也遇到很多问题,其中一个就是模拟通话时的状态,要控制屏幕锁屏.我知道是通过手机上的距离感应器来实现,但也搞了好久,今 ...

  2. android距离感应器控制屏幕灭屏白屏

    最近在做一个网络通话的apk,功能和手机打sim卡电话一样.虽然只做java部分,但也遇到很多问题,其中一个就是模拟通话时的状态,要控制屏幕锁屏.我知道是通过手机上的距离感应器来实现,但也搞了好久,今 ...

  3. Android距离感应器P-Sensor浅析

    (一)  前言 P-Sensor,距离感应器,可以感应手机和人体距离.具体使用用途是在通话过程中打开P-Sensor,那么当手机屏幕贴近用户脸部时,就会自动感应出手机和人体距离是多少.当小于某一个值时 ...

  4. android 距离感应器控制屏幕熄灭_书房大变身!有格调的屏幕挂灯,加了它桌面秒变神仙颜值...

    趁着这段时间宅在家里,我把凌乱了好长时间的书房收拾了一下,上网买了一些小清新摆饰,又把一些颜值比较高的音箱.耳机放上去,老婆现在终于不再吼我了. 原先的书房是这样的,真可以用"脏乱差&quo ...

  5. android 距离感应器控制屏幕熄灭_苹果 | 最新折叠专利曝光!屏幕下方无铰链结构解决折痕问题...

    文 | 小C君 · 编译 | Nina.山海观 来源 :Businesspost.Appleinsider CINNO Research 产业资讯,3月10日,IT媒体9to5Mac报道,苹果当天在美 ...

  6. android 距离感应器应用----喇叭、话筒播放音乐

    转自新浪博客sony9997 http://blog.sina.com.cn/s/blog_5462e93f0100w7bn.html AudioManager  audioManager = (Au ...

  7. android Phone 距离感应器锁的实现

    android手机在正常打电话的过程中,靠近面部会灭屏,这个主要是PhoneApp中的mProximityWakeLock的作用.这个锁是在PhoneApp中被初始化的. if ((pm.getSup ...

  8. android开机耳机检测,android耳机状态的检测

    在android检测耳机的状态,比如耳机的插入或拔出等是比较容易的.主要是对系统广播的接收和处理. 工作原理: android系统在耳机插入和拔出的时候都会发送广播,所以我们要想检测耳机的状态只需要注 ...

  9. Android4.2距离感应器

    先说现象,现象就是来电话,接通电话,把手机屏幕靠近脸部,遮挡住P-sensor,屏幕变黑了,不遮挡住P-sensor,屏幕就点亮了.接着我们来看看代码流程. 距离感应器与屏幕休眠可参考 http:// ...

最新文章

  1. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 1 Convolutional Neural Networks: Step by Step
  2. containsObject 总是不含有,你会用吗
  3. 处理 Maven 项目名称红色感叹号的问题
  4. 反射(二) :整型数组能存字附---反射”暴力“超越数据类型的检测
  5. POI操作Excel表格相关API说明
  6. Shell命令打包Android apk
  7. 为方便储户,某银行拟开发计算机储蓄系统。
  8. 数字信号处理-基础一
  9. Unity 移动的几种方法(从某一点移动到另外一点)
  10. 【062】百度识图-以图搜图,查找图源及相似图
  11. PageHelper.startPage 分页的坑
  12. 小黄鸡 java_用java实现Simsimi小黄鸡接口
  13. 如何更改您的Apple ID电子邮件地址
  14. 3d在线展示线上VR全景展示系统
  15. HaLoop—适用于迭代计算的Hadoop
  16. 奇葩Bug频出,苹果AirPods Pro 2提醒用户换电池
  17. 2018年广东工业大学文远知行杯新生程序设计竞赛 1006 那天的延长线在今天β
  18. Firefox浏览器页面输出为pdf文件/Win7Win8系统没有Microsoft print to pdf/微信公众号文章输出为pdf文件
  19. iOS开发-Umeng第三方登录-个人整理
  20. 视频教程-Access2013数据库入门教程2窗体部分-MySQL

热门文章

  1. 服装制鞋业的特点及管理(转)
  2. 天敏VC4000调试
  3. brand.php dnfire.cn_火灾报警系统品牌
  4. 微信小程序初体验-苏州实时公交API
  5. SpringBoot | SpringBoot快速入门
  6. Java 11,Spring Boot和JavaScript中的i18n
  7. 全志D1-H芯片 如何在tina使用tplayerdemo 进行rtsp拉流说明?
  8. IOS 监听slider滑动
  9. win10共享文件出来,别的电脑无法访问问题
  10. Python爬取网站数据