实现方式一:只能在程序为前台时监控

在Activity中即可监听

  1. @Override
  2. public boolean onKeyUp(int keyCode, KeyEvent event) {
  3. Log.i("MainActivity-onKeyUp", "" + keyCode);
  4. switch (keyCode) {
  5. case KeyEvent.KEYCODE_HEADSETHOOK:
  6. Toast.makeText(MainActivity.this, "Pause_Up", Toast.LENGTH_SHORT).show();
  7. return false;
  8. }
  9. return super.onKeyUp(keyCode, event);
  10. }
  11. @Override
  12. public boolean onKeyDown(int keyCode, KeyEvent event) {
  13. Log.i("MainActivity-onKeyDown", "" + keyCode);
  14. switch (keyCode) {
  15. case KeyEvent.KEYCODE_HEADSETHOOK:
  16. Toast.makeText(MainActivity.this, "Pause_Down", Toast.LENGTH_SHORT).show();
  17. return false;
  18. }
  19. return super.onKeyUp(keyCode, event);
  20. }

实现方式二:前后台均可

1.自定义Receiver
  1. public class EarphoneReceiver extends BroadcastReceiver {
  2. public EarphoneReceiver() {
  3. }
  4. @Override
  5. public void onReceive(Context context, Intent intent) {
  6. KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
  7. if (event.getAction() == KeyEvent.ACTION_UP) {
  8. //// TODO: 2016/2/18 0018 按下时操作
  9. Message msg = Message.obtain();
  10. msg.what = 100;
  11. handler.sendMessage(msg);
  12. }
  13. }
  14. Handler handler = new Handler() {
  15. @Override
  16. public void handleMessage(Message msg) {
  17. super.handleMessage(msg);
  18. switch (msg.what) {
  19. case 100:
  20. //// TODO: 2016/2/18 0018 操作
  21. EarphoneButtonHelper.EarphoneListener listener = EarphoneButtonHelper.getInstance().getListener();
  22. if (listener != null) {
  23. listener.onClick();
  24. }
  25. break;
  26. }
  27. }
  28. };
  29. }

AndroidManifast.xml中注册

  1. <receiver android:name=".EarphoneReceiver">
  2. <intent-filter android:priority="1000">
  3. <action android:name="android.intent.action.MEDIA_BUTTON" />
  4. </intent-filter>
  5. </receiver>
2.注册/取消Receiver
  1. /**
  2. * 取消广播接收器
  3. * @param context
  4. */
  5. public void unrigisterReceiver(Context context) {
  6. AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
  7. ComponentName name = new ComponentName(context.getPackageName(), EarphoneReceiver.class.getName());
  8. mAudioManager.unregisterMediaButtonEventReceiver(name);
  9. }
  10. /**
  11. * 注册广播接收器
  12. * @param context
  13. */
  14. public void registerReceiver(Context context) {
  15. AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
  16. ComponentName name = new ComponentName(context.getPackageName(), EarphoneReceiver.class.getName());
  17. mAudioManager.registerMediaButtonEventReceiver(name);
  18. }

其他

参考文章

Android线控的使用的更多相关文章

  1. Android耳机线控具体解释,蓝牙耳机button监听(仿酷狗线控效果)

    转载请注明出处:http://blog.csdn.net/fengyuzhengfan/article/details/46461253 当耳机的媒体按键被单击后.Android系统会发出一个广播.该 ...

  2. MTK Android 耳机线控的实现方法

    android 耳机线控的实现方法 keycodeonkeydownkeyevent 耳机线控的功能 耳机线控是一种很好用,并且能提升用户体验的功能.可以用来实现一些常用和基本的功能.比如:实现音乐播 ...

  3. 【audio】耳机插拔 线控按键识别流程【转】

    耳机插拔/线控按键识别流程 耳机插拔/线控按键识别流程 1.文档概述 本文以msm8909平台,android N为例,介绍了通用情况下,耳机插拔的流程步骤,以及对耳机类型的识别逻辑.以方便在项目工作 ...

  4. Android 开源控件与常用开发框架开发工具类

    Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...

  5. iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

    -- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...

  6. iphone 耳机 线控

    有电话呼入时: 按一次接听电话: 快速按两次将电话转到语音信箱: 通话中: 按一次挂断电话: 通话中如果有第二个电话打进来时: 按一次保留当前通话并接听第二个电话: 按住两秒钟不放忽略(拒绝接听)第二 ...

  7. iOS-触摸事件、手势识别、摇晃事件、耳机线控

    概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件. ...

  8. android 基础控件(EditView、SeekBar等)的属性及使用方法

        android提供了大量的UI控件,本文将介绍TextView.ImageView.Button.EditView.ProgressBar.SeekBar.ScrollView.WebView ...

  9. Android基本控件之Menus

    在我们的手机中有很多样式的菜单,比如:我们的短信界面,每条短信,我们长按都会出现一个菜单,还有很多的种类.那么现在,我们就来详细的讨论一下安卓中的菜单 Android的控件中就有这么一个,叫做Menu ...

随机推荐

  1. Java网络编程(TCP服务端)

    /* * TCP服务端: * 1.创建服务端socket服务,并监听一个端口 * 2.服务端为了给客户端提供服务,获取客户端的内容,可以通过accept方法获取连接过来的客户端对象 * 3.可以通过获 ...

  2. 新浪新闻API接口

    头条 http://api.sina.cn/sinago/list.json?channel=news_toutiao推荐 http://api.sina.cn/sinago/list.json?ch ...

  3. [iOS基础控件 - 3.2] transform的使用

    A.概念 可以控制UIView的位置.尺寸.旋转 transform是一种状态,每次都是相对于原始状态作出的形变     1.位置移动 // 向上移动 - (IBAction)top:(UIButto ...

  4. [Objective-c 基础 - 3.1] 内存管理

    A.内存存放.retain.release 1.栈内存:存放局部变量,运行超过变量作用域自后编译器自动回收 2.堆内存:存放对象(地址,对象实体) 3.对象的基本结构 (1)引用计数器(4字节):当计 ...

  5. 射频识别技术漫谈(7)——ID卡【worldsing笔记】

    ID(Identification)是识别的意思,ID卡就是识别卡.ID卡包含范围广泛,只要具有识别功能的卡片都可以叫ID卡,例如条码卡,磁卡都可以是ID卡,我们这儿说的当然是射频识别卡. 射频ID卡 ...

  6. 大数记录之,大数乘整型数nyoj832

    想到了一个题目:对决二http://acm.nyist.net/JudgeOnline/problem.php?pid=832 但是发现有一道题目是相似的:http://acm.nyist.net/J ...

  7. jboss7的服务器开启和关闭命令

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. svn项目导入

    svn项目导入 在已建立好svnserverserver的情况下.且所用电脑上已装好svn,在电脑上导入svn项目 首先,新建目录.点击鼠标右键,选择TortoiseSVN–>export 然后 ...

  9. C++多态的实现与局限性

    1.什么是多态? 父类指针指向子类对象,运行时期调用方法的时候,根据方法拥有者的真实类型,确定调用哪个方法. 2.如何实现多态? 要实现多态,需要加一个中间层,暴露父类的方法,内部根据指针的真实类型决 ...

  10. 什么是IDOC,以及IDOC的步骤

    创建IDOC:   第一步:WE31 创建IDOC所包含的字段.   第二步:WE30 创建IDOC 把Segment分配给IDOC   第三步:WE81  创建信息类型   第四步:WE82   把 ...