今天在做项目的时候,需要对耳机的插拔事件进行监听,所以就写了如下的一个小demo,对耳机监听事件进行验证。直接看代码

package com.example.alert;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast; public class HeadsetPlugReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub int state = intent.getIntExtra("state", -1);
int mic = intent.getIntExtra("microphone", -1);
if(state==0 && mic ==0){
Log.e("123", "headset no microphone not connected");
Toast.makeText(context, "headset no microphone not connected", Toast.LENGTH_LONG).show();
} else if (state==0 && mic ==1) {
Log.e("123", "headset with microphone not connected");
Toast.makeText(context, "headset with microphone not connected", Toast.LENGTH_LONG).show();
}else if(state==1 && mic ==0){
Log.e("123", "headset no microphone connected");
Toast.makeText(context, "headset no microphone connected", Toast.LENGTH_LONG).show();
} else if (state==1 && mic ==1) {
Log.e("123", "headset with microphone connected");
Toast.makeText(context, "headset with microphone connected", Toast.LENGTH_LONG).show();
}
} }

对于广播在activity中的注册什么的,我们就不写了,毕竟大家都知道

监听的广播是

filter.addAction("android.intent.action.HEADSET_PLUG");

直接看我们的打印log

1.进入应用->插入耳机->拔出耳机(带有麦克风)

   - ::02.815: E/(): headset no microphone not connected
- ::29.285: E/(): headset no microphone connected
- ::29.355: E/(): headset with microphone connected
- ::41.965: E/(): headset with microphone not connected
- ::42.995: E/(): headset no microphone not connected

2.插入耳机->进入应用->拔出耳机(带有麦克风)

   - ::49.635: E/(): headset with microphone connected
- ::01.995: E/(): headset with microphone not connected
- ::03.025: E/(): headset no microphone not connected

3.进入应用->插入耳机->拔出耳机(没有麦克风)

   - ::34.665: E/(): headset no microphone not connected
- ::38.985: E/(): headset no microphone connected
- ::49.945: E/(): headset with microphone connected
- ::50.635: E/(): headset with microphone not connected
- ::51.635: E/(): headset no microphone not connected

4.插入耳机->进入应用->拔出耳机(没有麦克风)

   - ::27.815: E/(): headset no microphone not connected
- ::30.865: E/(): headset no microphone connected

从上面的结果我们可以得出如下的结论

1)监听有线耳机(有无麦克风)的广播 是 Intent.ACTION_HEADSET_PLUG

2)刚进入这个应用,会对耳机进行监听的,不明白为什么,但至少可以作为一次初始条件判断

3)这个广播可以同时监听插入的耳机是有线还是无线。不过,似乎是有线跟无线插入都会对有线跟无线进行判断,会发两次广播

4)state-耳机插入状态0-拔出 1-插入

microphone-有无麦克风 0-没有 1-有

headset-监听有线耳机插拔的更多相关文章

  1. Sdcard插拔、状态广播监听,Android文件系统,Android存储器相关知识总结

    一 SDcard广播监听,注册,取消注册的实现 (1)根据实际需要监听的事件,添加action,并注册,一般在onCreate中添加 //在IntentFilter中选择你要监听的行为 IntentF ...

  2. 监听SD卡状态

     最近在做项目时遇到需要处理SD卡拔出时的监听,在网上找了很多资料.总结了一下, 用接收广播处理最有效率     sd卡拔插时会发送广播,具体如下(摘自一位大虾的博客  来自:http://blog. ...

  3. ARM上的linux如何实现无线网卡的冷插拔和热插拔

    ARM上的linux如何实现无线网卡的冷插拔和热插拔 fulinux 凌云实验室 1. 冷插拔 如果在系统上电之前就将RT2070/RT3070芯片的无线网卡(以下简称wlan)插上,即冷插拔.我们通 ...

  4. Oracle12c中配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB)

    Oracle12c中的多宿主选项允许一个容器数据库(CDB)容纳多个独立的可插拔数据库(PDB).本文将展示如何配置实例参数和修改容器数据库(CDB)及可插拔数据库(PDB).1. 配置CDB中的实例 ...

  5. 对于HDMI设备连接状态的监听

    对与最近主要做的是电视机盒子端的开发,其中涉及到设备的状态监听比较繁琐,所以对HDMI的连接状态的监听方法做个记录,方便后续查看. 主要通过两种方式: (1)比较常用的广播监听 注册一个动态广播来获取 ...

  6. android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播

    * 添加权限 <uses-permission android:name="android.permission.RECEIVE_SMS"/> * 4.0以后广播接收者 ...

  7. ArcGIS API for JavaScript 4.2学习笔记[7] 鹰眼(缩略图的实现及异步处理、Promise、回调函数、监听的笔记)

    文前说明:关于style就是页面的css暂时不做评论,因为官方给的例子的样式实在太简单了,照抄阅读即可. 这篇文章有着大量AJS 4.x版本添加的内容,如监听watch.Promise对象.回调函数. ...

  8. Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听

    Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...

  9. 学习Android过程中遇到的问题及解决方法——电话监听

    也许有时你会有这样一个需求:通电话时有一个重要的事需要记下来或者和一个陌生人特别是大骗子通话时,这是就想如果能把通话录下来就方便多了.(这才是我写这个代码的目的!!!) 在此过程中,犯了一个很大的错误 ...

随机推荐

  1. [JSOI2008] [BZOJ1567] Blue Mary的战役地图 解题报告 (hash)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1567 Description Blue Mary最近迷上了玩Starcraft(星际争霸 ...

  2. [GDKOI2010] 圈地计划(网络流)

    题2链接:https://www.luogu.org/problemnew/show/P1935 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots ...

  3. Java 类和对象12

    构造一辆汽车,油箱容量100L,当前里程数0,当前油量0,可以根据道路状况确定油耗,根据行驶速度与行驶时间, 输出当前油量与总里程数. public class Car_1 { // 车牌 priva ...

  4. 浅谈贝塞尔曲线以及iOS中粘性动画的实现

    关于贝塞尔曲线,网上相关的文章很多,这里我主要想用更简单的方法让大家理解贝塞尔曲线,当然,这仅仅是我个人的理解,如有错误的地方还请大家能够帮忙指出来,这样大家才能一起进步. 贝塞尔曲线,常用到的可分为 ...

  5. Python3基础笔记--常用模块

    目录: 参考博客:Python 之路 Day5 - 常用模块学习 Py西游攻关之模块 一.time模块 二.random模块 三.os模块 四.sys模块 五.hashlib模块 六.logging模 ...

  6. 二叉查找树BST 模板

    二叉查找树BST 就是二叉搜索树 二叉排序树. 就是满足 左儿子<父节点<右儿子 的一颗树,插入和查询复杂度最好情况都是logN的,写起来很简单.   根据BST的性质可以很好的解决这些东 ...

  7. PHP安全性防范方式

    SQL注入 SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行. 防范方式 使用mysql_real_escape_string(),或者addslashes()过 ...

  8. vue使用,问题

    参考链接:https://cn.vuejs.org/v2/guide/index.html *)[Vue warn]: Error in v-on handler: "TypeError: ...

  9. 【Codeforces Round #239 (Div. 1) B】 Long Path

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] DP,设f[i]表示第一次到i这个房间的时候传送的次数. f[1] = 0,f[2] = 2 考虑第i个位置的情况. 它肯定是从i- ...

  10. Spring学习详解(1)——Spring入门详解

    一:spring的基本用法: 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中的java组件, ApplicationContext ctx  = ne ...