使用线控耳机来操控应用功能
实现原理:通过广播拦截来实现。
(一)定义1个广播拦截器,用来拦截线控耳机按键产生的广播事件。
-
importandroid.content.BroadcastReceiver;
-
importandroid.content.Context;
-
importandroid.content.Intent;
-
importandroid.os.Bundle;
-
importandroid.os.Handler;
-
importandroid.os.Message;
-
importandroid.util.Log;
-
importandroid.view.KeyEvent;
-
-
publicclassMediaButtonReceiverextendsBroadcastReceiver{
-
-
-
-
-
privateHandlerhandler;
-
-
-
-
-
-
publicMediaButtonReceiver(Handlerhandler){
-
this.handler=handler;
-
}
-
-
@Override
-
publicvoidonReceive(Contextcontext,Intentintent){
-
booleanisActionMediaButton=Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction());
-
if(!isActionMediaButton)return;
-
KeyEventevent=(KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
-
if(event==null)return;
-
-
booleanisActionUp=(event.getAction()==KeyEvent.ACTION_UP);
-
if(!isActionUp)return;
-
-
intkeyCode=event.getKeyCode();
-
longeventTime=event.getEventTime()-event.getDownTime();
-
Messagemsg=Message.obtain();
-
msg.what=100;
-
Bundledata=newBundle();
-
data.putInt("key_code",keyCode);
-
data.putLong("event_time",eventTime);
-
msg.setData(data);
-
handler.sendMessage(msg);
-
-
-
abortBroadcast();
-
}
-
}
(二)在主程序的处理:
(1)定义并注册广播服务
-
-
MyHandlerhandler=newMyHandler();
-
-
MediaButtonReceivermediaButtonReceiver=newMediaButtonReceiver(handler);
-
-
IntentFilterintentFilter=newIntentFilter(Intent.ACTION_MEDIA_BUTTON);
-
intentFilter.setPriority(100);
-
registerReceiver(mediaButtonReceiver,intentFilter);
(2)定义MyHandler和处理广播发回的消息:
-
privateclassMyHandlerextendsHandler{
-
@Override
-
publicvoidhandleMessage(Messagemsg){
-
intwhat=msg.what;
-
switch(what){
-
case100:
-
Bundledata=msg.getData();
-
-
intkeyCode=data.getInt("key_code");
-
-
longeventTime=data.getLong("event_time");
-
-
booleanisLongPress=(eventTime>2000);
-
-
switch(keyCode){
-
caseKeyEvent.KEYCODE_HEADSETHOOK:
-
caseKeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
-
playOrPause();
-
break;
-
-
-
caseKeyEvent.KEYCODE_MEDIA_NEXT:
-
if(isLongPress){
-
fastNext(1);
-
}else{
-
playNext();
-
}
-
break;
-
-
-
caseKeyEvent.KEYCODE_MEDIA_PREVIOUS:
-
if(isLongPress){
-
fastPrevious(1);
-
}else{
-
playPrevious();
-
}
-
break;
-
}
-
-
break;
-
default:
-
super.handleMessage(msg);
-
}
-
}
-
}
(3)应用程序退出的时候,别忘了取消注册的广播拦截器。
-
unregisterReceiver(mediaButtonReceiver);
分享到:
相关推荐
使用线控耳机来操控应用功能
借助广播来实现单按钮耳机的线控,能够识别单击和双击 代码讲解在我的博客里: http://blog.csdn.net/illidantao/article/details/16847909
苹果线控耳机端电路图,提供给爱好者参考.如有错误请指正.
线控耳机接线 华为耳机 荣耀耳机 荣耀3C-线控耳机:接线图
线控耳机的线控功能,附带有耳机的示意电路图,基于STM32搭建,示意图还有很多错误不能直接拿来做PCB
少有的Apple线控内部电路图。有兴趣了解Apple线控原理的同学可以看看。
嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。...可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多功能
线控技术(By-Wire),就是由电信号来实现传递转向控制,而不是通过机 械连接装置的硬连接来实现操作。而线控技术早已在现代飞机上得到了普及。 在飞机上,线控技术直接被称之为电传操纵技术(Fly-By-Wire),最早是...
SSS1530A3是3S高度集成的单芯片USB音频控制芯片,支持TypeC线控接听/挂断电话,支持通话功能,支持音量加减功能,解决TypeC耳机兼容性问题,性价比高TypeC耳机线控方案。
耳机插拔的识别,hookkey的用途,详细了解android的耳机相关功能,掌握耳机电路结构
电信设备-线控耳机、移动终端及控制方法.zip
电信设备-MEMS麦克风组件、线控耳机以及移动通信装置.zip
目录介绍通过分析耳机上不同按钮在不同时刻对具有TRRS接口PC设备的麦克风两个声道造成的不同影响来提供耳机线控支持。更具体的实现方式可以转到入门阅读。安装以下两种方式都需要联网,会自动安装依赖包keyboard , ...
[Android应用开发记录-字幕播放器(5)完善]附属工程,源码 1.将操作按钮改成图标方式 2.有电话接入时暂停播放。 3.通过线控按钮控制播放,暂停,上一句歌词,下一句歌词功能。(Android2.2以上版本) 4.拔掉...
本文介绍汽车线控转向技术的发展与应用,很不错的知识,大家一起看下吧。
行业资料-电子功用-双兼容线控耳机控制电路及基于该电路实现的控制方法.pdf的说明分析.rar
汽车线控制动技术的发展与应用.doc
bim标准文件3ds格式建筑模型,可用于bim开发研究bim标准文件3ds格式建筑模型,可用于bim开发研究
Android应用开发记录-字幕播放器(5)完善附带工程,源码 1.将操作按钮改成图标方式 2.有电话接入时暂停播放。 3.通过线控按钮控制播放,暂停,上一句歌词,下一句歌词功能。(Android2.2以上版本) 4.拔掉耳机线时...
北恩设备说明书