赞
踩
PhoneWindowManager.java
case KeyEvent.KEYCODE_ENDCALL: {
if("com.freeme.factory.input.KeyboardTest".equals(getCurrentActivityName())){
break;
} else if (getCurrentActivityName().contains("com.freeme.factory")) {
return 0;
}
result &= ~ACTION_PASS_TO_USER;//1
if (down) {
interceptPowerKeyDown(event, interactiveAndOn);//*/on off screen
interceptFn3KeyDown(false);//*/add long press 1
TelecomManager telecomManager = getTelecommService();
boolean hungUp = false;
if (telecomManager != null) {
hungUp = telecomManager.endCall();
}
if (interactive && !hungUp) {
mEndCallKeyHandled = false;
mDownTime = event.getEventTime();
} else {
mEndCallKeyHandled = true;
}
} else {
interceptPowerKeyUp(event, canceled);
interceptFn3KeyUp(true);//*/addlong press 2
long upTime=event.getEventTime();
if (!mEndCallKeyHandled) {
if(upTime -mDownTime < 1000){
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_POWER);
}
}
}
//*/
break;
}
写在拦截方法外围即可:
//*/
boolean mFn3KeyHandled;
private final Runnable mFn3LongPress = new Runnable() {
@Override
public void run() {
Instrumentation inst = new Instrumentation();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_APP_SWITCH);
android.util.Log.d("TOP", "================ KEYCODE_APP_SWITCH ==================");
mFn3KeyHandled = true;
}
};
private void interceptFn3KeyDown(boolean handled) {
Log.d(TAG, "interceptFn3KeyDown, handled = " + handled);
mFn3KeyHandled = handled;
if (!mFn3KeyHandled) {
mHandler.postDelayed(mFn3LongPress, 1000);
}
}
private boolean interceptFn3KeyUp(boolean canceled) {
if (!mFn3KeyHandled) {
mHandler.removeCallbacks(mFn3LongPress);
return !canceled;
}
return false;
}
//*/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。