在android系统中,检测耳机的插入和拔出,也是通过广播实现的,可以建立一个Broadcast Receiver 监听"android.intent.action.HEADSET_PLUG" 这个Intent。

在这个Intent中包含以下几个值:

  • state ---        0代表拔出,1代表插入
  • name--- 字符串,代表headset的类型。
  • microphone --   1代表这个headset有麦克风,0则没有。
在使用的时候发现直接在AndroidManifest,xml文件中静态注册是无效的

[html] view plaincopyprint?
  1. <receiver android:name=".HeadsetPlugReceiver">
  2. <intent-filter>
  3. <action android:name="android.intent.action.HEADSET_PLUG" android:enabled="true">           </action>
  4. </intent-filter>
  5. </receiver>

解决办法是在代码中动态注册。

[java] view plaincopyprint?
  1. import android.app.Activity;
  2. import android.content.IntentFilter;
  3. import android.os.Bundle;
  4. public class HeadSetActivity extends Activity {
  5. HeadsetPlugReceiver headsetPlugReceiver;
  6. /** Called when the activity is first created. */
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. registerHeadsetPlugReceiver();
  12. }
  13. private void registerHeadsetPlugReceiver(){
  14. headsetPlugReceiver  = new HeadsetPlugReceiver ();
  15. IntentFilter  filter = new IntentFilter();
  16. filter.addAction("android.intent.action.HEADSET_PLUG");
  17. registerReceiver(headsetPlugReceiver, filter);
  18. }
  19. @Override
  20. protected void onDestroy() {
  21. // TODO Auto-generated method stub
  22. super.onDestroy();
  23. unregisterReceiver();  //注销监听
  24. }
  25. private void unregisterReceiver(){
  26. this.unregisterReceiver(headsetPlugReceiver);
  27. }
  28. }

在broadcast Receiver中监听事件:

[java] view plaincopyprint?
  1. <pre name="code" class="java">
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.widget.Toast;
  6. public class HeadsetPlugReceiver extends BroadcastReceiver {
  7. @Override
  8. public void onReceive(Context context, Intent intent) {
  9. // TODO Auto-generated method stub
  10. if(intent.hasExtra("state")){
  11. if(intent.getIntExtra("state", 0)==0){
  12. Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();
  13. }
  14. else if(intent.getIntExtra("state", 0)==1){
  15. Toast.makeText(context, "headset  connected", Toast.LENGTH_LONG).show();
  16. }
  17. }
  18. }
  19. }

android-检测耳机的插入和拔出动作相关推荐

  1. VC++实时检测耳机的插入与拔出(附源码)

    目录 1.实现继承于IMMNotificationClient接口类的CMMNotificationClient类,实时感知音频设备变化的通知事件

  2. Android Kotlin - 监听耳机的插入和拔出

    Android Kotlin - 监听耳机的插入和拔出 开发音乐应用时需要监听耳机的插入和拔出,用以调整音量或暂停播放. 采用注册广播的方式. 新建 HeadsetChangeReceiver 类 i ...

  3. android 耳机检测,android 检测耳机是否插入方法

    AudioManager就有这个方法: isWiredHeadsetOn(): 如果插入了耳机,就返回true,否则false; 当然,要加个权限,不然一直是返回false. 开始我追了好久的源码.发 ...

  4. WINDOWS检测U盘插入,拔出

    检测U盘的插入或拔出状态,然后根据状态做出相关操作. 检测U盘是否被插入是通过监听WM_DEVICECHANGE消息来实现的. 判断-U盘拔出和插入-获取它盘符 2010-05-04 10:59 加入 ...

  5. Windows下使用Qt检测U盘插入和拔出的示例Demo程序

    本文转载自Qt检测U盘插入拔出Demo 要做这个,要先知道Qt的QAbstractNativeEventFilter类,虚函数nativeEventFilter.这个类的主要作用是捕获全局window ...

  6. WPF中检测U盘插入、拔出 实例

    类代码: /// <summary>/// 声明一个委托,用于代理一系列自定义方法/// </summary>public delegate void FlashDiskDel ...

  7. QT:检测U盘插入和拔出(windows)

    1.先检测驱动器: 2.可以使用GetDriveType函数来获取驱动器的类型,以下是函数的链接: https://docs.microsoft.com/zh-cn/windows/win32/api ...

  8. Android实现检测耳机插入和拔出

    在Android下实现检测耳机插入和拔出,也即建立一个Broadcast Receiver,监听"android.intent.action.HEADSET_PLUG"广播 但直接 ...

  9. Qt C++ 检测优盘插入或拔出

    概述 在开发文件浏览相关应用时,会涉及到动态检测优盘插入或拔出的状态,这样可以实时的刷新界面显示.这里通过调用windows的接口来实现该检测,代码很简单.我是在Qt工程中使用的,其核心代码是一样的. ...

最新文章

  1. WebRTC成为W3C和IETF正式标准
  2. redis学习(九)——数据持久化
  3. (十一)nodejs循序渐进-高性能游戏服务器框架pomelo之启动流程和组件
  4. 百度贴吧发帖软件_贴吧自动发帖软件
  5. jfinal-swagger让你的应用接口更加简单
  6. Inception v2/v3原理与实现
  7. html2canvas图片坐标,html2canvas生成的图片偏移不完整的解决方法
  8. WayOS路由器企业应用方案
  9. ueditor 禁止编辑_织梦ueditor百度编辑器div style被过滤解决办法
  10. 几种主流编程语言的优点和缺点比较,不服来怼
  11. foxmail绑定qq邮箱服务器,开通IMAP服务 用Foxmail远程操作QQ邮箱
  12. Vue双向绑定:原理篇(详细)
  13. 【跨保985计算机】2022跨保实录|六千字保姆教程
  14. 百度快照不更新的解决方法
  15. 如何在家远程控制办公室电脑
  16. 微信小程序开发如何实现微信支付
  17. 深入理解 MySQL 底层实现
  18. JAVA入门算法题(十三)
  19. 管理到底是管人,还是管事?
  20. 卫星地图哪个最清晰,哪个使用最方便? 附赠全套可用图源

热门文章

  1. [SpringBoot系列]基础过渡与夯实(基础配置)
  2. Vue中使用js-web-screen-shot插件实现截屏功能
  3. 高音质游戏无线蓝牙耳机推荐,低延迟吃鸡王者兼容无压力
  4. Linux期末复习考前走一走——何绍华Linux操作系统第3版
  5. 忘记电子商务吧,很快一切都将与元宇宙有关
  6. 无法在windows资源管理器中查看此FTP站点
  7. Word 安装Mathtype后无法使用CTRL+C和CTRL+V【一次性解决】
  8. mysql:SQL语言包含4个部分
  9. 6.前端CSS之布局属性(盒子,float,overflow,opsition,z-index,opacity)
  10. RT-Thread 读写U盘