今天在做项目的时候,需要对耳机的插拔事件进行监听,所以就写了如下的一个小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. Webkit 的麻烦和解决

    * placeholder 在 focus 状态下内容为空时,依然显示文字.和 IE11,Firefox 均不一致: input:focus::-webkit-input-placeholder { ...

  2. Android Gallery和ImageSwitcher同步自动(滚动)播放图片库

    本文主要内容是如何让Gallery和ImageSwitcher控件能够同步自动播放图片集 ,看起来较难,然而,实现的方法非常简单, 请跟我慢慢来.总的来说,本文要实现的效果如下图:(截图效果不怎么好) ...

  3. Android项目实战(五十六):获取WebView加载的url的请求错误码

    例如需求,我有一个WebView 加载一个url, 该url对应的网页本身自带下拉刷新 ,但是网页本身会有出现400 500 等异常请求错误码 这时候网页加载失败,页面本身的下拉是无法使用的,要求重新 ...

  4. js实现图片上传后即时预览

    //关于FileReader对象 http://blog.csdn.net/zk437092645/article/details/8745647 <!DOCTYPE html> < ...

  5. Mac上vmware虚拟机Windows10安装Tomcat8.0及配置环境

    1.下载tomcat8.0或其他版本.下载地址:http://tomcat.apache.org/download-80.cgi 2.双击进行解压. 3.安装成功之后,右键我的电脑 --> 选择 ...

  6. 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树

    经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...

  7. Tp5 的 validate 自动验证

    tp5自带的验证功能: 用法之一: $validate = new \think\Validate([ ['name', 'require|alphaDash', '用户名不能为空|用户名格式只能是字 ...

  8. [Bug]C++ XXX:undefined reference to "xxx"

    昨天写了个广义表,写完后用clang++编译,结果给我报了一个这样的错 tanglizi@archlinux ~/Code/cpp/DS/genlist $ clang++ main.cpp genl ...

  9. 20180929 北京大学 人工智能实践:Tensorflow笔记03

    更改的程序部分如下: 另: 难?????????????见链接: https://www.bilibili.com/video/av22530538/?p=17 + (完)

  10. python -迭代器与生成器 以及 iterable(可迭代对象)、yield语句

    我刚开始学习编程没多久,对于很多知识还完全不知道,而有些知道的也是一知半解,我想把学习到的知识记录下来,一是弥补记忆力差的毛病,二也是为了待以后知识能进一步理解透彻时再回来做一个补充. 参考链接: 完 ...