Android FM耳机长按事件

此问题涉及两方面,应用层的修改和对应的驱动修改。

应用层修改:

   应用层主要是要添加媒体按键监听并对相关按键做响应处理。长按耳机键对应的按键是:KEYCODE_MEDIA_STOP

}else if (KeyEvent.KEYCODE_MEDIA_STOP == event.getKeyCode() && event.getAction() == KeyEvent.ACTION_UP) {

         if (mIsPlaying) {

              refreshImageButton(false);

              refreshActionMenuItem(false);

              refreshPopupMenuItem(false);

              refreshActionMenuPower(false);

              exitService();

         }

}

 

驱动层修改:

当物理层有按键的时候会调用accdet.c文件中的check_cable_type方法,在此方法内对各按键做了相关处理。

长按事件:

case LONG_MD:

     if(call_status == 0){

              notify_sendKeyEvent(ACC_MEDIA_STOP);

     }else{

              notify_sendKeyEvent(ACC_END_CALL);

     }                          

     break;

然后会调用sendKeyEvent()方法。

if(ACC_MEDIA_STOP== accdet_key_event) {

   input_report_key(kpd_accdet_dev, KEY_STOPCD, 1);

   input_report_key(kpd_accdet_dev, KEY_STOPCD, 0);

   input_sync(kpd_accdet_dev);

}

 

另外此问题还有一个中间衔接的地方就是键值的对应关系。应用层的MEDIA_STOP的键值是86.驱动层的KEY_STOPCD的键值是166。两者的对应关系表格在ACCDET.kl,如果没有可以自行添加。有的时候平台也会把键值关系表客制化到其他文件中,如:mtk-kpd.kl。最终生效的是客制化的文件。键值对应关系:

key 166   MEDIA_STOP          WAKE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值