Android线控的使用
实现方式一:只能在程序为前台时监控
在Activity中即可监听
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Log.i("MainActivity-onKeyUp", "" + keyCode);
switch (keyCode) {
case KeyEvent.KEYCODE_HEADSETHOOK:
Toast.makeText(MainActivity.this, "Pause_Up", Toast.LENGTH_SHORT).show();
return false;
}
return super.onKeyUp(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.i("MainActivity-onKeyDown", "" + keyCode);
switch (keyCode) {
case KeyEvent.KEYCODE_HEADSETHOOK:
Toast.makeText(MainActivity.this, "Pause_Down", Toast.LENGTH_SHORT).show();
return false;
}
return super.onKeyUp(keyCode, event);
}
实现方式二:前后台均可
1.自定义Receiver
public class EarphoneReceiver extends BroadcastReceiver {
public EarphoneReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event.getAction() == KeyEvent.ACTION_UP) {
//// TODO: 2016/2/18 0018 按下时操作
Message msg = Message.obtain();
msg.what = 100;
handler.sendMessage(msg);
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 100:
//// TODO: 2016/2/18 0018 操作
EarphoneButtonHelper.EarphoneListener listener = EarphoneButtonHelper.getInstance().getListener();
if (listener != null) {
listener.onClick();
}
break;
}
}
};
}
AndroidManifast.xml中注册
<receiver android:name=".EarphoneReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
2.注册/取消Receiver
/**
* 取消广播接收器
* @param context
*/
public void unrigisterReceiver(Context context) {
AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
ComponentName name = new ComponentName(context.getPackageName(), EarphoneReceiver.class.getName());
mAudioManager.unregisterMediaButtonEventReceiver(name);
}
/**
* 注册广播接收器
* @param context
*/
public void registerReceiver(Context context) {
AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
ComponentName name = new ComponentName(context.getPackageName(), EarphoneReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(name);
}
其他
参考文章
Android线控的使用的更多相关文章
- Android耳机线控具体解释,蓝牙耳机button监听(仿酷狗线控效果)
转载请注明出处:http://blog.csdn.net/fengyuzhengfan/article/details/46461253 当耳机的媒体按键被单击后.Android系统会发出一个广播.该 ...
- MTK Android 耳机线控的实现方法
android 耳机线控的实现方法 keycodeonkeydownkeyevent 耳机线控的功能 耳机线控是一种很好用,并且能提升用户体验的功能.可以用来实现一些常用和基本的功能.比如:实现音乐播 ...
- 【audio】耳机插拔 线控按键识别流程【转】
耳机插拔/线控按键识别流程 耳机插拔/线控按键识别流程 1.文档概述 本文以msm8909平台,android N为例,介绍了通用情况下,耳机插拔的流程步骤,以及对耳机类型的识别逻辑.以方便在项目工作 ...
- Android 开源控件与常用开发框架开发工具类
Android的加载动画AVLoadingIndicatorView 项目地址: https://github.com/81813780/AVLoadingIndicatorView 首先,在 bui ...
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...
- iphone 耳机 线控
有电话呼入时: 按一次接听电话: 快速按两次将电话转到语音信箱: 通话中: 按一次挂断电话: 通话中如果有第二个电话打进来时: 按一次保留当前通话并接听第二个电话: 按住两秒钟不放忽略(拒绝接听)第二 ...
- iOS-触摸事件、手势识别、摇晃事件、耳机线控
概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件. ...
- android 基础控件(EditView、SeekBar等)的属性及使用方法
android提供了大量的UI控件,本文将介绍TextView.ImageView.Button.EditView.ProgressBar.SeekBar.ScrollView.WebView ...
- Android基本控件之Menus
在我们的手机中有很多样式的菜单,比如:我们的短信界面,每条短信,我们长按都会出现一个菜单,还有很多的种类.那么现在,我们就来详细的讨论一下安卓中的菜单 Android的控件中就有这么一个,叫做Menu ...
随机推荐
- [NOI2005]维修数列 Splay tree 区间反转,修改,求和,求最值
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1500 Description Input 输入文件的第1行包含两个数N和M,N表示初始时数 ...
- 更新yum到 163
cdh4 yum安装; http://www.cloudera.com/content/support/en/documentation/cdh4-documentation/cdh4-documen ...
- 谷歌官方刷新组件SwipeRefreshLayout
今天开始使用谷歌的SwipeRefreshLayout,会记下一些坑 1.手动调用setRefreshing(true)不会出现刷新动画 原因是:SwipeRefreshLayout indicato ...
- Delphi监视进程并结束进程
监视进程并结束进程在很多地方都用到这里借前人的经验写了个小例子: 以QQ的进程qq.exe为例 关键代码如下: function CheckTask(ExeFileName: string): Boo ...
- hdoj 1213 How Many Tables
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- runtime详解2
Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理.这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一 ...
- Oracle Data Guard PING[ARC2]: Heartbeat failed to connect to standby ''. Error is 12514 故障分析
朋友搭建的一套DG,折腾了很长时间,一直都是报如下错误: ORA-12514: TNS:listener does not currentlyknow of service requested in ...
- JVM之字节码——Class文件格式
如同讲汇编必先讲计算机组成原理,在开始字节码之前,我们先了解一下JVM的主要构成. 在JVM的内部,主要由如下几个部分构成: 1.数据区 方法区:存放类定义信息.字节码.常量等数据,在Sun HotS ...
- [开心IT面试题] realloc用法
C++面试题中另一个大板块——内存管理,主要有malloc(free).new(delete).calloc.realloc等.今天来说说realloc的用法. 1.头文件 #include < ...
- Android内存中的图片
图片在内存中的大小 Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(intwidth, int height, ...