Android framework 中双击 home 的实现

前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         CSDN:
http://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文

 

如果你需要做双击 home key 的检测
你可以参考如下 sample code 自行实现
请修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法
找到参考位置后, 加入注释所述代码:
<span style="font-family:SimSun;font-size:10px;">  //以下是原有代码, 即参考行
  if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
                && event.getRepeatCount() == 0) {
            performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
        }
  //参考行到此结束</span>
        int result = 0; //原为 int result, 请加入初始值.
  // mtk sample code for double home click detection BEGIN.
  //请在类中补充 boolean homeDownDoubleClick = false; 的定义
  //请在类中补充 long lastHomeDownTime=0; 的定义
  //请在类中补充 long lastHomeUpTime=0; 的定义
  //检测原理: 检测上一次按下的 home key 与本次按下的 home key 时间间隔是否 < 500ms 
  //if yes, 则认为是双击 home key 

<span style="font-family:SimSun;font-size:10px;">if(keyCode == KeyEvent.KEYCODE_HOME){
   if(down){
  // this is home down
  if(((event.getEventTime() - lastHomeDownTime) < 500)){ 
   homeDownDoubleClick = true; 
  }else{
   homeDownDoubleClick = false;
  }
  lastHomeDownTime = event.getEventTime();
 }else{
  // then home up comes
  Log.d(TAG,"homeDownDoubleClick="+homeDownDoubleClick+",lastHomeDownTime="+lastHomeDownTime+",lastHomeUpTime="+lastHomeUpTime+",this home up="+event.getEventTime());
  if(homeDownDoubleClick && ((event.getEventTime() - lastHomeUpTime) < 500)){ 
   Log.d(TAG,"double click on home detected");
   try {
    IStatusBarService statusbar = getStatusBarService();
    if (statusbar != null) {
     statusbar.preloadRecentApps();
     statusbar.toggleRecentApps();
                }
            } catch (RemoteException e) {
    Slog.e(TAG, "RemoteException when preloading recent apps", e);
                mStatusBarService = null;
   }
     
   result |= ACTION_WAKE_UP;
   return result;
  }
  lastHomeUpTime = event.getEventTime();
 }
}</span>
  // mtk sample code for double home click detection END.










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android框架,NVRAM(非易失性随机存储器)被用于存储系统相关的配置和参数,如无线通信模块的MAC地址、IMEI号码等。NVRAM的读写在Android设备的系统级别发挥重要作用。 首先,NVRAM读取功能在Android框架由系统服务提供,通过封装底层的硬件接口和驱动程序来实现Android的系统服务负责与硬件之间的通信,从NVRAM读取所需的参数。在读取过程,通过定义和使用适当的API,应用程序或系统组件可以请求读取特定的NVRAM值,以进行相关的操作和功能。 其次,NVRAM的写入功能也是由系统服务提供的。当应用程序或系统组件需要修改某个NVRAM参数时,可以通过调用相应的API来实现。系统服务将接收到的修改请求转发给硬件接口和驱动程序,然后将新值写入NVRAM。这样,NVRAM对应的参数将被更新,以满足新的需求。 在Android框架,NVRAM读写功能的正确实现对于系统的正常运行非常重要。它确保各种系统组件可以正确访问配置和参数信息,并确保设备在启动时能够正确初始化。同时,NVRAM的读写操作需要受到适当的权限控制,只有具备足够权限的应用程序或系统组件才能进行相关的操作。 综上所述,Android框架的NVRAM读写功能通过系统服务提供,并且在系统级别发挥重要作用。这种功能确保了系统配置和参数的正确访问和修改,从而保障设备的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值