android按键长按短按功能的实现策略

这篇博客介绍了如何在Android中通过定时器和计数策略实现按键的短按与长按功能。当按键被按下时,系统会不断采样并计数,根据计数次数判断是上报长按事件还是短按事件。在不同电压值区间内,系统对应不同的按键行为,如短按触发音量调节,长按则切换歌曲。
摘要由CSDN通过智能技术生成
定时器轮休的方式,根据采样次数来区分长按还是短按
1.当按下键1的时候,就不断的计数,直到你放手电压值变化,再根据计数的次数判断上报长按还是短按的功能
没有按键的时候采样率为HZ/4,采样是HZ/40
 
static void  lradc1_data_function(unsigned long data)
248 {
249         volatile unsigned int  reg_val;
250         static int key_pressed = -1, count = 0;
251     int delay = HZ/40;
252         reg_val = readl(KEY_BASSADDRESS+LRADC_DATA1);
253 //       printk("[lkj]  second lradc data1 =0x%x, s_headset_plug=%d \n", reg_val, s_headset_plug);
254         //because recorder app close this, so ....
255         writel( readl(baseaddr+0x28) | (1<<27),(baseaddr+(0x28)));
256         writel( readl(baseaddr+0x28) | (1<<29),(baseaddr+(0x28)));
257
258         if(s_first_headset_plug != 1 || s_mic_type != 1) {
259                 mod_timer(&mic_data->timer, jiffies +  HZ/4);
260                 printk("[lkj] input key hook key return \n");
261                 return ;
262         }
263     if (reg_val >=0 && reg_val < 0x5 )
264     {
265             // hook key
266             if (key_pressed == 0)
267                 count++;
268             else {
269                 key_pressed = 0;
270                 count = 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值