sanders: KeyHandler: Add last app action
This commit is contained in:
committed by
therootlord
parent
290dd03777
commit
18859c1826
@@ -54,6 +54,7 @@
|
|||||||
<string name="action_wake">Acordar o dispositivo</string>
|
<string name="action_wake">Acordar o dispositivo</string>
|
||||||
<string name="action_back">Voltar</string>
|
<string name="action_back">Voltar</string>
|
||||||
<string name="action_recents">Recentes</string>
|
<string name="action_recents">Recentes</string>
|
||||||
|
<string name="action_last_app">Último app</string>
|
||||||
<string name="action_volume_up">Aumentar volume</string>
|
<string name="action_volume_up">Aumentar volume</string>
|
||||||
<string name="action_volume_down">Diminuir volume</string>
|
<string name="action_volume_down">Diminuir volume</string>
|
||||||
<string name="action_voice_assistant">Assistente de voz</string>
|
<string name="action_voice_assistant">Assistente de voz</string>
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
<item>@string/action_power</item>
|
<item>@string/action_power</item>
|
||||||
<item>@string/action_back</item>
|
<item>@string/action_back</item>
|
||||||
<item>@string/action_recents</item>
|
<item>@string/action_recents</item>
|
||||||
|
<item>@string/action_last_app</item>
|
||||||
<item>@string/action_volume_up</item>
|
<item>@string/action_volume_up</item>
|
||||||
<item>@string/action_volume_down</item>
|
<item>@string/action_volume_down</item>
|
||||||
<item>@string/action_voice_assistant</item>
|
<item>@string/action_voice_assistant</item>
|
||||||
@@ -38,6 +39,7 @@
|
|||||||
<item>101</item> <!-- power -->
|
<item>101</item> <!-- power -->
|
||||||
<item>102</item> <!-- back -->
|
<item>102</item> <!-- back -->
|
||||||
<item>103</item> <!-- recents -->
|
<item>103</item> <!-- recents -->
|
||||||
|
<item>121</item> <!-- last app -->
|
||||||
<item>104</item> <!-- volume up -->
|
<item>104</item> <!-- volume up -->
|
||||||
<item>105</item> <!-- volume down -->
|
<item>105</item> <!-- volume down -->
|
||||||
<item>106</item> <!-- voice assistant -->
|
<item>106</item> <!-- voice assistant -->
|
||||||
|
|||||||
@@ -54,6 +54,7 @@
|
|||||||
<string name="action_wake">Wake</string>
|
<string name="action_wake">Wake</string>
|
||||||
<string name="action_back">Back</string>
|
<string name="action_back">Back</string>
|
||||||
<string name="action_recents">Recents</string>
|
<string name="action_recents">Recents</string>
|
||||||
|
<string name="action_last_app">Last app</string>
|
||||||
<string name="action_volume_up">Volume up</string>
|
<string name="action_volume_up">Volume up</string>
|
||||||
<string name="action_volume_down">Volume down</string>
|
<string name="action_volume_down">Volume down</string>
|
||||||
<string name="action_voice_assistant">Voice assistant</string>
|
<string name="action_voice_assistant">Voice assistant</string>
|
||||||
|
|||||||
@@ -217,6 +217,40 @@ public class KeyHandler implements DeviceKeyHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void switchToLastApp(Context context) {
|
||||||
|
final ActivityManager am =
|
||||||
|
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
|
ActivityManager.RunningTaskInfo lastTask = getLastTask(context, am);
|
||||||
|
|
||||||
|
if (lastTask != null) {
|
||||||
|
am.moveTaskToFront(lastTask.id, ActivityManager.MOVE_TASK_NO_USER_ACTION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ActivityManager.RunningTaskInfo getLastTask(Context context,
|
||||||
|
final ActivityManager am) {
|
||||||
|
final String defaultHomePackage = resolveCurrentLauncherPackage(context);
|
||||||
|
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(5);
|
||||||
|
|
||||||
|
for (int i = 1; i < tasks.size(); i++) {
|
||||||
|
String packageName = tasks.get(i).topActivity.getPackageName();
|
||||||
|
if (!packageName.equals(defaultHomePackage)
|
||||||
|
&& !packageName.equals(context.getPackageName())
|
||||||
|
&& !packageName.equals("com.android.systemui")) {
|
||||||
|
return tasks.get(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String resolveCurrentLauncherPackage(Context context) {
|
||||||
|
final Intent launcherIntent = new Intent(Intent.ACTION_MAIN)
|
||||||
|
.addCategory(Intent.CATEGORY_HOME);
|
||||||
|
final PackageManager pm = context.getPackageManager();
|
||||||
|
final ResolveInfo launcherInfo = pm.resolveActivity(launcherIntent, 0);
|
||||||
|
return launcherInfo.activityInfo.packageName;
|
||||||
|
}
|
||||||
|
|
||||||
private void setHapticFeedbackEnabledOnSystem(boolean enabled) {
|
private void setHapticFeedbackEnabledOnSystem(boolean enabled) {
|
||||||
Settings.System.putIntForUser(mContext.getContentResolver(),
|
Settings.System.putIntForUser(mContext.getContentResolver(),
|
||||||
Settings.System.HAPTIC_FEEDBACK_ENABLED, enabled ? 1 : 0, UserHandle.USER_CURRENT);
|
Settings.System.HAPTIC_FEEDBACK_ENABLED, enabled ? 1 : 0, UserHandle.USER_CURRENT);
|
||||||
@@ -565,6 +599,11 @@ public class KeyHandler implements DeviceKeyHandler {
|
|||||||
goToPipMode();
|
goToPipMode();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ACTION_LAST_APP:
|
||||||
|
if (!mKeyguardManager.inKeyguardRestrictedInputMode()) {
|
||||||
|
switchToLastApp(mContext);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (isHapticFeedbackEnabledOnFP && action != ACTION_VOICE_ASSISTANT && action != ACTION_CAMERA && action != ACTION_FLASHLIGHT && action != ACTION_POWER) { // prevent double vibration
|
if (isHapticFeedbackEnabledOnFP && action != ACTION_VOICE_ASSISTANT && action != ACTION_CAMERA && action != ACTION_FLASHLIGHT && action != ACTION_POWER) { // prevent double vibration
|
||||||
doHapticFeedbackFP(false);
|
doHapticFeedbackFP(false);
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ public class Constants {
|
|||||||
public static final int ACTION_EMAIL = 118;
|
public static final int ACTION_EMAIL = 118;
|
||||||
public static final int ACTION_MESSAGES = 119;
|
public static final int ACTION_MESSAGES = 119;
|
||||||
public static final int ACTION_PIP = 120;
|
public static final int ACTION_PIP = 120;
|
||||||
|
public static final int ACTION_LAST_APP = 121;
|
||||||
public static final int[] sFPSupportedActions = new int[]{
|
public static final int[] sFPSupportedActions = new int[]{
|
||||||
ACTION_HOME,
|
ACTION_HOME,
|
||||||
ACTION_POWER,
|
ACTION_POWER,
|
||||||
@@ -78,7 +79,8 @@ public class Constants {
|
|||||||
ACTION_FLASHLIGHT,
|
ACTION_FLASHLIGHT,
|
||||||
ACTION_CAMERA,
|
ACTION_CAMERA,
|
||||||
ACTION_SCREENSHOT,
|
ACTION_SCREENSHOT,
|
||||||
ACTION_PIP
|
ACTION_PIP,
|
||||||
|
ACTION_LAST_APP
|
||||||
};
|
};
|
||||||
public static final int[] sFPSupportedActionsScreenOff = new int[]{
|
public static final int[] sFPSupportedActionsScreenOff = new int[]{
|
||||||
ACTION_POWER,
|
ACTION_POWER,
|
||||||
|
|||||||
Reference in New Issue
Block a user