android 耳机监听权限,android 耳机监听
1.判断耳机是否插入:
AudioManager的isWiredHeadsetOn()方法:
AudioManager localAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
localAudioManager.isWiredHeadsetOn()
如果插入了耳机,就返回true,否则false;
注意:要加个权限,不然一直是返回false。
2.实时监测耳机的插入拔出:
每当插入和拔出耳机时,系统都会发送Intent广播。
所以,只需要用一个receiver把这个广播intent(获取的action是:“android.intent.action.HEADSET_PLUG”)截获就好。
在Android下实现检测耳机插入和拔出,也即建立一个Broadcast Receiver,监听“android.intent.action.HEADSET_PLUG”广播
但直接在AndroidManifest.xml中添加一个标签,写入内存的方式是无效的。
如:
发现Receiver的onReceive事件永远不会被触发,解决方法就是手动编写代码注册该广播:
首先,创建一个BroadcastReceiver的子类,用于监听耳机插入和拔出:
public class HeadsetPlugReceiver extends BroadcastReceiver {
private static final String TAG = "HeadsetPlugReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.hasExtra("state")){
if (intent.getIntExtra("state", 0) == 0){
Toast.makeText(context, "headset not connected", Toast.LENGTH_LONG).show();
}
else if (intent.getIntExtra("state", 0) == 1){
Toast.makeText(context, "headset connected", Toast.LENGTH_LONG).show();
}
}
}
}
然后,在需要监听该事件的Activity中的onCreate()中注册监听该广播,同时不要忘记在onDestroy()中注销监听该广播:
public class TestHeadSetPlugActivity extends Activity {
private HeadsetPlugReceiver headsetPlugReceiver;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* register receiver */
registerHeadsetPlugReceiver();
}
private void registerHeadsetPlugReceiver() {
headsetPlugReceiver = new HeadsetPlugReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.HEADSET_PLUG");
registerReceiver(headsetPlugReceiver, intentFilter);
}
@Override
public void onDestroy() {
unregisterReceiver(headsetPlugReceiver);
super.onDestroy();
}
} 如上这样就可以实现检测耳机插入和拔出了。
android 耳机监听权限,android 耳机监听相关推荐
- android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退
问题描述:如题,在调试android 9 高通msm8953平台时,客户反馈应用在允许Manifest.permission.WRITE_EXTERNAL_STORAGE权限后,应用闪退. 从log分 ...
- android方法数据库的权限,Android数据存储,运行时权限
Android存储目录 Android的底层支持是Linux,不同于Windows,没有分盘的概念,是以文件夹形式呈现,可以理解为一个应用就是一个用户. data目录 手机内部存储目录(手机本身内存) ...
- android 打开相册的权限,Android 启动系统相机,相册,裁剪图片及6.0权限管理
在日常开发中,我们经常需要用到上传图片的 功能,这个时候通常有两种做法,第一种,从相机获取,第二种,从相册获取.今天这篇博客主要讲解利用系统的Intent怎样获取? 主要内容如下 怎样通过相机获取我们 ...
- Android常用的网络权限,Android常用的权限大全
Android的常用权限 访问网络 android.permission.INTERNET 访问网络连接可能产生GPRS流量 写入外部存储 android.permission.WRITE_EXTER ...
- android 6 编译 root权限,Android应用获得Root权限
要让Android应用获得Root权限,首先Android设备必须已经获得Root权限. 应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行 ...
- android 6.0 数据库权限,Android超清晰6.0权限申请AndPermission
Android超清晰6.0权限申请AndPermission的具体实现代码,供大家参考,具体内容如下 前言 这是我经常使用的框架,原因: 1.思路清晰 2.实现方便 开始 准备工作 导包 compil ...
- android studio播放视频权限,Android Studio实现本地视频播放
Android Studio的MediaPlayer播放本地视频 关于MediaPlayer错误[open failed: EACCES (Permission denied)] 可能会有下面几个方面 ...
- android 不停弹出权限,Android部分手机“后台弹出界面权限”解决方案
在前段时间的编程开发中,突然发现一个小坑的地方,其实在Android官方中并没有限制,但是在很多厂商的系统中却做了修改限制,那就是"后台弹出界面权限" 最开始发现这个问题,是因为我 ...
- android请求读写外设权限,android读写文件完整版
鉴于实现android文件读写的惨痛经历,我决定将其实现过程写下来.其实网站上关于这方面的博客.讨论很多,我也看了很多,但都不太完整(也可能是我没看明白),导致我在这个问题上纠结了足足4天,在完成前1 ...
最新文章
- 运动桁架下压力信号采集与处理
- 什么可以代替压感笔_什么是优生五项?一般体检可以代替优生五项检查?医生:不可以!...
- IRC BOT原来是利用IRC下发CC命令——在xx云环境遇到了,恶意软件开的是6666端口...
- windows资源管理器进行ftp登录下载文件报“当前的安全设置不允许从该位置下载文件”...
- 记录 McAfee WebAdvisor 产生大量日志文件,卸载时一直转圈圈,成功卸载方式
- [转]cocos2d游戏开发,常用工具集合
- 用得最多的altium版本_83版《神雕》有多猛?收视率破90%!金庸最满意的版本...
- 数据结构和算法的选择
- dubbo注册中心介绍
- SQL面试题--(26~46)
- AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能
- 团队项目第一阶段冲刺站立会议05
- iOS开发之cocoapods报错MacOSSierra10.13-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framewor
- 高校固定资产折旧使用计算机,高校固定资产管理系统功能介绍
- ADF11g-041:禁止或允许其它网站添加ADF页面到iframe中
- rtx web 分级管理系统 二次开发
- C# Md5与AES加密解密源码记录
- 2019Java视频教程-Spring Boot实战
- 数据库及数据表的创建与删除
- 史上最强css、html总结,看完涨薪不再是梦