如果TP按键区域不能同时上报两个事件,可以用单个键(如长按返回键)进行取消屏幕固定,请做如下修改:
1)frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
1、
import android.app.UiModeManager;
+ import android.app.IActivityManager;
2、
private static final int[] WINDOW_TYPES_WHERE_HOME_DOESNT_WORK = {
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
};
+ private boolean longPressBackRecents() {
+ if (mContext.getResources()
+ .getBoolean(com.android.internal.R.bool.config_showNavigationBar)) {
+ return false;
+ }
+
+ try {
+ IActivityManager activityManager = ActivityManagerNative.getDefault();
+ if (activityManager.isInLockTaskMode()) {
+ activityManager.stopLockTaskModeOnCurrent();
+ return true;
+ }
+ } catch (Exception e) {
+ Log.d(TAG, "LongPressBackRecents Fail !", e);
+ }
+ return false;
+ }
3、
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
if(mKeyguardDelegate != null && !mKeyguardDelegate.isShowing()) {
mPowerManager.scheduleButtonLightTimeout(SystemClock.uptimeMillis());
}
+ if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
+ longPressBackRecents();
+ }
/* @} */
2)frameworks/base/packages/SystemUI/res/values-zh-rCN/strings.xml(字串描述修改,请同时修改其他语言)
- <string name="screen_pinning_description" msgid="1346522416878235405">"这将会固定显示此屏幕,直到您取消固定为止。触摸并同时按住“返回”和“概览”即可取消固定屏幕。"</string>
+ <string name="screen_pinning_description" msgid="1346522416878235405">"这将会固定显示此屏幕,直到您取消固定为止。长按“返回”键即可取消固定屏幕。"</string>
3)frameworks/base/packages/SystemUI/res/layout/screen_pinning_request_buttons.xml
<FrameLayout
android:id="@+id/screen_pinning_recents_group"
...........................................
<ImageView
...........................................
- android:src="@drawable/screen_pinning_light_bg_circ" />
+ android:src="@null" />
<ImageView
............................................
android:scaleType="matrix"
- android:src="@drawable/screen_pinning_bg_circ" />
+ android:src="@null" />
4)frameworks/base/core/res/res/values-zh-rCN/strings.xml(字串描述修改,请同时修改其他语言)
- <string name="lock_to_app_toast" msgid="7570091317001980053">"要取消固定此屏幕,请同时触摸并按住“返回”和“概览”按钮。"</string>
+ <string name="lock_to_app_toast" msgid="7570091317001980053">"要取消固定此屏幕,请长按“返回”键。"</string>
5)frameworks/base/core/res/res/values/config.xml(永久隐藏虚拟按键解锁)
- <bool name="config_force_user_navigationbar">true</bool>
+ <bool name="config_force_user_navigationbar">false</bool>