基于Android 7.0 在源码中添加识别连续按3次返回键后 发送广播功能

修改framework/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

@@ -686,8 +688,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
     private long mScreenshotChordVolumeDownKeyTime;
     private boolean mScreenshotChordVolumeDownKeyConsumed;
     private boolean mScreenshotChordVolumeUpKeyTriggered;
     private boolean mScreenshotChordPowerKeyTriggered;
     private long mScreenshotChordPowerKeyTime;
+       
+       long presstime =0;
+       int i = 0;
 
     /* The number of steps between min and max brightness */
     private static final int BRIGHTNESS_STEPS = 10;
@@ -1332,6 +1346,32 @@ public class PhoneWindowManager implements WindowManagerPolicy {
             }
         }
     }
+       
+       private void customsendbroadcast() {
+               Intent intent = new Intent();
+               intent.setAction("com.back3.broadcast");
+               mContext.sendBroadcast(intent);
+               Log.d(TAG,"customsendbroadcast Action end");
+               }
 
     private long getScreenshotChordLongPressDelay() {
         if (mKeyguardDelegate.isShowing()) {
@@ -5536,10 +5620,27 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                 && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
                 && event.getRepeatCount() == 0;
 
-        // Handle special keys.
+               // Handle special keys.
         switch (keyCode) {
             case KeyEvent.KEYCODE_BACK: {
+                               Log.d(TAG,"BACK start");
                 if (down) {
+                                       Log.d(TAG,"down");
+                                       long nowtime = System.currentTimeMillis();
+                                       Log.d(TAG,"nowtime="+nowtime+" presstime="+presstime);
+                                       if (nowtime - presstime < 1000) {
+                                               presstime = nowtime;
+                                               i = i + 1;
+                                               Log.d(TAG,"if:i = "+i);
+                                               if (i == 2){
+                                                       Log.d(TAG,"customsendbroadcast start");
+                                                       customsendbroadcast();
+                                               }
+                                       } else {
+                                               presstime = nowtime;
+                                               i = 0;
+                                               Log.d(TAG,"else:i = "+i);
+                                       }
                     mBackKeyHandled = false;
                     if (hasLongPressOnBackBehavior()) {
                         Message msg = mHandler.obtainMessage(MSG_BACK_LONG_PRESS);

此功能基于对按键间隔时间的判断,如果按键时间大于1秒,则判断重置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值