Skip to content

Commit 04cf272

Browse files
committed
feat: 优化手势功能, 并添加一些新手势
同时修复: - 部分手势错乱的问题 - 平板无法触发手势/无法劫持手势提示线动作的问题 - 边角手势会误触 Google 语音助手的问题
1 parent 2ce2133 commit 04cf272

26 files changed

Lines changed: 947 additions & 361 deletions

File tree

app/src/main/res/xml/prefs_about_use.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,13 @@
292292
android:action="android.intent.action.VIEW"
293293
android:data="https://github.com/Howard20181/Mi_AOSP_IME" />
294294
</Preference>
295+
<Preference
296+
android:summary="parallelcc | GPL-3.0"
297+
android:title="MiCTS">
298+
<intent
299+
android:action="android.intent.action.VIEW"
300+
android:data="https://github.com/parallelcc/MiCTS" />
301+
</Preference>
295302
<Preference
296303
android:summary="Art-Chen | AGPL-3.0"
297304
android:title="MIUI Extra">

library/core/src/main/java/com/sevtinge/hyperceiler/hooker/home/HomeGestureSettings.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import static com.sevtinge.hyperceiler.libhook.utils.api.DeviceHelper.Miui.isPad;
2222
import static com.sevtinge.hyperceiler.libhook.utils.api.DeviceHelper.System.isMoreHyperOSVersion;
2323

24+
import androidx.preference.PreferenceCategory;
2425
import androidx.preference.SwitchPreference;
2526

2627
import com.sevtinge.hyperceiler.core.R;
@@ -31,9 +32,11 @@
3132
public class HomeGestureSettings extends DashboardFragment {
3233

3334
SwitchPreference mQuickBack;
35+
SwitchPreference mGestureEnable;
3436
SwitchPreference mDisableAllGesture;
3537
SeekBarPreferenceCompat mHighBackArea;
3638
SeekBarPreferenceCompat mWideBackArea;
39+
PreferenceCategory mGestureActions;
3740

3841
@Override
3942
public int getPreferenceScreenResId() {
@@ -42,12 +45,19 @@ public int getPreferenceScreenResId() {
4245

4346
@Override
4447
public void initPrefs() {
48+
mGestureEnable = findPreference("prefs_key_home_gesture_enable");
4549
mQuickBack = findPreference("prefs_key_home_navigation_quick_back");
4650
mDisableAllGesture = findPreference("prefs_key_home_navigation_disable_full_screen_back_gesture");
4751
mHighBackArea = findPreference("prefs_key_home_navigation_back_area_height");
4852
mWideBackArea = findPreference("prefs_key_home_navigation_back_area_width");
53+
mGestureActions = findPreference("prefs_key_home_gesture_actions");
4954

5055
boolean mSwitch = getSharedPreferences().getBoolean(mDisableAllGesture.getKey(), false);
56+
boolean gesturesEnabled = getSharedPreferences().getBoolean(mGestureEnable.getKey(), false);
57+
58+
if (mGestureActions != null) {
59+
mGestureActions.setVisible(gesturesEnabled);
60+
}
5161

5262
if (isPad()) {
5363
setFuncHint(mDisableAllGesture, 1);
@@ -65,5 +75,14 @@ public void initPrefs() {
6575
return true;
6676
}
6777
);
78+
79+
mGestureEnable.setOnPreferenceChangeListener(
80+
(v, newValue) -> {
81+
if (mGestureActions != null) {
82+
mGestureActions.setVisible((Boolean) newValue);
83+
}
84+
return true;
85+
}
86+
);
6887
}
6988
}

library/core/src/main/java/com/sevtinge/hyperceiler/sub/MultiActionSettings.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ public void initPrefs() {
7272
mActionKey = mKey + "_action";
7373

7474
mCurrentOptimizeMode = getMultiActionMode();
75+
if (mCurrentOptimizeMode == 5) {
76+
mCurrentOptimizeMode = 4;
77+
setMultiActionMode(4);
78+
}
7579
mMultiActionValues = getResources().getIntArray(R.array.multi_action_value);
7680
mMultiActionKeys = getResources().getStringArray(R.array.multi_action_key);
7781
generateScreenColorPreference();
@@ -136,6 +140,9 @@ private void generateScreenColorPreference() {
136140
String[] multiActionTitles = getResources().getStringArray(R.array.multi_action_title);
137141
for (int i = 0; i < mMultiActionKeys.length; i++) {
138142
String key = mMultiActionKeys[i];
143+
if (!shouldShowAction(key)) {
144+
continue;
145+
}
139146
mMultiActions.put(key, mMultiActionValues[i]);
140147
RadioButtonPreferenceCategory radioButtonPreferenceCategory = new RadioButtonPreferenceCategory(getThemedContext());
141148
preferenceCategory.addPreference(radioButtonPreferenceCategory);
@@ -154,6 +161,42 @@ private void generateScreenColorPreference() {
154161
}
155162
}
156163

164+
private boolean shouldShowAction(String key) {
165+
if ("prefs_key_go_home".equals(key)) {
166+
return supportsGoHomeAction();
167+
}
168+
if ("prefs_key_force_stop_current_app".equals(key)) {
169+
return supportsLineLongPressAction();
170+
}
171+
if ("prefs_key_google_voice_assistant".equals(key)) {
172+
return true;
173+
}
174+
if ("prefs_key_super_xiaoai_circle_search".equals(key)
175+
|| "prefs_key_google_circle_to_search".equals(key)
176+
) {
177+
return supportsAssistantGestureAction();
178+
}
179+
return true;
180+
}
181+
182+
private boolean supportsGoHomeAction() {
183+
return "prefs_key_home_gesture_line_double_click".equals(mKey)
184+
|| "prefs_key_home_gesture_line_long_press".equals(mKey)
185+
|| "prefs_key_home_navigation_assist_left_slide".equals(mKey)
186+
|| "prefs_key_home_navigation_assist_right_slide".equals(mKey);
187+
}
188+
189+
private boolean supportsLineLongPressAction() {
190+
return "prefs_key_home_gesture_line_long_press".equals(mKey);
191+
}
192+
193+
private boolean supportsAssistantGestureAction() {
194+
return "prefs_key_home_gesture_line_long_press".equals(mKey)
195+
|| "prefs_key_home_gesture_line_double_click".equals(mKey)
196+
|| "prefs_key_home_navigation_assist_left_slide".equals(mKey)
197+
|| "prefs_key_home_navigation_assist_right_slide".equals(mKey);
198+
}
199+
157200
private void addExpertModeIfNeed(RadioButtonPreferenceCategory radioButtonPreferenceCategory, String key) {
158201
mExpertPreference = new AppSelectorRadioButtonPreference(getThemedContext());
159202
mExpertPreference.setKey(key);

library/core/src/main/res/values-zh-rCN/strings_app.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,13 @@
299299
<string name="array_global_actions_powermenu_short">电源菜单</string>
300300
<string name="array_global_actions_clear_memory">清理内存</string>
301301
<string name="array_global_actions_invert_colors">颜色反转</string>
302+
<string name="array_global_actions_home">返回桌面</string>
303+
<string name="array_global_actions_control_center">打开控制中心</string>
304+
<string name="array_global_actions_super_xiaoai">呼出超级小爱</string>
305+
<string name="array_global_actions_super_xiaoai_circle_search">呼出超级小爱识屏</string>
306+
<string name="array_global_actions_google_circle_to_search">呼出 Google 即圈即搜</string>
307+
<string name="array_global_actions_google_voice_assistant">呼出 Google 语音助手</string>
308+
<string name="array_global_actions_force_stop_current_app">停止当前应用</string>
302309
<string name="array_global_actions_switchkeyboard">切换键盘</string>
303310
<string name="array_global_actions_goback">返回</string>
304311
<string name="array_global_actions_onehanded_left">单手模式 (左)</string>
@@ -1062,7 +1069,10 @@
10621069
<string name="home_navigation_predictive_progress_desc">实验性功能,修复在 Xiaomi HyperOS 系统的部分场景下,预测性返回进度行程过短的问题</string>
10631070
<string name="home_navigation_back_area_height">返回手势区域高度</string>
10641071
<string name="home_navigation_back_area_width">返回手势区域宽度</string>
1072+
<string name="home_gesture_enable">启用手势功能</string>
1073+
<string name="home_gesture_enable_desc">启用后,需要额外勾选系统框架和系统界面作用域才能生效</string>
10651074
<string name="home_gesture_title2">手势</string>
1075+
<string name="home_gesture_google_usage_banner">Google 语音助手、Google 即圈即搜使用说明:\n- 需要安装 Google 应用\n- 需要设置 Google 为默认数字助理\n- 如遇到呼不出 Google 语音助手,请确保 Google 应用在后台运行或重新设置默认数字助理\n- 如遇到呼不出 Google 即圈即搜或提示不可用,可以勾选 Google 作用域伪装成支持的设备</string>
10661076
<string name="home_gesture_mainscreen_title">主屏幕</string>
10671077
<string name="home_gesture_gesture_title">全面屏手势</string>
10681078
<string name="home_gesture_double_tap">双击</string>

library/core/src/main/res/values/arrays.xml

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,42 +45,60 @@
4545
<string-array name="multi_action_title">
4646
<item>@string/array_global_actions_none</item>
4747
<item>@string/array_global_actions_notif</item>
48-
<item>@string/array_global_actions_lock</item>
49-
<item>@string/array_global_actions_sleep</item>
50-
<item>@string/array_global_actions_screenshot</item>
48+
<item>@string/array_global_actions_control_center</item>
5149
<item>@string/array_global_actions_clear_memory</item>
5250
<item>@string/array_global_actions_invert_colors</item>
51+
<item>@string/array_global_actions_powermenu</item>
52+
<item>@string/array_global_actions_lock</item>
5353
<item>@string/array_global_actions_recents</item>
54+
<item>@string/array_global_actions_home</item>
55+
<item>@string/array_global_actions_screenshot</item>
5456
<item>@string/array_global_actions_volume</item>
55-
<item>@string/array_global_actions_powermenu</item>
57+
<item>@string/array_global_actions_super_xiaoai</item>
58+
<item>@string/array_global_actions_super_xiaoai_circle_search</item>
59+
<item>@string/array_global_actions_google_circle_to_search</item>
60+
<item>@string/array_global_actions_google_voice_assistant</item>
61+
<item>@string/array_global_actions_force_stop_current_app</item>
5662
<item>@string/array_global_actions_launch</item>
5763
</string-array>
5864

5965
<string-array name="multi_action_key">
6066
<item>prefs_key_no_action</item>
6167
<item>prefs_key_open_notification_center</item>
62-
<item>prefs_key_screen_lock</item>
63-
<item>prefs_key_screen_sleep</item>
64-
<item>prefs_key_screen_capture</item>
68+
<item>prefs_key_open_control_center</item>
6569
<item>prefs_key_clear_memory</item>
6670
<item>prefs_key_invert_colors</item>
71+
<item>prefs_key_open_powermenu</item>
72+
<item>prefs_key_screen_lock</item>
6773
<item>prefs_key_screen_recents</item>
74+
<item>prefs_key_go_home</item>
75+
<item>prefs_key_screen_capture</item>
6876
<item>prefs_key_volume_dialog</item>
69-
<item>prefs_key_open_powermenu</item>
77+
<item>prefs_key_super_xiaoai</item>
78+
<item>prefs_key_super_xiaoai_circle_search</item>
79+
<item>prefs_key_google_circle_to_search</item>
80+
<item>prefs_key_google_voice_assistant</item>
81+
<item>prefs_key_force_stop_current_app</item>
7082
<item>prefs_key_open_app</item>
7183
</string-array>
7284

7385
<integer-array name="multi_action_value">
7486
<item>0</item>
7587
<item>1</item>
88+
<item>15</item>
7689
<item>2</item>
7790
<item>3</item>
91+
<item>12</item>
7892
<item>4</item>
79-
<item>5</item>
80-
<item>6</item>
8193
<item>7</item>
94+
<item>14</item>
95+
<item>6</item>
8296
<item>8</item>
83-
<item>12</item>
97+
<item>16</item>
98+
<item>17</item>
99+
<item>18</item>
100+
<item>20</item>
101+
<item>19</item>
84102
<item>13</item>
85103
</integer-array>
86104
</resources>

library/core/src/main/res/values/strings_app.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,13 @@
339339
<string name="array_global_actions_powermenu_short">Power menu</string>
340340
<string name="array_global_actions_clear_memory">Clear memory</string>
341341
<string name="array_global_actions_invert_colors">Color inversion</string>
342+
<string name="array_global_actions_home">Go home</string>
343+
<string name="array_global_actions_control_center">Open Control Center</string>
344+
<string name="array_global_actions_super_xiaoai">Open Super XiaoAi</string>
345+
<string name="array_global_actions_super_xiaoai_circle_search">Open Super XiaoAi screen recognition</string>
346+
<string name="array_global_actions_google_circle_to_search">Open Google Circle to Search</string>
347+
<string name="array_global_actions_google_voice_assistant">Open Google Voice Assistant</string>
348+
<string name="array_global_actions_force_stop_current_app">Stop current app</string>
342349
<string name="array_global_actions_switchkeyboard">Switch keyboard</string>
343350
<string name="array_global_actions_goback">Back</string>
344351
<string name="array_global_actions_onehanded_left">One-handed mode (Left)</string>
@@ -1111,7 +1118,10 @@
11111118
<string name="home_navigation_predictive_progress_desc">Experimental feature: Fixes an issue where the predictive back navigation bar was too short in certain scenarios on the Xiaomi HyperOS system.</string>
11121119
<string name="home_navigation_back_area_height">Back gesture area height</string>
11131120
<string name="home_navigation_back_area_width">Back gesture area width</string>
1121+
<string name="home_gesture_enable">Enable gestures</string>
1122+
<string name="home_gesture_enable_desc">After enabling, you also need to enable the System Framework and System UI scopes before it takes effect</string>
11141123
<string name="home_gesture_title2">Gesture</string>
1124+
<string name="home_gesture_google_usage_banner">Google Voice Assistant and Google Circle Search Instructions:\n- You need to install the Google app\n- You need to set Google as the default digital assistant\n- If you cannot call Google Voice Assistant, please make sure the Google app is running in the background or reset the default digital assistant\n- If you cannot call Google Circle Search or the prompt is unavailable, you can check the Google scope to pretend to be a supported device</string>
11151125
<string name="home_gesture_mainscreen_title">Homepage</string>
11161126
<string name="home_gesture_gesture_title">Full screen gesture</string>
11171127
<string name="home_gesture_double_tap">Double tap</string>

library/core/src/main/res/xml/home_gesture.xml

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
app:myLocation="@string/home_navigation_title"
2222
app:quick_restart="com.miui.home">
2323
<PreferenceCategory android:title="@string/home_navigation_title">
24+
<SwitchPreference
25+
android:defaultValue="false"
26+
android:key="prefs_key_home_gesture_enable"
27+
android:summary="@string/home_gesture_enable_desc"
28+
android:title="@string/home_gesture_enable" />
29+
2430
<SwitchPreference
2531
android:defaultValue="false"
2632
android:key="prefs_key_home_navigation_quick_back"
@@ -62,7 +68,9 @@
6268

6369
</PreferenceCategory>
6470

65-
<PreferenceCategory android:title="@string/home_gesture_title2">
71+
<PreferenceCategory
72+
android:key="prefs_key_home_gesture_actions"
73+
android:title="@string/home_gesture_title2">
6674
<Preference
6775
android:fragment="com.sevtinge.hyperceiler.sub.MultiActionSettings"
6876
android:key="prefs_key_home_gesture_double_tap"
@@ -75,18 +83,6 @@
7583
android:summary="@string/home_gesture_shake_desc"
7684
android:title="@string/home_gesture_shake" />
7785

78-
<Preference
79-
android:fragment="com.sevtinge.hyperceiler.sub.MultiActionSettings"
80-
android:key="prefs_key_home_gesture_left_swipe"
81-
android:summary="@string/home_gesture_left_swipe_desc"
82-
android:title="@string/home_gesture_left_swipe" />
83-
84-
<Preference
85-
android:fragment="com.sevtinge.hyperceiler.sub.MultiActionSettings"
86-
android:key="prefs_key_home_gesture_right_swipe"
87-
android:summary="@string/home_gesture_right_swipe_desc"
88-
android:title="@string/home_gesture_right_swipe" />
89-
9086
<Preference
9187
android:fragment="com.sevtinge.hyperceiler.sub.MultiActionSettings"
9288
android:key="prefs_key_home_gesture_up_swipe"
@@ -151,4 +147,4 @@
151147

152148
</PreferenceCategory>
153149

154-
</PreferenceScreen>
150+
</PreferenceScreen>

0 commit comments

Comments
 (0)