137 Commits

Author SHA1 Message Date
LittleTurtle2333
61b6dc448e Update version to 1.5.9 2022-04-10 00:19:02 +08:00
乌堆小透明
cad773ec99 New Crowdin updates (#128)
* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Thai)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin
2022-04-10 00:16:20 +08:00
LittleTurtle2333
bfda4f0df3 更新strings.xml 2022-04-05 19:28:33 +08:00
LinW_
e32718eedf 锁屏时钟显示秒数 (#132)
* 锁屏时钟显示秒数

* 锁屏时钟显示秒数

* 锁屏时钟显示秒数
2022-04-05 19:23:54 +08:00
LittleTurtle2333
b2e465ba3d 修复背屏天气显示异常 2022-04-03 21:04:21 +08:00
LittleTurtle2333
919694fce7 Update version to 1.5.8 2022-04-03 17:47:34 +08:00
乌堆小透明
f5ff3e78c4 New Crowdin updates (#127)
* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2022-04-03 17:46:01 +08:00
LittleTurtle2333
3619fbf4d3 新增背屏天气 2022-04-03 17:33:22 +08:00
乌堆小透明
7acd0aaff8 New Crowdin updates (#125)
* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-04-03 00:05:57 +08:00
乌堆小透明
785208c1ab New Crowdin updates (#124)
* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin
2022-04-03 00:02:18 +08:00
乌堆小透明
d108f46a19 Update Crowdin configuration file 2022-04-02 23:34:41 +08:00
LittleTurtle2333
a44a29b7b7 细分核心破解 2022-04-02 23:14:54 +08:00
LittleTurtle2333
29e9bb34ab Merge remote-tracking branch 'origin/main' 2022-04-02 22:40:28 +08:00
LittleTurtle2333
1a15df5822 自定义移动类型文本 2022-04-02 22:39:59 +08:00
乌堆小透明
dad17170ff New Crowdin updates (#122)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-04-01 21:59:33 +08:00
乌堆小透明
3aca588693 New Crowdin updates (#118)
* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2022-03-31 17:55:10 +08:00
LittleTurtle2333
cd731f7a21 Update version to 1.5.7 2022-03-31 17:51:20 +08:00
LittleTurtle2333
5e35cfb3e3 新增自定义状态栏通知最大点数 2022-03-31 17:12:53 +08:00
LittleTurtle2333
daa3c02d1a 更改cast hook逻辑 2022-03-31 17:00:57 +08:00
LittleTurtle2333
f83d439374 revert: 在SystemUI 启用 AppCenter (#119) 2022-03-31 17:00:18 +08:00
LittleTurtle2333
176682fa38 修复部分机型时间居中+图标居左横屏FC 2022-03-31 16:59:45 +08:00
QQ little ice
c02d9e1874 在SystemUI 启用 AppCenter (#119)
* 在SystemUI 启用 AppCenter

* 移除设置界面AppCenter

Co-authored-by: LittleTurtle2333 <lturtle2333@outlook.com>
2022-03-30 02:49:15 +08:00
LittleTurtle2333
d8baadae59 Update version to 1.5.6 2022-03-29 16:48:00 +08:00
乌堆小透明
d2035121ce New Crowdin updates (#114) 2022-03-29 16:47:42 +08:00
LittleTurtle2333
b29bfb45f9 新增自定义通知图标上限 2022-03-29 16:43:25 +08:00
LittleTurtle2333
657c65164f 新增状态栏时钟居中+图标居左布局 2022-03-29 16:15:38 +08:00
LittleTurtle2333
5c3ca4caa4 Merge remote-tracking branch 'origin/main' 2022-03-28 23:57:08 +08:00
LittleTurtle2333
08b4abf08c 新增时钟居中+图标居左(未完成) 2022-03-28 23:56:56 +08:00
CDzungx
acdbd23248 Typo fixes (#117) 2022-03-28 04:10:32 +08:00
LittleTurtle2333
2bed96532f 新增状态栏时钟居右布局 2022-03-28 03:14:02 +08:00
LittleTurtle2333
314fc7b46f Update README.md 2022-03-28 02:17:19 +08:00
LittleTurtle2333
ff94fce5d0 修复开启时钟居中对齐后上移的问题 2022-03-28 02:12:49 +08:00
LittleTurtle2333
d56d291e51 Fix Thai cannot hide network speed unit 2022-03-27 19:43:04 +08:00
LittleTurtle2333
fc1800932b Update version to 1.5.5 2022-03-27 17:15:30 +08:00
乌堆小透明
181869687e New Crowdin updates (#111)
* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin
2022-03-27 17:11:50 +08:00
LittleTurtle2333
5ee5dd71b1 双排时钟支持居中对齐 2022-03-27 16:59:49 +08:00
LittleTurtle2333
b6d8529624 修复一堆格式错误的变量名 2022-03-27 16:41:01 +08:00
YifePlayte
243bc39dd6 新增强制允许所有应用接力 (#113) 2022-03-27 12:50:51 +08:00
LittleTurtle2333
4332ac6ed8 Update README.md 2022-03-27 03:22:23 +08:00
LittleTurtle2333
8309c9a69a 修复最新MIUI内测居中布局通知异常 2022-03-27 03:08:22 +08:00
LittleTurtle2333
62561d4c34 删除冗余代码 2022-03-27 02:13:11 +08:00
QQ little ice
4c13ad4152 Use EasyXposed (#112)
* add EasyXposed

* change hook entry

* [android] use EasyXposed

* [com.miui.mediaeditor] use EasyXposed

* [com.miui.home] use EasyXposed

* [com.miui.powerkeeper] use EasyXposed

* [com.miui.screenshot] use EasyXposed

* [com.miui.securitycenter] use EasyXposed

* [com.android.settings] use EasyXposed

* [com.android.thememanager] use EasyXposed

* [com.android.systemui] use EasyXposed
2022-03-27 02:07:02 +08:00
LittleTurtle2333
6f91cab9b8 Update version to 1.5.4 2022-03-26 16:31:52 +08:00
乌堆小透明
ca2ffa4c3f New Crowdin updates (#109)
* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin
2022-03-26 16:30:41 +08:00
LittleTurtle2333
f44f095c65 修复大移动类型左右边距范围异常 2022-03-26 16:23:06 +08:00
LittleTurtle2333
68c67d139b 新增大移动类型图标自定义 2022-03-26 16:07:55 +08:00
LittleTurtle2333
2b1eaf6634 新增电池百分比大小自定义 2022-03-26 16:07:14 +08:00
LittleTurtle2333
c91a46cabb 修复部分版本下拉时钟变小 2022-03-26 14:22:36 +08:00
LittleTurtle2333
a7947d5a2f 修复一处时钟错误 2022-03-26 00:32:48 +08:00
乌堆小透明
bb8150583c New Crowdin updates (#105) 2022-03-25 15:48:15 +08:00
LittleTurtle2333
a4fe68c141 revent:新增允许下滑所有通知变成小窗 (#104) 2022-03-24 16:58:51 +08:00
LittleTurtle2333
61f64ba7bb 修复开机时的一处错误 2022-03-24 16:45:11 +08:00
YifePlayte
bfff5cc446 新增允许下滑所有通知变成小窗 (#104) 2022-03-23 14:10:02 +08:00
乌堆小透明
509fef5e06 Update version to 1.5.3 2022-03-22 20:16:50 +08:00
乌堆小透明
f88ff6db15 New Crowdin updates (#102)
* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-03-22 20:16:15 +08:00
乌堆小透明
2b352738f5 重构大移动类型功能,使其自适应 2022-03-22 20:15:15 +08:00
乌堆小透明
085b375dc6 优化大移动类型宽度 2022-03-21 20:06:35 +08:00
乌堆小透明
7c13214e2d Update version to 1.5.2 2022-03-21 19:57:48 +08:00
乌堆小透明
469f004baa New Crowdin updates (#101)
* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2022-03-21 19:57:26 +08:00
乌堆小透明
eec755d642 优化大移动类型对齐 2022-03-21 19:54:34 +08:00
乌堆小透明
14ca833ec1 修复未激活模块磁贴服务FC 2022-03-21 19:45:26 +08:00
乌堆小透明
8bcb89b04d 新增大移动类型图标 2022-03-21 17:55:16 +08:00
乌堆小透明
f2df033393 Merge remote-tracking branch 'origin/main' 2022-03-21 15:52:46 +08:00
乌堆小透明
ab41dea173 Update version to 1.5.1 2022-03-21 15:52:37 +08:00
乌堆小透明
7d9f45b92f New Crowdin updates (#100)
* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2022-03-21 15:52:25 +08:00
乌堆小透明
8c08466ed6 修复网速单位KB/MB显示错误 2022-03-21 15:47:51 +08:00
乌堆小透明
801ade5859 优化双排网速,使用主题提供单位 2022-03-21 15:41:28 +08:00
乌堆小透明
984b909197 新增双排网速对齐切换 2022-03-21 15:31:25 +08:00
乌堆小透明
0a6b114354 修复双排网速图标显示异常 2022-03-20 17:52:17 +08:00
乌堆小透明
f6653aef78 New Crowdin updates (#96)
* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin
2022-03-20 17:51:51 +08:00
乌堆小透明
1f7dbba6a8 Merge remote-tracking branch 'origin/main' 2022-03-20 17:00:00 +08:00
乌堆小透明
87a2f04b65 Update version to 1.4.9 2022-03-20 16:57:39 +08:00
乌堆小透明
25dba39daf New translations strings.xml (Chinese Simplified) (#95)
[ci skip] New translations from Crowdin
2022-03-20 16:56:52 +08:00
乌堆小透明
7ad1bcb763 New translations strings.xml (Chinese Simplified) (#94)
[ci skip] New translations from Crowdin
2022-03-20 16:53:26 +08:00
乌堆小透明
1aee169089 New Crowdin updates (#93)
* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2022-03-20 16:49:46 +08:00
乌堆小透明
8eb42fdf38 update strings.xml 2022-03-20 16:44:47 +08:00
乌堆小透明
fddf3ffb76 update strings.xml 2022-03-20 16:44:11 +08:00
乌堆小透明
6e4e8ed97b Merge remote-tracking branch 'origin/main' 2022-03-20 16:40:45 +08:00
乌堆小透明
e5e64821a8 新增双排网速 2022-03-20 16:40:35 +08:00
乌堆小透明
8ab8330c94 New Crowdin updates (#91) 2022-03-20 15:08:40 +08:00
乌堆小透明
7c8f061c30 双排时钟最大大小提升至9 2022-03-20 14:09:08 +08:00
乌堆小透明
406b1a740b New Crowdin updates (#90)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin
2022-03-18 18:57:36 +08:00
乌堆小透明
54e3b0ab29 Merge remote-tracking branch 'origin/main' 2022-03-18 18:57:03 +08:00
乌堆小透明
5fcb39bb58 重命名旧版快速设置自定义 2022-03-18 18:56:51 +08:00
乌堆小透明
bc9469a9b6 New Crowdin updates (#89)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin
2022-03-18 18:10:57 +08:00
乌堆小透明
61b24111f1 Update version to 1.4.8 2022-03-18 18:07:42 +08:00
乌堆小透明
a87bf7318b update strings.xml 2022-03-18 18:03:42 +08:00
乌堆小透明
9bd6aee5e9 新增旧版快速开关排列 2022-03-18 17:45:55 +08:00
乌堆小透明
dfa47653f0 修复22.3.14之后解除截屏裁切限制失效的问题 2022-03-18 00:54:32 +08:00
乌堆小透明
92b345af77 Update version to 1.4.7 2022-03-17 19:35:12 +08:00
乌堆小透明
dfd1c660f5 新增状态栏DT2S 2022-03-17 19:34:29 +08:00
乌堆小透明
d431798808 update blockmiui 2022-03-17 18:41:23 +08:00
乌堆小透明
ff95c6d782 Merge remote-tracking branch 'origin/main' 2022-03-17 18:37:01 +08:00
乌堆小透明
2f23263333 新增第三方锁屏下DT2S 2022-03-17 18:36:50 +08:00
乌堆小透明
788e46cb39 New Crowdin updates (#86)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-03-17 01:43:54 +08:00
乌堆小透明
fcfd29a86b Update version to 1.4.6 2022-03-16 17:26:28 +08:00
乌堆小透明
3d4720fc42 New Crowdin updates (#85)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2022-03-16 17:15:00 +08:00
乌堆小透明
2f26cedb2b update strings.xml 2022-03-16 17:06:21 +08:00
乌堆小透明
6f30dcdac5 New Crowdin updates (#83)
* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2022-03-16 16:57:41 +08:00
乌堆小透明
8488332cec update strings.xml 2022-03-16 16:52:52 +08:00
乌堆小透明
157e087c99 update strings.xml 2022-03-16 16:28:40 +08:00
乌堆小透明
ffdf296357 修复其他页面无重启菜单的问题 2022-03-16 16:24:39 +08:00
乌堆小透明
987f33b584 新增桌面双击锁屏 2022-03-16 16:18:38 +08:00
乌堆小透明
7cc2819307 Merge remote-tracking branch 'origin/main' 2022-03-16 15:59:52 +08:00
乌堆小透明
a6df8ff014 Update README.md 2022-03-16 15:59:41 +08:00
乌堆小透明
8c13c702e9 New translations strings.xml (Spanish) (#80)
[ci skip] New translations from Crowdin
2022-03-16 00:28:29 +08:00
uaevuon
fcf57c3796 Refine english strings.xml (#81)
* Update strings.xml

* Update strings.xml
2022-03-16 00:28:10 +08:00
乌堆小透明
830397a590 修复下拉天气版本识别问题 2022-03-15 21:36:11 +08:00
乌堆小透明
3fd32b4ec8 Update version to 1.4.5 2022-03-15 21:09:01 +08:00
乌堆小透明
7a5c39620b New Crowdin updates (#77)
* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin
2022-03-15 21:08:22 +08:00
乌堆小透明
05493d35d4 修复22.3.12后下拉天气显示异常 2022-03-15 21:02:49 +08:00
乌堆小透明
2f1930f704 update blockmiui 2022-03-15 17:45:40 +08:00
乌堆小透明
1e6eb58dab 新增隐藏状态栏图标独立页面 2022-03-15 17:34:54 +08:00
乌堆小透明
11908a7381 Update version to 1.4.4 2022-03-15 01:07:12 +08:00
乌堆小透明
117acc99f7 New Crowdin updates (#75)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin
2022-03-15 01:05:47 +08:00
Ketal
e3909c5996 Update android.yml (#76)
* Update android.yml

* Update android.yml

Co-authored-by: 乌堆小透明 <lturtle2333@outlook.com>
2022-03-15 01:05:33 +08:00
乌堆小透明
da80efc8ba 重构隐藏图标功能 2022-03-15 00:58:36 +08:00
乌堆小透明
fabbd19929 New Crowdin updates (#74)
* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin
2022-03-14 17:50:55 +08:00
乌堆小透明
e608c504fe 新增去除打开应用弹窗 2022-03-14 17:31:35 +08:00
乌堆小透明
b483ce52c8 New Crowdin updates (#73) 2022-03-14 16:06:43 +08:00
乌堆小透明
2421b5d285 Update version to 1.4.3 2022-03-14 01:55:26 +08:00
乌堆小透明
63e360cc62 修复锁屏电流开关key错误 2022-03-14 01:54:31 +08:00
乌堆小透明
d4d6605c7b New Crowdin updates (#72)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-03-14 01:53:53 +08:00
乌堆小透明
dc7e45e4ad 优化锁屏电流显示 2022-03-14 01:48:02 +08:00
乌堆小透明
df72a5f363 New Crowdin updates (#71)
* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2022-03-14 00:57:54 +08:00
乌堆小透明
cd0aaef385 优化锁屏电流显示 2022-03-14 00:43:00 +08:00
乌堆小透明
b71fa8a15e 删除冗余文件 2022-03-14 00:39:56 +08:00
乌堆小透明
323cb2bffa New Crowdin updates (#70)
* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2022-03-13 23:10:48 +08:00
YuKongA
029ad43508 锁屏电流:改为充电时显示电池温度 (#69)
* Feature: 锁屏电流信息展示

* 锁屏电流:改为充电时显示电池温度

* Update strings.xml

* 充满后不再显示电流
2022-03-13 22:53:50 +08:00
乌堆小透明
8c6deb16cf New Crowdin updates (#67)
* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Dutch)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Portuguese, Brazilian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Ukrainian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Swedish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Serbian (Cyrillic))
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Polish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Norwegian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Korean)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Italian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hungarian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Hebrew)
[ci skip] New translations from Crowdin

* New translations strings.xml (Finnish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Greek)
[ci skip] New translations from Crowdin

* New translations strings.xml (German)
[ci skip] New translations from Crowdin

* New translations strings.xml (Danish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Czech)
[ci skip] New translations from Crowdin

* New translations strings.xml (Catalan)
[ci skip] New translations from Crowdin

* New translations strings.xml (Arabic)
[ci skip] New translations from Crowdin

* New translations strings.xml (Afrikaans)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional, Hong Kong)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2022-03-13 21:40:59 +08:00
乌堆小透明
93bdeaba0b New Crowdin updates (#64)
* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin
2022-03-13 20:51:59 +08:00
YuKongA
d2ff9d61e7 Feature: 锁屏电流信息展示 (#65) 2022-03-13 20:50:07 +08:00
乌堆小透明
780db8dfa5 Update version to 1.4.2 2022-03-13 17:45:17 +08:00
乌堆小透明
dcc26b0e43 Merge remote-tracking branch 'origin/main' 2022-03-13 17:41:36 +08:00
乌堆小透明
eaaa802054 修复旧版通知面板天气不显示 2022-03-13 17:41:26 +08:00
乌堆小透明
99f47443eb New Crowdin updates (#63)
* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2022-03-13 17:29:24 +08:00
乌堆小透明
0433cbe5ab New Crowdin updates (#62)
* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Japanese)
[ci skip] New translations from Crowdin

* New translations strings.xml (French)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Romanian)
[ci skip] New translations from Crowdin

* New translations strings.xml (Indonesian)
[ci skip] New translations from Crowdin
2022-03-13 16:10:54 +08:00
127 changed files with 5480 additions and 5316 deletions

View File

@@ -13,10 +13,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 11
with:
submodules: 'recursive'
- name: set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'
cache: gradle
- uses: actions/cache@v2
@@ -32,24 +34,9 @@ jobs:
path: |
~/.gradle/caches/build-cache-*
key: gradle-builds-${{ github.sha }}
- name: Init Submodule
run: |
git submodule init
git submodule update
- name: Build with Gradle
run: bash ./gradlew assemble
- name: Upload Release APK
uses: actions/upload-artifact@v2
with:
name: SimplicityTools_Release
path: "app/build/outputs/apk/release/*.apk"
- name: Upload Debug APK
uses: actions/upload-artifact@v2
with:
name: Simplicity Tools_Debug
path: "app/build/outputs/apk/debug/*.apk"
run: bash ./gradlew :app:packageDebug

View File

@@ -15,100 +15,12 @@
### 模块说明
仅支持MIUI13Android12其余版本可能无效,请不要安装使用。
目前处于开发初期阶段,功能较少,后续将逐步完善。
仅支持MIUI13Android12其余版本无法使用。
开发者:[酷安@乌堆小透明](http://www.coolapk.com/u/883441)
---
### 已实现功能
<details>
<summary>点击展开详情</summary>
- 状态栏
- 状态栏网速秒刷新
- 隐藏状态栏电量(%
- 隐藏状态栏网速(/s单位
- 解除通知图标个数上限
- 状态栏布局
- 时间居中
- 兼容模式
- 左边距自定义
- 右边距自定义
- 状态栏时钟格式
- 显示年份开关
- 显示月份开关
- 显示日期开关
- 显示星期开关
- 显示时辰开关
- 显示时段开关
- 显示秒数开关
- 隐藏间隔开关
- 双行显示开关
- 时钟大小自定义
- 双排时钟大小自定义
- 状态栏图标
- 隐藏电池图标开关
- 隐藏充电图标开关
- 隐藏GPS图标开关
- 隐藏蓝牙图标开关
- 隐藏蓝牙电量图标开关
- 隐藏小HD图标开关
- 隐藏大HD图标开关
- 隐藏HD无服务开关
- 隐藏SIM卡一图标开关
- 隐藏SIM卡二图标开关
- 隐藏无SIM卡图标开关
- 隐藏移动类型图标开关
- 隐藏移动箭头图标开关
- 隐藏WIFI图标开关
- 隐藏WIFI箭头开关
- 隐藏WIFI标准开关
- 隐藏WiFi辅助图标开关
- 隐藏WIFI热点图标开关
- 隐藏VPN图标开关
- 隐藏飞行模式图标开关
- 隐藏闹钟图标开关
- 隐藏耳机图标开关
- 隐藏声音、勿扰图标开关
- 隐藏网速分隔符
- 通知面板
- 显示天气开关
- 显示天气地区开关
- 控制中心
- 显示天气开关
- 显示天气地区开关
- 锁屏
- 移除锁屏侧边功能
- 移除锁屏相机功能
- 桌面
- 始终显示桌面时钟
- 系统框架
- 移除上层显示通知
- 允许截图(支持磁贴)
- 解除安装限制(支持降级、不同签名、无签名安装)
- 解除不支持小窗应用限制
- 性能
- 锁定当前刷新率上限(支持磁贴)
- 防止恢复电池优化白名单
- 手机管家
- 跳过5/10秒警告时间
- 锁定 100 分
- 去除游戏自动连招黑名单
- 相册编辑
- 解锁无限裁切图片/截图功能
- 系统更新
- 移除OTA验证
- 设置
- 显示通知重要程度
- 去广告
- 移除主题壁纸广告
</details>
---
### 模块截图
![截图](https://raw.githubusercontent.com/LittleTurtle2333/SimplicityTools/main/doc/cn.jpg)
@@ -128,10 +40,16 @@ Xposed仓库下载[点击此处下载最新发行版](https://github.com/Xpos
---
### 第三方开源引用
##### GNU General Public License v3.0
[qqlittleice/MiuiHome](https://github.com/qqlittleice/MiuiHome)
[yujincheng08/BiliRoaming](https://github.com/yujincheng08/BiliRoaming)
[Mikanoshi/CustoMIUIzer](https://code.highspec.ru/Mikanoshi/CustoMIUIzer)
##### GNU General Public License v2.0
[LSPosed/CorePatch](https://github.com/LSPosed/CorePatch)
##### GNU Lesser General Public License v2.1
[577fkj/blockmiui](https://github.com/577fkj/blockmiui)
##### Apache License 2.0
[KyuubiRan/EzXHelper](https://github.com/KyuubiRan/EzXHelper)
---

View File

@@ -15,95 +15,7 @@
### Description
Only MIUI13 (Android12) is supported. The rest of the versions may not be valid, please do not install and use.
It is in the early stage of development, with fewer functions, and will be improved gradually.
---
### Features
<details>
<summary>Click to expand details</summary>
- Status Bar
- Status bar web speed second refresh
- Hide status bar power (%)
- Hide status bar speed (/) unit
- Unlock the maximum number of notification icons
- Status bar layout
- Time centered
- Compatible mode
- Left margin customization
- Right margin customization
- Status bar clock format
- Show year switch
- Show month switch
- Show date switch
- Show day switch
- Show chinese twelve hour switch
- Display AM/PM switch
- Display seconds switch
- Hide space switch
- Double line display switch
- Clock size customization
- Double row clock size customization
- Status bar icons
- Hide battery icon switch
- Hide charging icon switch
- Hide GPS icon switch
- Hide Bluetooth icon switch
- Hide Bluetooth power icon switch
- Hide small HD icon switch
- Hide large HD icon switch
- Hide HD no service switch
- Hide SIM card one icon switch
- Hide SIM card two icon switch
- Hide SIM-less icon switch
- Hide mobile type icon switch
- Hide mobile arrow icon switch
- Hide WIFI icon switch
- Hide WIFI arrow switch
- Hide WIFI standard switch
- Hide WiFi auxiliary icon switch
- Hide WIFI hotspot icon switch
- Hide VPN icon switch
- Hide Airplane Mode icon switch
- Hide alarm clock icon switch
- Hide headset icon switch
- Hide sound, do not disturb icon switch
- Hide internet speed separator
- Notification panel
- Show weather switch
- Show weather area switch
- Control Center
- Show weather switch
- Show weather area switch
- Lock Screen
- Remove lock screen side function
- Remove lock screen camera function
- Home
- Always show desktop clock
- System Framework
- Remove upper display notifications
- Allow screenshots (tile support)
- CorePatch (support downgrade, different signature, unsigned installation)
- Unlock unsupported small windows applications
- Nature
- Lock current refresh rate cap (tile support)
- Prevent recovery of battery optimization whitelist
- Phone Manager
- Skip 5/10 seconds warning time
- Lock 100 points
- Remove game macro blacklist
- Album editing
- Unlock unlimited crop image/screenshot function
- System Update
- Remove OTA authentication
- Settings
- Show notification importance
- Remove Ads
- Remove theme manager ads
</details>
Only MIUI13 (Android12) is supported. The rest of the versions not be valid.
---
@@ -119,16 +31,22 @@ Xposed Repo[Click here to download the latest release](https://github.com/Xpo
---
### 改进翻译
### Participate in translation
[![Crowdin](https://badges.crowdin.net/simplicitytools/localized.svg)](https://crowdin.com/project/simplicitytools)[Click here to Crowdin](https://crowdin.com/project/simplicitytools)
---
## Third party open source references
##### GNU General Public License v3.0
[qqlittleice/MiuiHome](https://github.com/qqlittleice/MiuiHome)
[yujincheng08/BiliRoaming](https://github.com/yujincheng08/BiliRoaming)
[Mikanoshi/CustoMIUIzer](https://code.highspec.ru/Mikanoshi/CustoMIUIzer)
##### GNU General Public License v2.0
[LSPosed/CorePatch](https://github.com/LSPosed/CorePatch)
##### GNU Lesser General Public License v2.1
[577fkj/blockmiui](https://github.com/577fkj/blockmiui)
[577fkj/blockmiui](https://github.com/577fkj/blockmiui)
##### Apache License 2.0
[KyuubiRan/EzXHelper](https://github.com/KyuubiRan/EzXHelper)
---

View File

@@ -12,8 +12,8 @@ android {
applicationId = "com.lt2333.simplicitytools"
minSdk = 31
targetSdk = 32
versionCode = 42
versionName = "1.4.1"
versionCode = 60
versionName = "1.5.9"
}
buildTypes {

View File

@@ -23,6 +23,12 @@
public void *(de.robv.android.xposed.callbacks.XC_LoadPackage$LoadPackageParam);
}
-keep class * implements de.robv.android.xposed.IXposedHookZygoteInit {
public void *(de.robv.android.xposed.IXposedHookZygoteInit$StartupParam);
}
-keep class * extends com.lt2333.simplicitytools.util.xposed.EasyXposedInit
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
public static void check*(...);
public static void throw*(...);

View File

@@ -1 +1 @@
com.lt2333.simplicitytools.hook.MainHook
com.lt2333.simplicitytools.hook.XposedEntry

View File

@@ -1,38 +0,0 @@
package com.lt2333.simplicitytools.hook
import com.github.kyuubiran.ezxhelper.init.EzXHelperInit
import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.hook.app.*
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XSharedPreferences
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
class MainHook : IXposedHookLoadPackage {
private var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
override fun handleLoadPackage(lpparam: LoadPackageParam) {
if (prefs.getBoolean("main_switch", true)) {
EzXHelperInit.initHandleLoadPackage(lpparam)
EzXHelperInit.setEzClassLoader(lpparam.classLoader)
when (lpparam.packageName) {
//Android
"android" -> Android().handleLoadPackage(lpparam)
//系统界面
"com.android.systemui" -> SystemUI().handleLoadPackage(lpparam)
//电量与性能
"com.miui.powerkeeper" -> PowerKeeper().handleLoadPackage(lpparam)
//桌面
"com.miui.home" -> MiuiHome().handleLoadPackage(lpparam)
//手机管家
"com.miui.securitycenter" -> SecurityCenter().handleLoadPackage(lpparam)
//相册编辑
"com.miui.mediaeditor" -> MediaEditor().handleLoadPackage(lpparam)
//系统更新
"com.android.updater" -> Updater().handleLoadPackage(lpparam)
//设置
"com.android.settings" -> Settings().handleLoadPackage(lpparam)
//主题壁纸
"com.android.thememanager" -> ThemeManager().handleLoadPackage(lpparam)
}
}
}
}

View File

@@ -0,0 +1,41 @@
package com.lt2333.simplicitytools.hook
import com.lt2333.simplicitytools.BuildConfig
import com.lt2333.simplicitytools.hook.app.*
import com.lt2333.simplicitytools.hook.app.android.corepatch.CorePatch
import com.lt2333.simplicitytools.util.xposed.EasyXposedInit
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.IXposedHookZygoteInit
import de.robv.android.xposed.XSharedPreferences
import de.robv.android.xposed.callbacks.XC_LoadPackage
class XposedEntry : EasyXposedInit() {
private var prefs = XSharedPreferences(BuildConfig.APPLICATION_ID, "config")
override val registeredApp: List<AppRegister> = listOf(
Android, // Android
SystemUI, // 系统界面
PowerKeeper, // 电量与性能
MiuiHome, // 桌面
SecurityCenter, // 手机管家
MediaEditor, // 相册编辑
Updater, // 系统更新
Settings, // 设置
ThemeManager, // 主题壁纸
ScreenShot, // 截屏
Cast, //投屏
RearDisplay, //背屏
)
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {
if (prefs.getBoolean("main_switch", true)) {
super.handleLoadPackage(lpparam)
}
}
override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam?) {
super.initZygote(startupParam)
CorePatch().initZygote(startupParam)
}
}

View File

@@ -5,22 +5,26 @@ import com.lt2333.simplicitytools.hook.app.android.DisableFlagSecure
import com.lt2333.simplicitytools.hook.app.android.MaxWallpaperScale
import com.lt2333.simplicitytools.hook.app.android.RemoveSmallWindowRestrictions
import com.lt2333.simplicitytools.hook.app.android.corepatch.CorePatch
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
class Android : IXposedHookLoadPackage {
object Android: AppRegister() {
override val packageName: String = "android"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//核心破解
CorePatch().handleLoadPackage(lpparam)
//允许截图
DisableFlagSecure().handleLoadPackage(lpparam)
//上层显示
DeleteOnPostNotification().handleLoadPackage(lpparam)
//解除小窗限制
RemoveSmallWindowRestrictions().handleLoadPackage(lpparam)
//壁纸缩放比例
MaxWallpaperScale().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
DisableFlagSecure, //允许截图
DeleteOnPostNotification, //上层显示
RemoveSmallWindowRestrictions, //解除小窗限制
MaxWallpaperScale, //壁纸缩放比例
)
}
}

View File

@@ -0,0 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.cast.ForceSupportSendApp
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
object Cast: AppRegister() {
override val packageName: String = "com.milink.service"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
autoInitHooks(lpparam,
ForceSupportSendApp, //强制允许所有应用接力
)
}
}

View File

@@ -1,14 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.mediaeditor.UnlockUnlimitedCropping
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import de.robv.android.xposed.callbacks.XC_LoadPackage
class MediaEditor : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
object MediaEditor: AppRegister() {
override val packageName: String = "com.miui.mediaeditor"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//解锁裁切最小值
UnlockUnlimitedCropping().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
UnlockUnlimitedCropping, //解锁裁切最小值
)
}
}

View File

@@ -1,14 +1,21 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.miuihome.AlwaysDisplayTime
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.hook.app.miuihome.DoubleTapToSleep
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import de.robv.android.xposed.callbacks.XC_LoadPackage
class MiuiHome : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
object MiuiHome: AppRegister() {
override val packageName: String = "com.miui.home"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//时钟显示时钟
AlwaysDisplayTime().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
AlwaysDisplayTime, //时钟显示时钟
DoubleTapToSleep, //双击锁屏
)
}
}

View File

@@ -2,18 +2,20 @@ package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.powerkeeper.LockMaxFps
import com.lt2333.simplicitytools.hook.app.powerkeeper.PreventRecoveryOfBatteryOptimizationWhitelist
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import de.robv.android.xposed.callbacks.XC_LoadPackage
class PowerKeeper : IXposedHookLoadPackage {
object PowerKeeper: AppRegister() {
override val packageName: String = "com.miui.powerkeeper"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: LoadPackageParam) {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//锁定最高刷新率
LockMaxFps().handleLoadPackage(lpparam)
//防止恢复电池优化白名单
PreventRecoveryOfBatteryOptimizationWhitelist().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
LockMaxFps, //锁定最高刷新率
PreventRecoveryOfBatteryOptimizationWhitelist, //防止恢复电池优化白名单
)
}
}

View File

@@ -0,0 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.cast.RearDisplayWeather
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
object RearDisplay: AppRegister() {
override val packageName: String = "com.xiaomi.misubscreenui"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
autoInitHooks(lpparam,
RearDisplayWeather, //背屏显示天气
)
}
}

View File

@@ -0,0 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.screenshot.UnlockUnlimitedCropping
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
object ScreenShot: AppRegister() {
override val packageName: String = "com.miui.screenshot"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook " + javaClass.simpleName)
autoInitHooks(lpparam,
UnlockUnlimitedCropping, //锁定最高刷新率
)
}
}

View File

@@ -1,24 +1,23 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.securitycenter.LockOneHundred
import com.lt2333.simplicitytools.hook.app.securitycenter.RemoveMacroBlacklist
import com.lt2333.simplicitytools.hook.app.securitycenter.ShowBatteryTemperature
import com.lt2333.simplicitytools.hook.app.securitycenter.SkipWaitingTime
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.hook.app.securitycenter.*
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import de.robv.android.xposed.callbacks.XC_LoadPackage
class SecurityCenter : IXposedHookLoadPackage {
object SecurityCenter: AppRegister() {
override val packageName: String = "com.miui.securitycenter"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//跳过 5/10秒等待时间
SkipWaitingTime().handleLoadPackage(lpparam)
//锁定 100分
LockOneHundred().handleLoadPackage(lpparam)
//去除自动连招黑名单
RemoveMacroBlacklist().handleLoadPackage(lpparam)
//显示电池温度
ShowBatteryTemperature().handleLoadPackage(lpparam)
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook " + javaClass.simpleName)
autoInitHooks(lpparam,
SkipWaitingTime, //跳过 5/10秒等待时间
LockOneHundred, //锁定 100分
RemoveMacroBlacklist, //去除自动连招黑名单
ShowBatteryTemperature, //显示电池温度
RemoveOpenAppConfirmationPopup, //去除打开应用弹窗
)
}
}

View File

@@ -1,13 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.settings.ShowNotificationImportance
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage
class Settings: IXposedHookLoadPackage {
object Settings: AppRegister() {
override val packageName: String = "com.android.settings"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
ShowNotificationImportance().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
ShowNotificationImportance, //显示通知重要程度
)
}
}

View File

@@ -1,75 +1,47 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.systemui.*
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import de.robv.android.xposed.callbacks.XC_LoadPackage
class SystemUI : IXposedHookLoadPackage {
object SystemUI: AppRegister() {
override val packageName: String = "com.android.systemui"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: LoadPackageParam) {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//隐藏飞行模式图标
HideAirplaneIcon().handleLoadPackage(lpparam)
//隐藏闹钟图标
HideAlarmIcon().handleLoadPackage(lpparam)
//隐藏电池
HideBatteryIcon().handleLoadPackage(lpparam)
//隐藏蓝牙电量
HideBluetoothHandsfreeBatteryIcon().handleLoadPackage(lpparam)
//隐藏蓝牙图标
HideBluetoothIcon().handleLoadPackage(lpparam)
//隐藏GPS图标
HideGPSIcon().handleLoadPackage(lpparam)
//隐藏HD图标
HideHDIcon().handleLoadPackage(lpparam)
//隐藏耳机图标
HideHeadsetIcon().handleLoadPackage(lpparam)
//隐藏热点图标
HideHotspotIcon().handleLoadPackage(lpparam)
//隐藏无SIM卡图标
HideNoSimIcon().handleLoadPackage(lpparam)
//隐藏SIM卡图标
HideSimIcon().handleLoadPackage(lpparam)
//隐藏移动箭头图标
HideMobileActivityIcon().handleLoadPackage(lpparam)
//隐藏移动类型图标
HideMobileTypeIcon().handleLoadPackage(lpparam)
//隐藏辅助WIFI图标
HideSlaveWifiIcon().handleLoadPackage(lpparam)
//隐藏状态栏网速/s
HideStatusBarNetworkSpeedSecond().handleLoadPackage(lpparam)
//隐藏音量勿扰图标
HideVolumeZenIcon().handleLoadPackage(lpparam)
//隐藏VPN图标
HideVpnIcon().handleLoadPackage(lpparam)
//隐藏WIFI图标
HideWifiIcon().handleLoadPackage(lpparam)
//隐藏WIFI活动箭头图标
HideWifiActivityIcon().handleLoadPackage(lpparam)
//移除通知图标上限
RemoveTheMaximumNumberOfNotificationIcons().handleLoadPackage(lpparam)
//状态栏网速秒刷新
StatusBarNetworkSpeedRefreshSpeed().handleLoadPackage(lpparam)
//状态栏时钟自定义
StatusBarTimeCustomization().handleLoadPackage(lpparam)
//移除锁屏负一屏功能
RemoveTheLeftSideOfTheLockScreen().handleLoadPackage(lpparam)
//移除锁屏相机功能
RemoveLockScreenCamera().handleLoadPackage(lpparam)
//通知面板天气
NotificationWeather().handleLoadPackage(lpparam)
OldNotificationWeather().handleLoadPackage(lpparam)
//控制中心天气
ControlCenterWeather().handleLoadPackage(lpparam)
//TODO状态栏电流
//StatusBarCurrent().handleLoadPackage(lpparam)
//状态栏布局
StatusBarLayout().handleLoadPackage(lpparam)
//隐藏时钟与实时网速之间的分隔符
HideNetworkSpeedSplitter().handleLoadPackage(lpparam)
//Alpha充电动画
WaveCharge().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
HideStatusBarIcon, //隐藏状态栏图标
HideBatteryIcon, //隐藏电池
HideHDIcon, //隐藏HD图标
HideSimIcon, //隐藏SIM卡图标
HideMobileActivityIcon, //隐藏移动箭头图标
HideMobileTypeIcon, //隐藏移动类型图标
HideStatusBarNetworkSpeedSecond, //隐藏状态栏网速/s
HideWifiActivityIcon, //隐藏WIFI活动箭头图标
MaximumNumberOfNotificationIcons, //通知图标上限
StatusBarNetworkSpeedRefreshSpeed, //状态栏网速秒刷新
StatusBarTimeCustomization, //状态栏时钟自定义
RemoveTheLeftSideOfTheLockScreen, //移除锁屏负一屏功能
RemoveLockScreenCamera, //移除锁屏相机功能
NotificationWeather, //通知面板天气
OldNotificationWeather,
ControlCenterWeather, //控制中心天气
//StatusBarCurrent, //TODO状态栏电流
StatusBarLayout, //状态栏布局
HideNetworkSpeedSplitter, //隐藏时钟与实时网速之间的分隔符
WaveCharge, //Alpha充电动画
LockScreenCurrent, //锁屏电流
LockScreenDoubleTapToSleep, //锁屏下双击锁屏
StatusBarDoubleTapToSleep, //双击状态栏锁屏
OldQSCustom, //旧版快速设置自定义
DoubleLineNetworkSpeed, //双排网速
StatusBarBigMobileTypeIcon, //大移动类型
BatteryPercentage, //电量百分比
CustomMobileTypeText, //自定义移动类型文本
LockScreenClockDisplaySeconds, // 锁屏时钟显示秒
)
}
}
}

View File

@@ -1,14 +1,19 @@
package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.thememanager.RemoveAds
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
import de.robv.android.xposed.callbacks.XC_LoadPackage
class ThemeManager : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: LoadPackageParam) {
object ThemeManager: AppRegister() {
override val packageName: String = "com.android.thememanager"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//移除主题壁纸的广告
RemoveAds().handleLoadPackage(lpparam)
autoInitHooks(lpparam,
RemoveAds, //移除主题壁纸的广告
)
}
}

View File

@@ -2,11 +2,15 @@ package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class Updater : IXposedHookLoadPackage {
object Updater: AppRegister() {
override val packageName: String = "com.android.updater"
override val processName: List<String> = emptyList()
override val logTag: String = "Simplicitytools"
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (XSPUtils.getBoolean("remove_ota_validate", false)) {
var letter = 'a'

View File

@@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.android
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class DeleteOnPostNotification : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.server.wm.AlertWindowNotification".hookBeforeMethod(lpparam.classLoader, "onPostNotification") {
object DeleteOnPostNotification : HookRegister() {
override fun init() {
"com.android.server.wm.AlertWindowNotification".hookBeforeMethod(getDefaultClassLoader(), "onPostNotification") {
hasEnable("delete_on_post_notification") {
it.result = null
}
}
}
}

View File

@@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.android
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class DisableFlagSecure : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.server.wm.WindowState".hookBeforeMethod(lpparam.classLoader, "isSecureLocked") {
object DisableFlagSecure : HookRegister() {
override fun init() {
"com.android.server.wm.WindowState".hookBeforeMethod(getDefaultClassLoader(), "isSecureLocked") {
hasEnable("disable_flag_secure") {
it.result = false
}
}
}
}

View File

@@ -1,24 +1,17 @@
package com.lt2333.simplicitytools.hook.app.android
import android.app.Service
import android.icu.text.DisplayContext
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.setFloatField
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class MaxWallpaperScale : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.server.wm.WallpaperController".hookAfterMethod(lpparam.classLoader, "WallpaperController", Service::class.java, DisplayContext::class.java
) {
val value = XSPUtils.getFloat("max_wallpaper_scale", 1.1f)
it.thisObject.setFloatField("mMaxWallpaperScale", value)
}
"com.android.server.wm.WallpaperController".hookBeforeMethod(lpparam.classLoader, "zoomOutToScale", Float::class.java) {
object MaxWallpaperScale : HookRegister() {
override fun init() {
"com.android.server.wm.WallpaperController".hookBeforeMethod(getDefaultClassLoader(), "zoomOutToScale", Float::class.java) {
val value = XSPUtils.getFloat("max_wallpaper_scale", 1.1f)
it.thisObject.setFloatField("mMaxWallpaperScale", value)
}
}
}

View File

@@ -4,36 +4,35 @@ import android.content.Context
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class RemoveSmallWindowRestrictions : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object RemoveSmallWindowRestrictions : HookRegister() {
override fun init() {
// 强制所有活动设为可以调整大小
"com.android.server.wm.Task".hookBeforeMethod(lpparam.classLoader, "isResizeable") {
"com.android.server.wm.Task".hookBeforeMethod(getDefaultClassLoader(), "isResizeable") {
hasEnable("remove_small_window_restrictions") {
it.result = true
}
}
"android.util.MiuiMultiWindowAdapter".hookAfterMethod(lpparam.classLoader, "getFreeformBlackList") {
"android.util.MiuiMultiWindowAdapter".hookAfterMethod(getDefaultClassLoader(), "getFreeformBlackList") {
hasEnable("remove_small_window_restrictions") {
it.result = (it.result as MutableList<*>).apply { clear() }
}
}
"android.util.MiuiMultiWindowAdapter".hookAfterMethod(lpparam.classLoader, "getFreeformBlackListFromCloud", Context::class.java) {
"android.util.MiuiMultiWindowAdapter".hookAfterMethod(getDefaultClassLoader(), "getFreeformBlackListFromCloud", Context::class.java) {
hasEnable("remove_small_window_restrictions") {
it.result = (it.result as MutableList<*>).apply { clear() }
}
}
"android.util.MiuiMultiWindowUtils".hookAfterMethod(lpparam.classLoader, "supportFreeform") {
"android.util.MiuiMultiWindowUtils".hookAfterMethod(getDefaultClassLoader(), "supportFreeform") {
hasEnable("remove_small_window_restrictions") {
it.result = true
}
}
}
}

View File

@@ -5,7 +5,10 @@
package com.lt2333.simplicitytools.hook.app.android.corepatch;
import android.app.AndroidAppHelper;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import com.lt2333.simplicitytools.BuildConfig;
@@ -14,18 +17,22 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.IXposedHookZygoteInit;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
public class CorePatch extends XposedHelper implements IXposedHookLoadPackage, IXposedHookZygoteInit {
XSharedPreferences prefs = new XSharedPreferences(BuildConfig.APPLICATION_ID, "config");
String TAG = "ST-CorePatch";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws IllegalAccessException, InvocationTargetException, InstantiationException {
@@ -35,27 +42,37 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
"checkDowngrade",
"com.android.server.pm.parsing.pkg.AndroidPackage",
"android.content.pm.PackageInfoLite",
new ReturnConstant(prefs, "corepatch", null));
new ReturnConstant(prefs, "downgrade", null));
// exists on flyme 9(Android 11) only
findAndHookMethod("com.android.server.pm.PackageManagerService", loadPackageParam.classLoader,
"checkDowngrade",
"android.content.pm.PackageInfoLite",
"android.content.pm.PackageInfoLite",
new ReturnConstant(prefs, "downgrade", true));
// apk内文件修改后 digest校验会失败
hookAllMethods("android.util.jar.StrictJarVerifier", loadPackageParam.classLoader, "verifyMessageDigest",
new ReturnConstant(prefs, "corepatch", true));
new ReturnConstant(prefs, "authcreak", true));
hookAllMethods("android.util.jar.StrictJarVerifier", loadPackageParam.classLoader, "verify",
new ReturnConstant(prefs, "corepatch", true));
new ReturnConstant(prefs, "authcreak", true));
hookAllMethods("java.security.MessageDigest", loadPackageParam.classLoader, "isEqual",
new ReturnConstant(prefs, "corepatch", true));
new ReturnConstant(prefs, "authcreak", true));
// Targeting R+ (version " + Build.VERSION_CODES.R + " and above) requires"
// + " the resources.arsc of installed APKs to be stored uncompressed"
// + " and aligned on a 4-byte boundary
// target >=30 的情况下 resources.arsc 必须是未压缩的且4K对齐
hookAllMethods("android.content.res.AssetManager", loadPackageParam.classLoader, "containsAllocatedTable",
new ReturnConstant(prefs, "corepatch", false));
new ReturnConstant(prefs, "authcreak", false));
// No signature found in package of version " + minSignatureSchemeVersion
// + " or newer for package " + apkPath
findAndHookMethod("android.util.apk.ApkSignatureVerifier", loadPackageParam.classLoader, "getMinimumSignatureSchemeVersionForTargetSdk", int.class,
new ReturnConstant(prefs, "corepatch", 0));
new ReturnConstant(prefs, "authcreak", 0));
findAndHookMethod("com.android.apksig.ApkVerifier", loadPackageParam.classLoader, "getMinimumSignatureSchemeVersionForTargetSdk", int.class,
new ReturnConstant(prefs, "authcreak", 0));
// Package " + packageName + " signatures do not match previously installed version; ignoring!"
// public boolean checkCapability(String sha256String, @CertCapabilities int flags) {
@@ -66,7 +83,7 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
// Don't handle PERMISSION (grant SIGNATURE permissions to pkgs with this cert)
// Or applications will have all privileged permissions
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/content/pm/PackageParser.java;l=5947?q=CertCapabilities
if (prefs.getBoolean("corepatch", true)) {
if (prefs.getBoolean("authcreak", true)) {
if ((Integer) param.args[1] != 4) {
param.setResult(true);
}
@@ -91,20 +108,45 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
error.setAccessible(true);
Object[] signingDetailsArgs = new Object[2];
signingDetailsArgs[1] = 1;
hookAllMethods("android.util.jar.StrictJarVerifier", loadPackageParam.classLoader, "verifyBytes", new XC_MethodHook() {
public void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
if (prefs.getBoolean("digestCreak", true)) {
if(!prefs.getBoolean("UsePreSig", false)) {
final Object block = constructor.newInstance(param.args[0]);
Object[] infos = (Object[]) XposedHelpers.callMethod(block, "getSignerInfos");
Object info = infos[0];
List<X509Certificate> verifiedSignerCertChain = (List<X509Certificate>) XposedHelpers.callMethod(info, "getCertificateChain", block);
param.setResult(verifiedSignerCertChain.toArray(
new X509Certificate[0]));
}
}
}
});
hookAllMethods("android.util.apk.ApkSignatureVerifier", loadPackageParam.classLoader, "verifyV1Signature", new XC_MethodHook() {
public void afterHookedMethod(MethodHookParam methodHookParam) throws Throwable {
super.afterHookedMethod(methodHookParam);
if (prefs.getBoolean("corepatch", true)) {
if (prefs.getBoolean("authcreak", true)) {
Throwable throwable = methodHookParam.getThrowable();
if (throwable != null) {
Signature[] lastSigs = null;
if (prefs.getBoolean("corepatch", true)) {
if(prefs.getBoolean("UsePreSig", false)) {
PackageManager PM = AndroidAppHelper.currentApplication().getPackageManager();
if(PM == null){
XposedBridge.log("E: " + BuildConfig.APPLICATION_ID + " Cannot get the Package Manager... Are you using MiUI?");
}else {
PackageInfo pI = PM.getPackageArchiveInfo((String) methodHookParam.args[0], 0);
PackageInfo InstpI = PM.getPackageInfo(pI.packageName, PackageManager.GET_SIGNATURES);
lastSigs = InstpI.signatures;
}
}else {
if(prefs.getBoolean("digestCreak", true)) {
final Object origJarFile = constructorExact.newInstance(methodHookParam.args[0], true, false);
final ZipEntry manifestEntry = (ZipEntry) XposedHelpers.callMethod(origJarFile, "findEntry", "AndroidManifest.xml");
final Certificate[][] lastCerts = (Certificate[][]) XposedHelpers.callStaticMethod(ASV, "loadCertificates", origJarFile, manifestEntry);
lastSigs = (Signature[]) XposedHelpers.callStaticMethod(ASV, "convertToSignatures", (Object) lastCerts);
}
}
if (lastSigs != null) {
signingDetailsArgs[0] = lastSigs;
} else {
@@ -117,7 +159,7 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
if (signingDetailsWithDigests != null) {
Constructor<?> signingDetailsWithDigestsConstructorExact = XposedHelpers.findConstructorExact(signingDetailsWithDigests, signingDetails, Map.class);
signingDetailsWithDigestsConstructorExact.setAccessible(true);
newInstance = signingDetailsWithDigestsConstructorExact.newInstance(newInstance, null);
newInstance = signingDetailsWithDigestsConstructorExact.newInstance(new Object[]{newInstance, null});
}
Throwable cause = throwable.getCause();
@@ -145,7 +187,7 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
// Don't handle PERMISSION (grant SIGNATURE permissions to pkgs with this cert)
// Or applications will have all privileged permissions
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/content/pm/PackageParser.java;l=5947?q=CertCapabilities
if (((Integer) param.args[1] != 4) && prefs.getBoolean("corepatch", true)) {
if (((Integer) param.args[1] != 4) && prefs.getBoolean("digestCreak", true)) {
param.setResult(true);
}
}
@@ -155,7 +197,7 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
if (prefs.getBoolean("corepatch", true)) {
if (prefs.getBoolean("digestCreak", true)) {
ApplicationInfo info = (ApplicationInfo) param.thisObject;
if ((info.flags & ApplicationInfo.FLAG_SYSTEM) != 0
|| (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
@@ -164,6 +206,36 @@ public class CorePatch extends XposedHelper implements IXposedHookLoadPackage {
}
}
});
if (prefs.getBoolean("digestCreak", true) && prefs.getBoolean("UsePreSig", false)) {
Class<?> pmClass = findClass("com.android.server.pm.PackageManagerService", loadPackageParam.classLoader);
Class<?> pPClass = findClass("com.android.server.pm.parsing.pkg.ParsedPackage", loadPackageParam.classLoader);
XposedHelpers.findAndHookMethod(pmClass, "doesSignatureMatchForPermissions", String.class, pPClass, int.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
//If we decide to crack this then at least make sure they are same apks, avoid another one that tries to impersonate.
if (param.getResult().equals(false)) {
String pPname = (String) XposedHelpers.callMethod(param.args[1], "getPackageName");
if (pPname.contentEquals((String) param.args[0])) {
param.setResult(true);
}
}
}
});
}
}
}
@Override
public void initZygote(StartupParam startupParam) {
hookAllMethods("android.content.pm.PackageParser", null, "getApkSigningVersion", XC_MethodReplacement.returnConstant(1));
hookAllConstructors("android.util.jar.StrictJarVerifier", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (prefs.getBoolean("enhancedMode", false)) {
super.beforeHookedMethod(param);
param.args[3] = Boolean.FALSE;
}
}
});
}
}

View File

@@ -18,7 +18,7 @@ public class ReturnConstant extends XC_MethodHook {
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
prefs.reload();
if (prefs.getBoolean(prefsKey, true)) {
if (prefs.getBoolean(prefsKey, false)) {
param.setResult(value);
}
}

View File

@@ -0,0 +1,20 @@
package com.lt2333.simplicitytools.hook.app.cast
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookMethod
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object ForceSupportSendApp : HookRegister() {
override fun init() {
hasEnable("force_support_send_app") {
findMethod("com.xiaomi.mirror.synergy.MiuiSynergySdk") {
name == "isSupportSendApp"
}.hookMethod {
after { param ->
param.result = true
}
}
}
}
}

View File

@@ -1,17 +1,17 @@
package com.lt2333.simplicitytools.hook.app.mediaeditor
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class UnlockUnlimitedCropping :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object UnlockUnlimitedCropping : HookRegister() {
override fun init() {
//解锁图库裁切最小值
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.core.imports.obsoletes.Crop\$ResizeDetector",
lpparam.classLoader
getDefaultClassLoader()
)
XposedHelpers.findAndHookMethod(
classIfExists,
@@ -26,7 +26,7 @@ class UnlockUnlimitedCropping :IXposedHookLoadPackage {
//截图无限裁切
val classIfExists2 = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.screen.crop.ScreenCropView\$ResizeDetector",
lpparam.classLoader
getDefaultClassLoader()
)
XposedHelpers.findAndHookMethod(
@@ -40,4 +40,5 @@ class UnlockUnlimitedCropping :IXposedHookLoadPackage {
}
})
}
}

View File

@@ -1,16 +1,16 @@
package com.lt2333.simplicitytools.hook.app.miuihome
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class AlwaysDisplayTime : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object AlwaysDisplayTime : HookRegister() {
override fun init() {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.home.launcher.Workspace",
lpparam.classLoader
getDefaultClassLoader()
)
XposedHelpers.findAndHookMethod(
classIfExists,
@@ -23,4 +23,5 @@ class AlwaysDisplayTime : IXposedHookLoadPackage {
}
})
}
}

View File

@@ -0,0 +1,51 @@
package com.yuk.miuihome.module
import android.content.Context
import android.os.SystemClock
import android.view.MotionEvent
import android.view.ViewConfiguration
import kotlin.math.abs
class DoubleTapController internal constructor(mContext: Context) {
private val maxDuration: Long = 500
private var mActionDownRawX: Float = 0f
private var mActionDownRawY: Float = 0f
private var mClickCount: Int = 0
private var mFirstClickRawX: Float = 0f
private var mFirstClickRawY: Float = 0f
private var mLastClickTime: Long = 0
private val mTouchSlop: Int = ViewConfiguration.get(mContext).scaledTouchSlop * 2
fun isDoubleTapEvent(motionEvent: MotionEvent): Boolean {
val action = motionEvent.actionMasked
return when {
action == MotionEvent.ACTION_DOWN -> {
mActionDownRawX = motionEvent.rawX
mActionDownRawY = motionEvent.rawY
false
}
action != MotionEvent.ACTION_UP -> false
else -> {
val rawX = motionEvent.rawX
val rawY = motionEvent.rawY
if (abs(rawX - mActionDownRawX) <= mTouchSlop.toFloat() && abs(rawY - mActionDownRawY) <= mTouchSlop.toFloat()) {
if (SystemClock.elapsedRealtime() - mLastClickTime > maxDuration || rawY - mFirstClickRawY > mTouchSlop.toFloat() || rawX - mFirstClickRawX > mTouchSlop.toFloat()) mClickCount =
0
mClickCount++
if (mClickCount == 1) {
mFirstClickRawX = rawX
mFirstClickRawY = rawY
mLastClickTime = SystemClock.elapsedRealtime()
return false
} else if (abs(rawY - mFirstClickRawY) <= mTouchSlop.toFloat() && abs(rawX - mFirstClickRawX) <= mTouchSlop.toFloat() && SystemClock.elapsedRealtime() - mLastClickTime <= maxDuration
) {
mClickCount = 0
return true
}
}
mClickCount = 0
false
}
}
}
}

View File

@@ -0,0 +1,54 @@
package com.lt2333.simplicitytools.hook.app.miuihome
import android.content.Context
import android.content.Intent
import android.view.MotionEvent
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.yuk.miuihome.module.DoubleTapController
import de.robv.android.xposed.XposedHelpers
object DoubleTapToSleep : HookRegister() {
override fun init() {
hasEnable("double_tap_to_sleep") {
"com.miui.home.launcher.Workspace".findClass(getDefaultClassLoader())
.hookAfterAllConstructors {
var mDoubleTapControllerEx =
XposedHelpers.getAdditionalInstanceField(
it.thisObject,
"mDoubleTapControllerEx"
)
if (mDoubleTapControllerEx != null) return@hookAfterAllConstructors
mDoubleTapControllerEx = DoubleTapController((it.args[0] as Context))
XposedHelpers.setAdditionalInstanceField(
it.thisObject,
"mDoubleTapControllerEx",
mDoubleTapControllerEx
)
}
"com.miui.home.launcher.Workspace".findClass(getDefaultClassLoader()).hookBeforeMethod(
"dispatchTouchEvent", MotionEvent::class.java
) {
val mDoubleTapControllerEx = XposedHelpers.getAdditionalInstanceField(
it.thisObject,
"mDoubleTapControllerEx"
) as DoubleTapController
if (!mDoubleTapControllerEx.isDoubleTapEvent(it.args[0] as MotionEvent)) return@hookBeforeMethod
val mCurrentScreenIndex = it.thisObject.getIntField("mCurrentScreenIndex")
val cellLayout = it.thisObject.callMethod("getCellLayout", mCurrentScreenIndex)
if (cellLayout != null) if (cellLayout.callMethod("lastDownOnOccupiedCell") as Boolean) return@hookBeforeMethod
if (it.thisObject.callMethod("isInNormalEditingMode") as Boolean) return@hookBeforeMethod
val context = it.thisObject.callMethod("getContext") as Context
context.sendBroadcast(
Intent("com.miui.app.ExtraStatusBarManager.action_TRIGGER_TOGGLE").putExtra(
"com.miui.app.ExtraStatusBarManager.extra_TOGGLE_ID",
10
)
)
}
}
}
}

View File

@@ -1,16 +1,16 @@
package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class LockMaxFps : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object LockMaxFps : HookRegister() {
override fun init() {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.powerkeeper.statemachine.DisplayFrameSetting",
lpparam.classLoader
getDefaultClassLoader()
)
XposedHelpers.findAndHookMethod(
classIfExists,
@@ -25,4 +25,5 @@ class LockMaxFps : IXposedHookLoadPackage {
}
})
}
}

View File

@@ -1,16 +1,16 @@
package com.lt2333.simplicitytools.hook.app.powerkeeper
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class PreventRecoveryOfBatteryOptimizationWhitelist : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object PreventRecoveryOfBatteryOptimizationWhitelist : HookRegister() {
override fun init() {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.powerkeeper.statemachine.ForceDozeController",
lpparam.classLoader
getDefaultClassLoader()
)
XposedHelpers.findAndHookMethod(
classIfExists,
@@ -28,4 +28,5 @@ class PreventRecoveryOfBatteryOptimizationWhitelist : IXposedHookLoadPackage {
}
})
}
}

View File

@@ -0,0 +1,131 @@
package com.lt2333.simplicitytools.hook.app.cast
import android.annotation.SuppressLint
import android.graphics.Typeface
import android.util.TypedValue
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.RelativeLayout
import android.widget.TextView
import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookMethod
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.view.WeatherView
object RearDisplayWeather : HookRegister() {
@SuppressLint("ResourceType")
override fun init() {
hasEnable("rear_show_weather") {
findMethod("com.xiaomi.misubscreenui.light.aod.view.VerticalClockView") {
name == "onFinishInflate"
}.hookMethod {
after {
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
//获取原组件
val gradientLayoutID =
context.resources.getIdentifier(
"gradient_layout",
"id",
context.packageName
)
val gradientLayout: ViewGroup = viewGroup.findViewById(gradientLayoutID)
val dateID =
context.resources.getIdentifier("date", "id", context.packageName)
val date: TextView = viewGroup.findViewById(dateID)
//创建天气组件
val mWeatherView = WeatherView(context, false).apply {
gravity = Gravity.END
setTextAppearance(
context.resources.getIdentifier(
"Sub_Screen_Aod_date_s",
"style",
context.packageName
)
)
typeface = Typeface.create("mipro-medium", Typeface.NORMAL)
setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12f)
}
gradientLayout.addView(mWeatherView, (gradientLayout.indexOfChild(date) + 1))
}
}
findMethod("com.xiaomi.misubscreenui.light.aod.view.HorizontalClockView") {
name == "onFinishInflate"
}.hookMethod {
before {
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
//获取原组件
val gradientLayoutID =
context.resources.getIdentifier(
"gradient_layout",
"id",
context.packageName
)
val gradientLayout: RelativeLayout = viewGroup.findViewById(gradientLayoutID)
val dateID =
context.resources.getIdentifier("date", "id", context.packageName)
val date: TextView = viewGroup.findViewById(dateID)
val dateParentLayout: ViewGroup = date.parent as ViewGroup
//创建天气组件
val mWeatherView = WeatherView(context, false).apply {
id = View.generateViewId()
gravity = Gravity.CENTER
maxLines = 1
setTextAppearance(
context.resources.getIdentifier(
"Sub_Screen_Aod_date_s_horizontal",
"style",
context.packageName
)
)
typeface = Typeface.create("mipro-medium", 0)
layoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, dp2px(context, 30f)
).also {
it.addRule(RelativeLayout.END_OF, dateID)
it.marginStart = dp2px(context, 3f)
it.marginEnd = dp2px(context, 3f)
}
}
dateParentLayout.addView(
mWeatherView,
(dateParentLayout.indexOfChild(date) + 1)
)
//电池位置
val batteryID =
context.resources.getIdentifier(
"battery_container",
"id",
context.packageName
)
val battery: ViewGroup = viewGroup.findViewById(batteryID)
battery.layoutParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, dp2px(context, 30f)
).also {
it.addRule(RelativeLayout.END_OF, mWeatherView.id)
}
gradientLayout.setPadding(0, dp2px(context,5f),0,0)
}
}
}
}
}

View File

@@ -0,0 +1,29 @@
package com.lt2333.simplicitytools.hook.app.screenshot
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
object UnlockUnlimitedCropping : HookRegister() {
override fun init() {
//截图无限裁切
val classIfExists2 = XposedHelpers.findClassIfExists(
"com.miui.gallery.editor.photo.screen.crop.ScreenCropView\$b",
getDefaultClassLoader()
)
XposedHelpers.findAndHookMethod(
classIfExists2,
"a",
object : XC_MethodHook() {
override fun beforeHookedMethod(param: MethodHookParam) {
if (XSPUtils.getBoolean("unlock_unlimited_cropping",false)) {
param.result = 0
}
}
})
}
}

View File

@@ -4,14 +4,13 @@ import android.view.View
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class LockOneHundred : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object LockOneHundred : HookRegister() {
override fun init() {
//防止点击重新检测
val mainContentFrameClass = "com.miui.securityscan.ui.main.MainContentFrame".findClass(lpparam.classLoader)
val mainContentFrameClass = "com.miui.securityscan.ui.main.MainContentFrame".findClass(getDefaultClassLoader())
mainContentFrameClass.hookBeforeMethod("onClick", View::class.java) {
if (XSPUtils.getBoolean("lock_one_hundred", false)) {
it.result = null
@@ -19,11 +18,12 @@ class LockOneHundred : IXposedHookLoadPackage {
}
//锁定100分
var scoreManagerClass = "com.miui.securityscan.scanner.ScoreManager".findClass(lpparam.classLoader)
val scoreManagerClass = "com.miui.securityscan.scanner.ScoreManager".findClass(getDefaultClassLoader())
scoreManagerClass.hookBeforeMethod("B") {
if (XSPUtils.getBoolean("lock_one_hundred", false)) {
it.result = 0
}
}
}
}

View File

@@ -1,18 +1,18 @@
package com.lt2333.simplicitytools.hook.app.securitycenter
import com.lt2333.simplicitytools.util.XSPUtils
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class RemoveMacroBlacklist : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object RemoveMacroBlacklist : HookRegister() {
override fun init() {
if (XSPUtils.getBoolean("remove_macro_blacklist", false)) {
var letter = 'a'
for (i in 0..25) {
val classIfExists = XposedHelpers.findClassIfExists(
"com.miui.gamebooster.v.$letter" + "0", lpparam.classLoader
"com.miui.gamebooster.v.$letter" + "0", getDefaultClassLoader()
) ?: continue
if (classIfExists.declaredMethods.size in 6..12 && classIfExists.fields.isEmpty() && classIfExists.declaredFields.size >= 2) {
XposedHelpers.findAndHookMethod(classIfExists, "c", String::class.java,
@@ -27,4 +27,5 @@ class RemoveMacroBlacklist : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -0,0 +1,37 @@
package com.lt2333.simplicitytools.hook.app.securitycenter
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
object RemoveOpenAppConfirmationPopup : HookRegister() {
override fun init() {
val textViewClass = "android.widget.TextView".findClass(getDefaultClassLoader())
textViewClass.hookAfterMethod(
"setText",
CharSequence::class.java
) {
if (XSPUtils.getBoolean("remove_open_app_confirmation_popup", false)) {
val textView = it.thisObject as TextView
if (it.args.isNotEmpty() && it.args[0]?.toString().equals(
textView.context.resources.getString(
textView.context.resources.getIdentifier(
"button_text_accept",
"string",
textView.context.packageName
)
)
)
) {
textView.performClick()
}
}
}
}
}

View File

@@ -17,17 +17,23 @@ import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import java.lang.reflect.Field
class ShowBatteryTemperature: IXposedHookLoadPackage {
object ShowBatteryTemperature: HookRegister() {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
private fun getBatteryTemperature(context: Context): Int {
return context.registerReceiver(
null as BroadcastReceiver?,
IntentFilter("android.intent.action.BATTERY_CHANGED")
)!!.getIntExtra("temperature", 0) / 10
}
override fun init() {
if (!XSPUtils.getBoolean("battery_life_function", false)) return
val a = "com.miui.powercenter.a\$a".findClass(lpparam.classLoader)
"com.miui.powercenter.a".hookBeforeMethod(lpparam.classLoader, "b", Context::class.java) {
it.result = getBatteryTemperature(it.args[0] as Context).toString()
val a = "com.miui.powercenter.a\$a".findClass(getDefaultClassLoader())
"com.miui.powercenter.a".hookBeforeMethod(getDefaultClassLoader(), "b", Context::class.java) {
it.result = getBatteryTemperature(it.args[0] as Context).toString()
}
a.hookAfterMethod("run") {
val context = AndroidAppHelper.currentApplication().applicationContext
@@ -59,10 +65,5 @@ class ShowBatteryTemperature: IXposedHookLoadPackage {
linearLayout.addView(tempView)
}
}
private fun getBatteryTemperature(context: Context): Int {
return context.registerReceiver(
null as BroadcastReceiver?,
IntentFilter("android.intent.action.BATTERY_CHANGED")
)!!.getIntExtra("temperature", 0) / 10
}
}

View File

@@ -4,13 +4,12 @@ import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class SkipWaitingTime : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object SkipWaitingTime : HookRegister() {
val textViewClass = "android.widget.TextView".findClass(lpparam.classLoader)
override fun init() {
val textViewClass = "android.widget.TextView".findClass(getDefaultClassLoader())
textViewClass.hookBeforeMethod(
"setText",
CharSequence::class.java,
@@ -35,4 +34,5 @@ class SkipWaitingTime : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -2,13 +2,13 @@ package com.lt2333.simplicitytools.hook.app.settings
import android.app.NotificationChannel
import com.lt2333.simplicitytools.util.*
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class ShowNotificationImportance : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val channelNotificationSettingsClass = "com.android.settings.notification.ChannelNotificationSettings".findClass(lpparam.classLoader)
object ShowNotificationImportance : HookRegister() {
override fun init() {
val channelNotificationSettingsClass = "com.android.settings.notification.ChannelNotificationSettings".findClass(getDefaultClassLoader())
channelNotificationSettingsClass.hookBeforeMethod("removeDefaultPrefs") {
if (!XSPUtils.getBoolean("show_notification_importance", false)) return@hookBeforeMethod
val importance = it.thisObject.callMethod("findPreference", "importance") ?: return@hookBeforeMethod
@@ -20,7 +20,7 @@ class ShowNotificationImportance : IXposedHookLoadPackage {
it.result = null
}
val dropDownPreferenceClass = XposedHelpers.findClass("androidx.preference.Preference", lpparam.classLoader)
val dropDownPreferenceClass = XposedHelpers.findClass("androidx.preference.Preference", getDefaultClassLoader())
dropDownPreferenceClass.hookAfterMethod("callChangeListener", Any::class.java) {
val channelNotificationSettings = XposedHelpers.getAdditionalInstanceField(it.thisObject, "channelNotificationSettings") ?: return@hookAfterMethod
val mChannel = channelNotificationSettings.getObjectField("mChannel") as NotificationChannel
@@ -31,4 +31,5 @@ class ShowNotificationImportance : IXposedHookLoadPackage {
mBackend.callMethod("updateChannel", mPkg, mUid, mChannel)
}
}
}

View File

@@ -0,0 +1,25 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.util.TypedValue
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object BatteryPercentage: HookRegister() {
override fun init() {
val size = XSPUtils.getFloat("battery_percentage_font_size", 0f)
if (size == 0f) return
"com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(
getDefaultClassLoader(),
"updateResources"
) {
(it.thisObject.getObjectField("mBatteryPercentView") as TextView).setTextSize(
TypedValue.COMPLEX_UNIT_DIP, size
)
}
}
}

View File

@@ -4,59 +4,168 @@ import android.content.ComponentName
import android.content.Intent
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import androidx.constraintlayout.widget.ConstraintLayout
import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.loadClass
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.view.WeatherView
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class ControlCenterWeather : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object ControlCenterWeather: HookRegister() {
override fun init() {
hasEnable("control_center_weather") {
var mWeatherView: TextView? = null
var mConstraintLayout: ConstraintLayout? = null
val isDisplayCity = XSPUtils.getBoolean("control_center_weather_city", false)
"com.android.systemui.controlcenter.phone.widget.QSControlCenterHeaderView".hookAfterMethod(
lpparam.classLoader,
getDefaultClassLoader(),
"onFinishInflate"
) {
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
val layoutParam =
loadClass("androidx.constraintlayout.widget.ConstraintLayout\$LayoutParams")
.getConstructor(Int::class.java, Int::class.java).newInstance(
// MIUI编译时间大于 2022-03-12 00:00:00 且为内测版
if (SystemProperties.get(context, "ro.build.date.utc")!!
.toInt() >= 1647014400 &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("DEV") &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("XM")
) {
//获取原组件
val big_time_ID =
context.resources.getIdentifier("big_time", "id", context.packageName)
val big_time: TextView = viewGroup.findViewById(big_time_ID)
val date_time_ID =
context.resources.getIdentifier("date_time", "id", context.packageName)
val date_time: TextView = viewGroup.findViewById(date_time_ID)
//创建新布局
val mConstraintLayoutLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).also {
it.topMargin = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"qs_control_header_tiles_margin_top",
"dimen",
context.packageName
)
)
}
mConstraintLayout =
ConstraintLayout(context).also { it.layoutParams = mConstraintLayoutLp }
(big_time.parent as ViewGroup).addView(mConstraintLayout, 0)
//从原布局中删除组件
(big_time.parent as ViewGroup).removeView(big_time)
(date_time.parent as ViewGroup).removeView(date_time)
//添加组件至新布局
mConstraintLayout!!.addView(big_time)
mConstraintLayout!!.addView(date_time)
//组件属性
val date_time_LP = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT
).also {
it.startToEnd = big_time_ID
it.bottomToBottom = 0
it.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"notification_panel_time_date_space",
"dimen",
context.packageName
)
)
it.bottomMargin = dp2px(context, 5f)
}
date_time.layoutParams = date_time_LP
//创建天气组件
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(
context.resources.getIdentifier(
"TextAppearance.QSControl.Date",
"style",
context.packageName
)
)
}
mConstraintLayout!!.addView(mWeatherView)
val mWeatherView_LP = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT
).also {
it.startToEnd = big_time_ID
it.bottomToTop = date_time_ID
it.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"notification_panel_time_date_space",
"dimen",
context.packageName
)
)
}
(mWeatherView as WeatherView).layoutParams = mWeatherView_LP
} else {
val layoutParam =
loadClass("androidx.constraintlayout.widget.ConstraintLayout\$LayoutParams").getConstructor(
Int::class.java,
Int::class.java
).newInstance(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
) as ViewGroup.MarginLayoutParams
layoutParam.setObjectField(
"bottomToTop",
context.resources.getIdentifier("date_time", "id", context.packageName)
)
layoutParam.setObjectField(
"startToEnd",
context.resources.getIdentifier("big_time", "id", context.packageName)
)
layoutParam.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"notification_panel_time_date_space",
"dimen",
context.packageName
layoutParam.setObjectField(
"bottomToTop",
context.resources.getIdentifier("date_time", "id", context.packageName)
)
)
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(
layoutParam.setObjectField(
"startToEnd",
context.resources.getIdentifier("big_time", "id", context.packageName)
)
layoutParam.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"TextAppearance.QSControl.Date",
"style",
"notification_panel_time_date_space",
"dimen",
context.packageName
)
)
layoutParams = layoutParam
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(
context.resources.getIdentifier(
"TextAppearance.QSControl.Date",
"style",
context.packageName
)
)
layoutParams = layoutParam
}
viewGroup.addView(mWeatherView)
}
viewGroup.addView(mWeatherView)
(mWeatherView as WeatherView).setOnClickListener {
try {
@@ -72,19 +181,44 @@ class ControlCenterWeather : IXposedHookLoadPackage {
Toast.makeText(context, "启动失败", Toast.LENGTH_LONG).show()
}
}
}
//解决横屏重叠
"com.android.systemui.controlcenter.phone.widget.QSControlCenterHeaderView".hookAfterMethod(
lpparam.classLoader,
getDefaultClassLoader(),
"updateLayout"
) {
val mOrientation = it.thisObject.getObjectField("mOrientation") as Int
if (mOrientation == 1) {
mWeatherView!!.visibility = View.VISIBLE
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
val mOrientation = viewGroup.getObjectField("mOrientation") as Int
// MIUI编译时间大于 2022-03-12 00:00:00 且为内测版
if (SystemProperties.get(context, "ro.build.date.utc")!!
.toInt() >= 1647014400 &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("DEV") &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("XM")
) {
if (mOrientation == 1) {
mConstraintLayout!!.visibility = View.VISIBLE
} else {
mConstraintLayout!!.visibility = View.GONE
}
} else {
mWeatherView!!.visibility = View.GONE
if (mOrientation == 1) {
mWeatherView!!.visibility = View.VISIBLE
} else {
mWeatherView!!.visibility = View.GONE
}
}
}
}
}
}

View File

@@ -0,0 +1,22 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object CustomMobileTypeText : HookRegister() {
override fun init() {
hasEnable("custom_mobile_type_text_switch") {
"com.android.systemui.statusbar.policy.MobileSignalController".hookAfterMethod(
getDefaultClassLoader(),
"getMobileTypeName",
Int::class.java
) {
it.result = XSPUtils.getString("custom_mobile_type_text","5G")
}
}
}
}

View File

@@ -0,0 +1,140 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Context
import android.net.TrafficStats
import android.util.AttributeSet
import android.util.TypedValue
import android.view.Gravity
import android.widget.TextView
import com.github.kyuubiran.ezxhelper.init.InitFields
import com.lt2333.simplicitytools.R
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import java.text.DecimalFormat
object DoubleLineNetworkSpeed: HookRegister() {
private var mLastTotalUp: Long = 0
private var mLastTotalDown: Long = 0
private var lastTimeStampTotalUp: Long = 0
private var lastTimeStampTotalDown: Long = 0
private var upIcon = ""
private var downIcon = ""
private val getDualSize = XSPUtils.getInt("status_bar_network_speed_dual_row_size", 0)
private val getDualAlign = XSPUtils.getInt("status_bar_network_speed_dual_row_gravity", 0)
override fun init() {
val none = InitFields.moduleRes.getString(R.string.none)
if (XSPUtils.getString("status_bar_network_speed_dual_row_icon", none) != none) {
upIcon = XSPUtils.getString("status_bar_network_speed_dual_row_icon", none)
?.firstOrNull().toString()
downIcon = XSPUtils.getString("status_bar_network_speed_dual_row_icon", none)
?.lastOrNull().toString()
}
hasEnable("status_bar_dual_row_network_speed") {
"com.android.systemui.statusbar.views.NetworkSpeedView".findClass(getDefaultClassLoader())
.hookAfterConstructor(Context::class.java, AttributeSet::class.java) {
val mView = it.thisObject as TextView
mView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 7f)
if (getDualSize != 0) {
mView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, getDualSize.toFloat())
}
mView.isSingleLine = false
mView.setLineSpacing(0F, 0.8F)
if (getDualAlign == 0) {
mView.gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
} else {
mView.gravity = Gravity.RIGHT or Gravity.CENTER_VERTICAL
}
}
"com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod(
getDefaultClassLoader(),
"formatSpeed",
Context::class.java,
Long::class.java
) {
if (getDualAlign == 0) {
it.result =
"$upIcon ${getTotalUpSpeed(it.args[0]as Context)}\n${downIcon} ${getTotalDownloadSpeed(it.args[0]as Context)}"
} else {
it.result =
"${getTotalUpSpeed(it.args[0]as Context)} ${upIcon}\n${getTotalDownloadSpeed(it.args[0]as Context)} $downIcon"
}
}
}
}
//获取总的上行速度
private fun getTotalUpSpeed(context: Context): String {
var totalUpSpeed = 0F
val currentTotalTxBytes = TrafficStats.getTotalTxBytes()
val nowTimeStampTotalUp = System.currentTimeMillis()
//计算上传速度
val bytes =
(currentTotalTxBytes - mLastTotalUp) * 1000 / (nowTimeStampTotalUp - lastTimeStampTotalUp).toFloat()
var unit = ""
if (bytes >= 1048576) {
totalUpSpeed =
DecimalFormat("0.0").format(bytes / 1048576).toFloat()
unit = context.resources.getString(context.resources.getIdentifier("megabyte_per_second","string",context.packageName))
} else {
totalUpSpeed =
DecimalFormat("0.0").format(bytes / 1024).toFloat()
unit = context.resources.getString(context.resources.getIdentifier("kilobyte_per_second","string",context.packageName))
}
//保存当前的流量总和和上次的时间戳
mLastTotalUp = currentTotalTxBytes
lastTimeStampTotalUp = nowTimeStampTotalUp
return if (totalUpSpeed >= 100) {
"" + totalUpSpeed.toInt() + unit
} else {
"" + totalUpSpeed + unit
}
}
//获取总的下行速度
private fun getTotalDownloadSpeed(context: Context): String {
var totalDownSpeed = 0F
val currentTotalRxBytes = TrafficStats.getTotalRxBytes()
val nowTimeStampTotalDown = System.currentTimeMillis()
//计算下行速度
val bytes =
(currentTotalRxBytes - mLastTotalDown) * 1000 / (nowTimeStampTotalDown - lastTimeStampTotalDown).toFloat()
var unit = ""
if (bytes >= 1048576) {
totalDownSpeed =
DecimalFormat("0.0").format(bytes / 1048576).toFloat()
unit = context.resources.getString(context.resources.getIdentifier("megabyte_per_second","string",context.packageName))
} else {
totalDownSpeed =
DecimalFormat("0.0").format(bytes / 1024).toFloat()
unit = context.resources.getString(context.resources.getIdentifier("kilobyte_per_second","string",context.packageName))
}
//保存当前的流量总和和上次的时间戳
mLastTotalDown = currentTotalRxBytes
lastTimeStampTotalDown = nowTimeStampTotalDown
return if (totalDownSpeed >= 100) {
"" + totalDownSpeed.toInt() + unit
} else {
"" + totalDownSpeed + unit
}
}
}

View File

@@ -1,17 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideAirplaneIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val iconState = "com.android.systemui.statusbar.policy.NetworkController\$IconState"
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy".hookBeforeMethod(lpparam.classLoader, "setIsAirplaneMode", iconState) {
hasEnable("hide_airplane_icon") {
it.result = null
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideAlarmIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy".hookBeforeMethod(lpparam.classLoader, "onMiuiAlarmChanged") {
hasEnable("hide_alarm_icon") {
it.result = null
}
}
}
}

View File

@@ -7,12 +7,12 @@ import android.widget.TextView
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideBatteryIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(lpparam.classLoader, "updateResources") {
object HideBatteryIcon : HookRegister() {
override fun init() {
"com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(getDefaultClassLoader(), "updateResources") {
//隐藏电池图标
hasEnable("hide_battery_icon") {
@@ -32,7 +32,7 @@ class HideBatteryIcon : IXposedHookLoadPackage {
(it.thisObject.getObjectField("mBatteryPercentMarkView") as TextView).textSize = 0F
}
"com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(lpparam.classLoader, "updateChargeAndText") {
"com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(getDefaultClassLoader(), "updateChargeAndText") {
//隐藏电池充电图标
hasEnable("hide_battery_charging_icon") {
(it.thisObject.getObjectField("mBatteryChargingInView") as ImageView).visibility = View.GONE
@@ -41,4 +41,5 @@ class HideBatteryIcon : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -1,17 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Intent
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideBluetoothHandsfreeBatteryIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy".hookBeforeMethod(lpparam.classLoader, "updateBluetoothHandsfreeBattery", Intent::class.java) {
hasEnable("hide_bluetooth_battery_icon") {
it.result = null
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideBluetoothIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy".hookBeforeMethod(lpparam.classLoader, "updateBluetooth", String::class.java) {
hasEnable("hide_bluetooth_icon") {
it.result = null
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideGPSIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy".hookBeforeMethod(lpparam.classLoader, "updateLocationFromController") {
hasEnable("hide_gps_icon") {
it.result = null
}
}
}
}

View File

@@ -5,13 +5,13 @@ import android.widget.ImageView
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideHDIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object HideHDIcon: HookRegister() {
override fun init() {
val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState"
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "initViewState", iconState) {
hasEnable("hide_big_hd_icon") {
(it.thisObject.getObjectField("mVolte") as ImageView).visibility = View.GONE
}
@@ -23,7 +23,7 @@ class HideHDIcon :IXposedHookLoadPackage {
}
}
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "updateState", iconState) {
hasEnable("hide_big_hd_icon") {
(it.thisObject.getObjectField("mVolte") as ImageView).visibility = View.GONE
}
@@ -35,4 +35,5 @@ class HideHDIcon :IXposedHookLoadPackage {
}
}
}
}

View File

@@ -1,17 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Intent
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideHeadsetIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy".hookBeforeMethod(lpparam.classLoader, "updateHeadsetPlug", Intent::class.java) {
hasEnable("hide_headset_icon") {
it.result = null
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideHotspotIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.PhoneStatusBarPolicy\$2".hookBeforeMethod(lpparam.classLoader, "onHotspotChanged", Boolean::class.java, Int::class.java) {
hasEnable("hide_hotspot_icon") {
it.result = null
}
}
}
}

View File

@@ -5,24 +5,25 @@ import android.widget.ImageView
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideMobileActivityIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object HideMobileActivityIcon: HookRegister() {
override fun init() {
val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState"
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "initViewState", iconState) {
hasEnable("hide_mobile_activity_icon") {
(it.thisObject.getObjectField("mLeftInOut") as ImageView).visibility = View.GONE
(it.thisObject.getObjectField("mRightInOut") as ImageView).visibility = View.GONE
}
}
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(getDefaultClassLoader(), "updateState", iconState) {
hasEnable("hide_mobile_activity_icon") {
(it.thisObject.getObjectField("mLeftInOut") as ImageView).visibility = View.GONE
(it.thisObject.getObjectField("mRightInOut") as ImageView).visibility = View.GONE
}
}
}
}

View File

@@ -3,29 +3,54 @@ package com.lt2333.simplicitytools.hook.app.systemui
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
class HideMobileTypeIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object HideMobileTypeIcon: HookRegister() {
private val isBigType = XSPUtils.getBoolean("big_mobile_type_icon", false)
override fun init() {
val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$MobileIconState"
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) {
hasEnable("hide_mobile_type_icon") {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility = View.INVISIBLE
}
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
getDefaultClassLoader(),
"initViewState",
iconState
) {
hideMobileTypeIcon(it)
}
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) {
hasEnable("hide_mobile_type_icon") {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility = View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility = View.INVISIBLE
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
getDefaultClassLoader(),
"updateState",
iconState
) {
hideMobileTypeIcon(it)
}
}
private fun hideMobileTypeIcon(it: XC_MethodHook.MethodHookParam) {
hasEnable("hide_mobile_type_icon") {
if (isBigType) {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility =
View.GONE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility =
View.GONE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility =
View.GONE
} else {
(it.thisObject.getObjectField("mMobileType") as TextView).visibility =
View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeImage") as ImageView).visibility =
View.INVISIBLE
(it.thisObject.getObjectField("mMobileTypeSingle") as TextView).visibility =
View.INVISIBLE
}
}
}
}

View File

@@ -4,12 +4,12 @@ import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideNetworkSpeedSplitter : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val networkSpeedSplitterClass = "com.android.systemui.statusbar.views.NetworkSpeedSplitter".findClass(lpparam.classLoader)
object HideNetworkSpeedSplitter: HookRegister() {
override fun init() {
val networkSpeedSplitterClass = "com.android.systemui.statusbar.views.NetworkSpeedSplitter".findClass(getDefaultClassLoader())
networkSpeedSplitterClass.hookAfterMethod("init") {
if (XSPUtils.getBoolean("hide_network_speed_splitter", false)) {
val textView = it.thisObject as TextView
@@ -17,4 +17,5 @@ class HideNetworkSpeedSplitter : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideNoSimIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy".hookBeforeMethod(lpparam.classLoader, "setNoSims", Boolean::class.javaPrimitiveType, Boolean::class.javaPrimitiveType) {
hasEnable("hide_no_sim_icon") {
it.result = null
}
}
}
}

View File

@@ -2,12 +2,12 @@ package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideSimIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy".hookBeforeMethod(lpparam.classLoader, "hasCorrectSubs", MutableList::class.java) {
object HideSimIcon: HookRegister() {
override fun init() {
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy".hookBeforeMethod(getDefaultClassLoader(), "hasCorrectSubs", MutableList::class.java) {
val list = it.args[0] as MutableList<*>
val size = list.size
hasEnable("hide_sim_two_icon", extraCondition = { size == 2 }) {
@@ -18,4 +18,5 @@ class HideSimIcon :IXposedHookLoadPackage {
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideSlaveWifiIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.policy.SlaveWifiSignalController".hookBeforeMethod(lpparam.classLoader, "updateIconState") {
hasEnable("hide_slave_wifi_icon") {
it.result = null
}
}
}
}

View File

@@ -0,0 +1,83 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
object HideStatusBarIcon: HookRegister() {
override fun init() {
"com.android.systemui.statusbar.phone.StatusBarIconControllerImpl".hookBeforeMethod(
getDefaultClassLoader(),
"setIconVisibility",
String::class.java,
Boolean::class.java
) { hideIcon(it) }
"com.android.systemui.statusbar.phone.MiuiDripLeftStatusBarIconControllerImpl".hookBeforeMethod(
getDefaultClassLoader(),
"setIconVisibility",
String::class.java,
Boolean::class.java
) { hideIcon(it) }
}
private fun hideIcon(it: XC_MethodHook.MethodHookParam) {
//Log.d("图标名字", "handleLoadPackage: " + it.args[0])
when (it.args[0] as String) {
//隐藏蓝牙
"bluetooth" -> hasEnable("hide_bluetooth_icon") {
it.args[1] = false
}
//隐藏蓝牙电量
"bluetooth_handsfree_battery" -> hasEnable("hide_bluetooth_battery_icon") {
it.args[1] = false
}
//隐藏勿扰
"zen" -> hasEnable("hide_zen_icon") {
it.args[1] = false
}
//隐藏声音
"volume" -> hasEnable("hide_volume_icon") {
it.args[1] = false
}
//隐藏WIFI
"wifi" -> hasEnable("hide_wifi_icon") {
it.args[1] = false
}
//隐藏WIFI辅助
"slave_wifi" -> hasEnable("hide_slave_wifi_icon") {
it.args[1] = false
}
//隐藏飞行模式
"airplane" -> hasEnable("hide_airplane_icon") {
it.args[1] = false
}
//隐藏闹钟
"alarm_clock" -> hasEnable("hide_alarm_icon") {
it.args[1] = false
}
//隐藏定位
"location" -> hasEnable("hide_gps_icon") {
it.args[1] = false
}
//隐藏热点
"hotspot" -> hasEnable("hide_hotspot_icon") {
it.args[1] = false
}
//隐藏耳机
"headset" -> hasEnable("hide_headset_icon") {
it.args[1] = false
}
//隐藏VPN
"vpn" -> hasEnable("hide_vpn_icon") {
it.args[1] = false
}
//隐藏无SIM卡
"no_sim" -> hasEnable("hide_no_sim_icon") {
it.args[1] = false
}
}
}
}

View File

@@ -3,20 +3,22 @@ package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.isNonNull
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideStatusBarNetworkSpeedSecond :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.views.NetworkSpeedView".hookBeforeMethod(lpparam.classLoader, "setNetworkSpeed", String::class.java) {
object HideStatusBarNetworkSpeedSecond: HookRegister() {
override fun init() {
"com.android.systemui.statusbar.views.NetworkSpeedView".hookBeforeMethod(getDefaultClassLoader(), "setNetworkSpeed", String::class.java) {
hasEnable("hide_status_bar_network_speed_second") {
it.args[0].isNonNull { s ->
it.args[0] = (s as String)
.replace("/", "")
.replace("s", "")
.replace("'", "")
.replace("วิ", "")
}
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideVolumeZenIcon :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy".hookBeforeMethod(lpparam.classLoader, "updateVolumeZen") {
hasEnable("hide_volume_zen_icon") {
it.result = null
}
}
}
}

View File

@@ -1,16 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideVpnIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.phone.StatusBarSignalPolicy".hookBeforeMethod(lpparam.classLoader, "updateVpn") {
hasEnable("hide_vpn_icon") {
it.result = null
}
}
}
}

View File

@@ -6,13 +6,13 @@ import android.widget.TextView
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class HideWifiActivityIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object HideWifiActivityIcon: HookRegister() {
override fun init() {
val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState"
"com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(lpparam.classLoader, "initViewState", iconState) {
"com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(getDefaultClassLoader(), "initViewState", iconState) {
//隐藏WIFI箭头
hasEnable("hide_wifi_activity_icon") {
(it.thisObject.getObjectField("mWifiActivityView") as ImageView).visibility = View.INVISIBLE
@@ -23,7 +23,7 @@ class HideWifiActivityIcon : IXposedHookLoadPackage {
}
}
"com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(lpparam.classLoader, "updateState", iconState) {
"com.android.systemui.statusbar.StatusBarWifiView".hookAfterMethod(getDefaultClassLoader(), "updateState", iconState) {
//隐藏WIFI箭头
hasEnable("hide_wifi_activity_icon") {
(it.thisObject.getObjectField("mWifiActivityView") as ImageView).visibility = View.INVISIBLE
@@ -34,4 +34,5 @@ class HideWifiActivityIcon : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -1,17 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class HideWifiIcon : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val iconState = "com.android.systemui.statusbar.phone.StatusBarSignalPolicy\$WifiIconState"
"com.android.systemui.statusbar.phone.MiuiStatusBarSignalPolicy".hookBeforeMethod(lpparam.classLoader, "updateWifiIconWithState", iconState) {
hasEnable("hide_wifi_icon") {
it.result = null
}
}
}
}

View File

@@ -0,0 +1,112 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.os.Handler
import android.provider.Settings
import android.util.AttributeSet
import android.util.Log
import android.widget.LinearLayout
import android.widget.TextView
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XC_MethodHook
import java.lang.reflect.Method
import java.text.SimpleDateFormat
import java.util.*
object LockScreenClockDisplaySeconds : HookRegister() {
private var nowTime: Date = Calendar.getInstance().time
override fun init() {
hasEnable("lock_screen_clock_display_seconds") {
"com.miui.clock.MiuiBaseClock".findClass(getDefaultClassLoader())
.hookAfterConstructor(
Context::class.java,
AttributeSet::class.java
) {
try {
val viewGroup = it.thisObject as LinearLayout
val d: Method = viewGroup.javaClass.getDeclaredMethod("updateTime")
val r = Runnable {
d.isAccessible = true
d.invoke(viewGroup)
}
class T : TimerTask() {
override fun run() {
Handler(viewGroup.context.mainLooper).post(r)
}
}
Timer().scheduleAtFixedRate(
T(),
1000 - System.currentTimeMillis() % 1000,
1000
)
} catch (e: java.lang.Exception) {
}
}
"com.miui.clock.MiuiLeftTopClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, false)
}
"com.miui.clock.MiuiLeftTopLargeClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, false)
}
"com.miui.clock.MiuiCenterHorizontalClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, false)
}
"com.miui.clock.MiuiVerticalClock".hookAfterMethod(
getDefaultClassLoader(),
"updateTime"
) {
updateTime(it, true)
}
}
}
private fun updateTime(it: XC_MethodHook.MethodHookParam, isVertical: Boolean) {
val textV = it.thisObject.getObjectField("mTimeText") as TextView
val c: Context = textV.context
Log.d(
"lock_screen_clock_display_seconds",
"updateTime: " + it.thisObject.javaClass.simpleName
)
val is24 = Settings.System.getString(
c.contentResolver,
Settings.System.TIME_12_24
) == "24"
nowTime = Calendar.getInstance().time
textV.text = getTime(is24, isVertical)
}
@SuppressLint("SimpleDateFormat")
private fun getTime(is24: Boolean, isVertical: Boolean): String {
var timePattern = ""
if (isVertical) { //垂直
timePattern += if (is24) "HH\nmm\nss" else "hh\nmm\nss"
} else { //水平
timePattern += if (is24) "HH:mm:ss" else "h:mm:ss"
}
timePattern = SimpleDateFormat(timePattern).format(nowTime)
return timePattern
}
}

View File

@@ -0,0 +1,109 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.widget.TextView
import com.github.kyuubiran.ezxhelper.init.InitFields
import com.lt2333.simplicitytools.R
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
import java.io.BufferedReader
import java.io.FileReader
import java.lang.reflect.Method
import kotlin.math.roundToInt
object LockScreenCurrent : HookRegister() {
override fun init() {
hasEnable("lock_screen_charging_current") {
"com.android.keyguard.charge.ChargeUtils".findClass(getDefaultClassLoader())
.hookAfterMethod(
"getChargingHintText",
Context::class.java,
Boolean::class.java,
Int::class.java
) {
it.result = getCurrent() + "\n" + it.result
}
"com.android.systemui.statusbar.phone.KeyguardBottomAreaView".findClass(getDefaultClassLoader())
.hookAfterMethod(
"onFinishInflate"
) {
(XposedHelpers.getObjectField(
it.thisObject,
"mIndicationText"
) as TextView).isSingleLine = false
}
}
}
/**
* 原始代码来自 CSDN
* https://blog.csdn.net/zhangyongfeiyong/article/details/53641809
*/
@SuppressLint("PrivateApi")
private fun getCurrent(): String {
var result = ""
try {
val systemProperties = Class.forName("android.os.SystemProperties")
val get = systemProperties.getDeclaredMethod("get", String::class.java) as Method
val platName = get.invoke(null, "ro.hardware") as String
if (platName.startsWith("mt") || platName.startsWith("MT")) {
val filePath =
"/sys/class/power_supply/battery/device/FG_Battery_CurrentConsumption"
val current = (-getMeanCurrentVal(filePath, 5, 0) / 1000.0f).roundToInt()
result = "${InitFields.moduleRes.getString(R.string.current_current)} ${current}mA"
} else if (platName.startsWith("qcom")) {
val filePath = "/sys/class/power_supply/battery/current_now"
val current = (-getMeanCurrentVal(filePath, 5, 0) / 1000.0f).roundToInt()
result = "${InitFields.moduleRes.getString(R.string.current_current)} ${current}mA"
}
} catch (e: Exception) {
e.printStackTrace()
}
return result
}
/**
* 获取平均电流值
* 获取 filePath 文件 totalCount 次数的平均值,每次采样间隔 intervalMs 时间
*/
private fun getMeanCurrentVal(filePath: String, totalCount: Int, intervalMs: Int): Float {
var meanVal = 0.0f
if (totalCount <= 0) {
return 0.0f
}
for (i in 0 until totalCount) {
try {
val f: Float = readFile(filePath, 0).toFloat()
meanVal += f / totalCount
} catch (e: Exception) {
e.printStackTrace()
}
if (intervalMs <= 0) {
continue
}
try {
Thread.sleep(intervalMs.toLong())
} catch (e: Exception) {
e.printStackTrace()
}
}
return meanVal
}
private fun readFile(path: String, defaultValue: Int): Int {
try {
val bufferedReader = BufferedReader(FileReader(path))
val i: Int = bufferedReader.readLine().toInt(10)
bufferedReader.close()
return i
} catch (localException: java.lang.Exception) {
}
return defaultValue
}
}

View File

@@ -0,0 +1,72 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.app.KeyguardManager
import android.content.Context
import android.os.SystemClock
import android.view.MotionEvent
import android.view.View
import android.view.View.OnTouchListener
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
object LockScreenDoubleTapToSleep: HookRegister() {
@SuppressLint("ClickableViewAccessibility")
override fun init() {
hasEnable("lock_screen_double_tap_to_sleep") {
"com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer".findClass(
getDefaultClassLoader()
).hookBeforeMethod("onFinishInflate") {
val view = it.thisObject as View
XposedHelpers.setAdditionalInstanceField(view, "currentTouchTime", 0L)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchX", 0f)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchY", 0f)
view.setOnTouchListener(OnTouchListener { v, event ->
if (event.action != MotionEvent.ACTION_DOWN) return@OnTouchListener false
var currentTouchTime =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchTime") as Long
var currentTouchX =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchX") as Float
var currentTouchY =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchY") as Float
val lastTouchTime = currentTouchTime
val lastTouchX = currentTouchX
val lastTouchY = currentTouchY
currentTouchTime = System.currentTimeMillis()
currentTouchX = event.x
currentTouchY = event.y
if (currentTouchTime - lastTouchTime < 250L && Math.abs(currentTouchX - lastTouchX) < 100f && Math.abs(
currentTouchY - lastTouchY
) < 100f
) {
val keyguardMgr =
v.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardMgr.isKeyguardLocked) {
XposedHelpers.callMethod(
v.context.getSystemService(Context.POWER_SERVICE),
"goToSleep",
SystemClock.uptimeMillis()
)
}
currentTouchTime = 0L
currentTouchX = 0f
currentTouchY = 0f
}
XposedHelpers.setAdditionalInstanceField(
view,
"currentTouchTime",
currentTouchTime
)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchX", currentTouchX)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchY", currentTouchY)
false
})
}
}
}
}

View File

@@ -0,0 +1,25 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
object MaximumNumberOfNotificationIcons: HookRegister() {
override fun init() {
val icons = XSPUtils.getInt("maximum_number_of_notification_icons",3)
val dots = XSPUtils.getInt("maximum_number_of_notification_dots",3)
"com.android.systemui.statusbar.phone.NotificationIconContainer".replaceMethod(getDefaultClassLoader(), "miuiShowNotificationIcons", Boolean::class.java) {
if (it.args[0] as Boolean) {
it.thisObject.setIntField("MAX_DOTS", dots)
it.thisObject.setIntField("MAX_STATIC_ICONS", icons)
it.thisObject.setIntField("MAX_VISIBLE_ICONS_ON_LOCK", icons)
} else {
it.thisObject.setIntField("MAX_DOTS", 0)
it.thisObject.setIntField("MAX_STATIC_ICONS", 0)
it.thisObject.setIntField("MAX_VISIBLE_ICONS_ON_LOCK", 0)
}
it.thisObject.callMethod("updateState")
}
}
}

View File

@@ -4,52 +4,221 @@ import android.content.ComponentName
import android.content.Intent
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
import androidx.constraintlayout.widget.ConstraintLayout
import cn.fkj233.ui.activity.dp2px
import com.github.kyuubiran.ezxhelper.utils.loadClass
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.view.WeatherView
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class NotificationWeather : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object NotificationWeather: HookRegister() {
override fun init() {
hasEnable("notification_weather") {
var mWeatherView: TextView? = null
var mConstraintLayout: ConstraintLayout? = null
val isDisplayCity = XSPUtils.getBoolean("notification_weather_city", false)
"com.android.systemui.qs.MiuiNotificationHeaderView".hookAfterMethod(lpparam.classLoader, "onFinishInflate") {
"com.android.systemui.qs.MiuiNotificationHeaderView".hookAfterMethod(
getDefaultClassLoader(),
"onFinishInflate"
) {
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
val layoutParam = loadClass("androidx.constraintlayout.widget.ConstraintLayout\$LayoutParams").getConstructor(Int::class.java, Int::class.java).newInstance(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) as ViewGroup.MarginLayoutParams
layoutParam.setObjectField("bottomToTop", context.resources.getIdentifier("date_time", "id", context.packageName))
layoutParam.setObjectField("startToEnd", context.resources.getIdentifier("big_time", "id", context.packageName))
layoutParam.marginStart = context.resources.getDimensionPixelSize(context.resources.getIdentifier("notification_panel_time_date_space", "dimen", context.packageName))
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(context.resources.getIdentifier("TextAppearance.QSControl.Date", "style", context.packageName))
layoutParams = layoutParam
// MIUI编译时间大于 2022-03-12 00:00:00 且为内测版
if (SystemProperties.get(context, "ro.build.date.utc")!!
.toInt() >= 1647014400 &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("DEV") &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("XM")
) {
//获取原组件
val big_time_ID =
context.resources.getIdentifier("big_time", "id", context.packageName)
val big_time: TextView = viewGroup.findViewById(big_time_ID)
val date_time_ID =
context.resources.getIdentifier("date_time", "id", context.packageName)
val date_time: TextView = viewGroup.findViewById(date_time_ID)
//创建新布局
val mConstraintLayoutLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).also {
it.topMargin = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"qs_control_header_tiles_margin_top",
"dimen",
context.packageName
)
)
}
mConstraintLayout =
ConstraintLayout(context).also { it.layoutParams = mConstraintLayoutLp }
(big_time.parent as ViewGroup).addView(mConstraintLayout, 0)
//从原布局中删除组件
(big_time.parent as ViewGroup).removeView(big_time)
(date_time.parent as ViewGroup).removeView(date_time)
//添加组件至新布局
mConstraintLayout!!.addView(big_time)
mConstraintLayout!!.addView(date_time)
//组件属性
val date_time_LP = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT
).also {
it.startToEnd = big_time_ID
it.bottomToBottom = 0
it.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"notification_panel_time_date_space",
"dimen",
context.packageName
)
)
it.bottomMargin = dp2px(context, 5f)
}
date_time.layoutParams = date_time_LP
//创建天气组件
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(
context.resources.getIdentifier(
"TextAppearance.QSControl.Date",
"style",
context.packageName
)
)
}
mConstraintLayout!!.addView(mWeatherView)
val mWeatherView_LP = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT
).also {
it.startToEnd = big_time_ID
it.bottomToTop = date_time_ID
it.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"notification_panel_time_date_space",
"dimen",
context.packageName
)
)
}
(mWeatherView as WeatherView).layoutParams = mWeatherView_LP
} else {
val layoutParam =
loadClass("androidx.constraintlayout.widget.ConstraintLayout\$LayoutParams").getConstructor(
Int::class.java,
Int::class.java
).newInstance(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
) as ViewGroup.MarginLayoutParams
layoutParam.setObjectField(
"bottomToTop",
context.resources.getIdentifier("date_time", "id", context.packageName)
)
layoutParam.setObjectField(
"startToEnd",
context.resources.getIdentifier("big_time", "id", context.packageName)
)
layoutParam.marginStart = context.resources.getDimensionPixelSize(
context.resources.getIdentifier(
"notification_panel_time_date_space",
"dimen",
context.packageName
)
)
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(
context.resources.getIdentifier(
"TextAppearance.QSControl.Date",
"style",
context.packageName
)
)
layoutParams = layoutParam
}
viewGroup.addView(mWeatherView)
}
viewGroup.addView(mWeatherView)
(mWeatherView as WeatherView).setOnClickListener {
try {
val intent = Intent().apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
component = ComponentName("com.miui.weather2", "com.miui.weather2.ActivityWeatherMain")
component = ComponentName(
"com.miui.weather2",
"com.miui.weather2.ActivityWeatherMain"
)
}
context.startActivity(intent)
} catch (e: Exception) {
Toast.makeText(context, "启动失败", Toast.LENGTH_LONG).show()
}
}
}
//解决横屏重叠
"com.android.systemui.qs.MiuiNotificationHeaderView".hookAfterMethod(lpparam.classLoader, "updateLayout") {
val mOrientation = it.thisObject.getObjectField("mOrientation") as Int
if (mOrientation == 1) {
mWeatherView!!.visibility = View.VISIBLE
"com.android.systemui.qs.MiuiNotificationHeaderView".hookAfterMethod(
getDefaultClassLoader(),
"updateLayout"
) {
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
val mOrientation = viewGroup.getObjectField("mOrientation") as Int
// MIUI编译时间大于 2022-03-12 00:00:00 且为内测版
if (SystemProperties.get(context, "ro.build.date.utc")!!
.toInt() >= 1647014400 &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("DEV") &&
!SystemProperties.get(
context,
"ro.build.version.incremental"
)!!.endsWith("XM")
) {
if (mOrientation == 1) {
mConstraintLayout!!.visibility = View.VISIBLE
} else {
mConstraintLayout!!.visibility = View.GONE
}
} else {
mWeatherView!!.visibility = View.GONE
if (mOrientation == 1) {
mWeatherView!!.visibility = View.VISIBLE
} else {
mWeatherView!!.visibility = View.GONE
}
}
}
}
}
}

View File

@@ -8,28 +8,62 @@ import android.widget.TextView
import android.widget.Toast
import com.github.kyuubiran.ezxhelper.utils.loadClass
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import com.lt2333.simplicitytools.view.WeatherView
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class OldNotificationWeather : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object OldNotificationWeather: HookRegister() {
override fun init() {
hasEnable("notification_weather") {
var mWeatherView: TextView? = null
val isDisplayCity = XSPUtils.getBoolean("notification_weather_city", false)
"com.android.systemui.qs.MiuiQSHeaderView".hookAfterMethod(lpparam.classLoader, "onFinishInflate") {
"com.android.systemui.qs.MiuiQSHeaderView".hookAfterMethod(
getDefaultClassLoader(),
"onFinishInflate"
) {
val viewGroup = it.thisObject as ViewGroup
val context = viewGroup.context
val layoutParam = loadClass("androidx.constraintlayout.widget.ConstraintLayout\$LayoutParams")
.getConstructor(Int::class.java, Int::class.java)
.newInstance(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) as ViewGroup.MarginLayoutParams
val layoutParam =
loadClass("androidx.constraintlayout.widget.ConstraintLayout\$LayoutParams")
.getConstructor(Int::class.java, Int::class.java)
.newInstance(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
) as ViewGroup.MarginLayoutParams
layoutParam.setObjectField("engToStart", context.resources.getIdentifier("notification_shade_shortcut", "id", context.packageName))
layoutParam.setObjectField("topToTop", context.resources.getIdentifier("notification_shade_shortcut", "id", context.packageName))
layoutParam.setObjectField("bottomToBottom", context.resources.getIdentifier("notification_shade_shortcut", "id", context.packageName))
layoutParam.setObjectField(
"endToStart",
context.resources.getIdentifier(
"notification_shade_shortcut",
"id",
context.packageName
)
)
layoutParam.setObjectField(
"topToTop",
context.resources.getIdentifier(
"notification_shade_shortcut",
"id",
context.packageName
)
)
layoutParam.setObjectField(
"bottomToBottom",
context.resources.getIdentifier(
"notification_shade_shortcut",
"id",
context.packageName
)
)
mWeatherView = WeatherView(context, isDisplayCity).apply {
setTextAppearance(context.resources.getIdentifier("TextAppearance.StatusBar.Expanded.Clock.QuickSettingDate", "style", context.packageName))
setTextAppearance(
context.resources.getIdentifier(
"TextAppearance.StatusBar.Expanded.Clock.QuickSettingDate",
"style",
context.packageName
)
)
layoutParams = layoutParam
}
viewGroup.addView(mWeatherView)
@@ -37,7 +71,10 @@ class OldNotificationWeather : IXposedHookLoadPackage {
try {
val intent = Intent().apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK
component = ComponentName("com.miui.weather2", "com.miui.weather2.ActivityWeatherMain")
component = ComponentName(
"com.miui.weather2",
"com.miui.weather2.ActivityWeatherMain"
)
}
context.startActivity(intent)
} catch (e: Exception) {
@@ -46,7 +83,10 @@ class OldNotificationWeather : IXposedHookLoadPackage {
}
}
//解决横屏重叠
"com.android.systemui.qs.MiuiQSHeaderView".hookAfterMethod(lpparam.classLoader, "updateLayout") {
"com.android.systemui.qs.MiuiQSHeaderView".hookAfterMethod(
getDefaultClassLoader(),
"updateLayout"
) {
val mOritation = it.thisObject.getObjectField("mOrientation") as Int
if (mOritation == 1) {
mWeatherView!!.visibility = View.VISIBLE
@@ -56,5 +96,6 @@ class OldNotificationWeather : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -0,0 +1,53 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.res.Configuration
import android.view.ViewGroup
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
object OldQSCustom: HookRegister() {
override fun init() {
hasEnable("old_qs_custom_switch") {
val mRows = XSPUtils.getInt("qs_custom_rows", 3)
val mRowsHorizontal = XSPUtils.getInt("qs_custom_rows_horizontal", 2)
val mColumns = XSPUtils.getInt("qs_custom_columns", 4)
val mColumnsUnexpanded = XSPUtils.getInt("qs_custom_columns_unexpanded", 5)
"com.android.systemui.qs.MiuiQuickQSPanel".hookBeforeMethod(
getDefaultClassLoader(),
"setMaxTiles", Int::class.java
) {
//未展开时的列数
it.args[0] = mColumnsUnexpanded
}
"com.android.systemui.qs.MiuiTileLayout".hookAfterMethod(
getDefaultClassLoader(),
"updateColumns"
) {
//展开时的列数
XposedHelpers.setObjectField(it.thisObject, "mColumns", mColumns)
}
"com.android.systemui.qs.MiuiTileLayout".hookAfterMethod(
getDefaultClassLoader(),
"updateResources"
) {
//展开时的行数
val viewGroup = it.thisObject as ViewGroup
val mConfiguration: Configuration = viewGroup.context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
XposedHelpers.setObjectField(viewGroup, "mMaxAllowedRows", mRows)
} else {
XposedHelpers.setObjectField(viewGroup, "mMaxAllowedRows", mRowsHorizontal)
}
viewGroup.requestLayout()
}
}
}
}

View File

@@ -6,30 +6,30 @@ import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class RemoveLockScreenCamera : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
object RemoveLockScreenCamera: HookRegister() {
override fun init() {
//屏蔽右下角组件显示
"com.android.systemui.statusbar.phone.KeyguardBottomAreaView".hookAfterMethod(lpparam.classLoader, "onFinishInflate") {
"com.android.systemui.statusbar.phone.KeyguardBottomAreaView".hookAfterMethod(getDefaultClassLoader(), "onFinishInflate") {
hasEnable("remove_lock_screen_camera") {
(it.thisObject.getObjectField("mRightAffordanceViewLayout") as LinearLayout).visibility = View.GONE
}
}
//屏蔽滑动撞墙动画
"com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(lpparam.classLoader, "onTouchMove", Float::class.java, Float::class.java) {
"com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(getDefaultClassLoader(), "onTouchMove", Float::class.java, Float::class.java) {
hasEnable("remove_lock_screen_camera") {
it.result = false
}
}
"com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(lpparam.classLoader, "reset") {
"com.android.keyguard.KeyguardMoveRightController".hookBeforeMethod(getDefaultClassLoader(), "reset") {
hasEnable("remove_lock_screen_camera") {
it.result = null
}
}
}
}

View File

@@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class RemoveTheLeftSideOfTheLockScreen : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer".hookBeforeMethod(lpparam.classLoader, "inflateLeftView") {
object RemoveTheLeftSideOfTheLockScreen: HookRegister() {
override fun init() {
"com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer".hookBeforeMethod(getDefaultClassLoader(), "inflateLeftView") {
hasEnable("remove_the_left_side_of_the_lock_screen") {
it.result = null
}
}
}
}

View File

@@ -1,27 +0,0 @@
package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.callMethod
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.replaceMethod
import com.lt2333.simplicitytools.util.setIntField
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class RemoveTheMaximumNumberOfNotificationIcons : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
hasEnable("remove_the_maximum_number_of_notification_icons") {
"com.android.systemui.statusbar.phone.NotificationIconContainer".replaceMethod(lpparam.classLoader, "miuiShowNotificationIcons", Boolean::class.java) {
if (it.args[0] as Boolean) {
it.thisObject.setIntField("MAX_DOTS", 30)
it.thisObject.setIntField("MAX_STATIC_ICONS", 30)
it.thisObject.setIntField("MAX_VISIBLE_ICONS_ON_LOCK", 30)
} else {
it.thisObject.setIntField("MAX_DOTS", 0)
it.thisObject.setIntField("MAX_STATIC_ICONS", 0)
it.thisObject.setIntField("MAX_VISIBLE_ICONS_ON_LOCK", 0)
}
it.thisObject.callMethod("updateState")
}
}
}
}

View File

@@ -0,0 +1,129 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.content.Context
import android.content.res.Resources
import android.graphics.Typeface
import android.util.TypedValue
import android.view.Gravity
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
object StatusBarBigMobileTypeIcon: HookRegister() {
private val upAndDownPosition = XSPUtils.getInt("big_mobile_type_icon_up_and_down_position", 0)
private val leftAndRightMargin = XSPUtils.getInt("big_mobile_type_icon_left_and_right_margins", 0)
private val isBold = XSPUtils.getBoolean("big_mobile_type_icon_bold", true)
private val size = XSPUtils.getFloat("big_mobile_type_icon_size", 12.5f)
override fun init() {
hasEnable("big_mobile_type_icon") {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
getDefaultClassLoader(),
"init"
) {
val statusBarMobileView = it.thisObject as ViewGroup
val context: Context = statusBarMobileView.context
val res: Resources = context.resources
//获取组件
val mobileContainerLeftId: Int =
res.getIdentifier("mobile_container_left", "id", "com.android.systemui")
val mobileContainerLeft =
statusBarMobileView.findViewById<ViewGroup>(mobileContainerLeftId)
val mobileTypeId: Int =
res.getIdentifier("mobile_type", "id", "com.android.systemui")
val mobileType = statusBarMobileView.findViewById<TextView>(mobileTypeId)
val mobileLeftMobileInoutId: Int = res.getIdentifier(
"mobile_left_mobile_inout",
"id",
"com.android.systemui"
)
val mobileLeftMobileInout =
statusBarMobileView.findViewById<ImageView>(mobileLeftMobileInoutId)
//获取插入位置
val mobileContainerRightId: Int = res.getIdentifier(
"mobile_container_right",
"id",
"com.android.systemui"
)
val mobileContainerRight =
statusBarMobileView.findViewById<ViewGroup>(mobileContainerRightId)
val rightParentLayout = mobileContainerRight.parent as ViewGroup
val mobileContainerRightIndex =
rightParentLayout.indexOfChild(mobileContainerRight)
//创建新布局
val newLinearLayoutLP = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
).also {
}
val newLinearlayout = LinearLayout(context).also {
it.layoutParams = newLinearLayoutLP
it.id = mobileContainerLeftId
it.setPadding(leftAndRightMargin, 0, leftAndRightMargin, 0)
}
XposedHelpers.setObjectField(it.thisObject, "mMobileLeftContainer", newLinearlayout)
rightParentLayout.addView(
newLinearlayout,
mobileContainerRightIndex
)
//将组件插入新的布局
(mobileType.parent as ViewGroup).removeView(mobileType)
(mobileLeftMobileInout.parent as ViewGroup).removeView(mobileLeftMobileInout)
(mobileContainerLeft.parent as ViewGroup).removeView(mobileContainerLeft)
newLinearlayout.addView(mobileType) //类型
val mobileTypeLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).also {
it.gravity = Gravity.CENTER_VERTICAL
it.topMargin = upAndDownPosition
}
mobileType.also {
it.setTextSize(TypedValue.COMPLEX_UNIT_DIP, size)
if (isBold) {
it.typeface = Typeface.DEFAULT_BOLD
}
it.layoutParams = mobileTypeLp
}
newLinearlayout.addView(mobileLeftMobileInout) //箭头
val mobileLeftMobileInoutLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mobileLeftMobileInout.also {
it.layoutParams = mobileLeftMobileInoutLp
}
//屏蔽更新布局
"com.android.systemui.statusbar.StatusBarMobileView".hookBeforeMethod(
getDefaultClassLoader(),
"updateMobileTypeLayout", String::class.java
) {
it.result = null
}
}
}
}
}

View File

@@ -0,0 +1,69 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.os.SystemClock
import android.view.MotionEvent
import android.view.View.OnTouchListener
import android.view.ViewGroup
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
object StatusBarDoubleTapToSleep: HookRegister() {
@SuppressLint("ClickableViewAccessibility")
override fun init() {
hasEnable("status_bar_double_tap_to_sleep") {
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView".findClass(
getDefaultClassLoader()
).hookBeforeMethod(
"onFinishInflate"
) {
val view = it.thisObject as ViewGroup
XposedHelpers.setAdditionalInstanceField(view, "currentTouchTime", 0L)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchX", 0f)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchY", 0f)
view.setOnTouchListener(OnTouchListener { v, event ->
if (event.action != MotionEvent.ACTION_DOWN) return@OnTouchListener false
var currentTouchTime =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchTime") as Long
var currentTouchX =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchX") as Float
var currentTouchY =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchY") as Float
val lastTouchTime = currentTouchTime
val lastTouchX = currentTouchX
val lastTouchY = currentTouchY
currentTouchTime = System.currentTimeMillis()
currentTouchX = event.x
currentTouchY = event.y
if (currentTouchTime - lastTouchTime < 250L && Math.abs(currentTouchX - lastTouchX) < 100f && Math.abs(
currentTouchY - lastTouchY
) < 100f
) {
XposedHelpers.callMethod(
v.context.getSystemService(Context.POWER_SERVICE),
"goToSleep",
SystemClock.uptimeMillis()
)
currentTouchTime = 0L
currentTouchX = 0f
currentTouchY = 0f
}
XposedHelpers.setAdditionalInstanceField(
view,
"currentTouchTime",
currentTouchTime
)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchX", currentTouchX)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchY", currentTouchY)
false
})
}
}
}
}

View File

@@ -1,5 +1,7 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.app.KeyguardManager
import android.content.Context
import android.content.res.Configuration
import android.content.res.Resources
@@ -7,165 +9,447 @@ import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import cn.fkj233.ui.activity.dp2px
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
class StatusBarLayout : IXposedHookLoadPackage {
@SuppressLint("StaticFieldLeak")
object StatusBarLayout : HookRegister() {
private var mLeftLayout: LinearLayout? = null
private var mRightLayout: LinearLayout? = null
private var mCenterLayout: LinearLayout? = null
private var status_bar: ViewGroup? = null
private var statusBar: ViewGroup? = null
private var status_bar_left = 0
private var status_bar_top = 0
private var status_bar_right = 0
private var status_bar_bottom = 0
private var statusBarLeft = 0
private var statusBarTop = 0
private var statusBarRight = 0
private var statusBarBottom = 0
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (!XSPUtils.getBoolean("status_bar_time_center", false)) return
override fun init() {
when (XSPUtils.getInt("status_bar_layout_mode", 0)) {
//默认
0 -> return
//时钟居中
1 -> {
val collapsedStatusBarFragmentClass =
"com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(
getDefaultClassLoader()
)
val collapsedStatusBarFragmentClass =
"com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(lpparam.classLoader)
collapsedStatusBarFragmentClass.hookAfterMethod(
"onViewCreated",
View::class.java,
Bundle::class.java
) { param ->
val MiuiPhoneStatusBarView: ViewGroup =
param.thisObject.getObjectField("mStatusBar") as ViewGroup
val context: Context = MiuiPhoneStatusBarView.context
val res: Resources = MiuiPhoneStatusBarView.resources
val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarContentsId: Int =
res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int =
res.getIdentifier(
"phone_status_bar_left_container",
"id",
"com.android.systemui"
)
val notificationIconAreaInnerId: Int =
res.getIdentifier(
"notification_icon_area_inner",
"id",
"com.android.systemui"
)
statusBar = MiuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup =
MiuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfterMethod
val clock: TextView = MiuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup =
MiuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
val notificationIconAreaInner: ViewGroup =
MiuiPhoneStatusBarView.findViewById(notificationIconAreaInnerId)
val systemIconArea: ViewGroup =
MiuiPhoneStatusBarView.findViewById(systemIconAreaId)
collapsedStatusBarFragmentClass.hookAfterMethod(
"onViewCreated",
View::class.java,
Bundle::class.java
) { param ->
val MiuiPhoneStatusBarView: ViewGroup =
param.thisObject.getObjectField("mStatusBar") as ViewGroup
val context: Context = MiuiPhoneStatusBarView.context
val res: Resources = MiuiPhoneStatusBarView.resources
val status_bar_ID: Int = res.getIdentifier("status_bar", "id", "com.android.systemui")
val status_bar_contents_ID: Int =
res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val system_icon_area_ID: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clock_ID: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phone_status_bar_left_container_ID: Int =
res.getIdentifier("phone_status_bar_left_container", "id", "com.android.systemui")
val fullscreen_notification_icon_area_ID: Int =
res.getIdentifier("fullscreen_notification_icon_area", "id", "com.android.systemui")
status_bar = MiuiPhoneStatusBarView.findViewById(status_bar_ID)
val status_bar_contents: ViewGroup =
MiuiPhoneStatusBarView.findViewById(status_bar_contents_ID)
if (status_bar == null) return@hookAfterMethod
val Clock: View = MiuiPhoneStatusBarView.findViewById(clock_ID)
val phone_status_bar_left_container: ViewGroup =
MiuiPhoneStatusBarView.findViewById(phone_status_bar_left_container_ID)
val fullscreen_notification_icon_area: ViewGroup =
MiuiPhoneStatusBarView.findViewById(fullscreen_notification_icon_area_ID)
val system_icon_area: ViewGroup =
MiuiPhoneStatusBarView.findViewById(system_icon_area_ID)
(clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
phoneStatusBarLeftContainer
)
(notificationIconAreaInner.parent as ViewGroup).removeView(
notificationIconAreaInner
)
(systemIconArea.parent as ViewGroup).removeView(systemIconArea)
(Clock.parent as ViewGroup).removeView(Clock)
(phone_status_bar_left_container.parent as ViewGroup).removeView(
phone_status_bar_left_container
)
(fullscreen_notification_icon_area.parent as ViewGroup).removeView(
fullscreen_notification_icon_area
)
(system_icon_area.parent as ViewGroup).removeView(system_icon_area)
val mConstraintLayout =
ConstraintLayout(context).also {
it.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
val mConstraintLayoutLp = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
mConstraintLayout.addView(notificationIconAreaInner)
val mConstraintLayout =
ConstraintLayout(context).also { it.layoutParams = mConstraintLayoutLp }
val fullscreen_notification_icon_area_lp = LinearLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
mConstraintLayout.addView(fullscreen_notification_icon_area)
notificationIconAreaInner.layoutParams = fullscreen_notification_icon_area_lp
val fullscreen_notification_icon_area_lp = FrameLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
//增加一个左对齐布局
mLeftLayout = LinearLayout(context)
val LeftLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mLeftLayout!!.layoutParams = LeftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
fullscreen_notification_icon_area.layoutParams = fullscreen_notification_icon_area_lp
//增加一个居中布局
mCenterLayout = LinearLayout(context)
val CenterLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mCenterLayout!!.layoutParams = CenterLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
mRightLayout = LinearLayout(context)
val RightLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mRightLayout!!.layoutParams = RightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
mLeftLayout!!.addView(phoneStatusBarLeftContainer)
mLeftLayout!!.addView(mConstraintLayout)
//增加一个左对齐布局
mLeftLayout = LinearLayout(context)
val LeftLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mLeftLayout!!.layoutParams = LeftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
mCenterLayout!!.addView(clock)
mRightLayout!!.addView(systemIconArea)
statusBarContents.addView(mLeftLayout, 0)
statusBarContents.addView(mCenterLayout)
statusBarContents.addView(mRightLayout)
//增加一个居中布局
mCenterLayout = LinearLayout(context)
val CenterLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mCenterLayout!!.layoutParams = CenterLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
mRightLayout = LinearLayout(context)
val RightLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mRightLayout!!.layoutParams = RightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
mLeftLayout!!.addView(phone_status_bar_left_container)
mLeftLayout!!.addView(mConstraintLayout)
mCenterLayout!!.addView(Clock)
mRightLayout!!.addView(system_icon_area)
status_bar_contents.addView(mLeftLayout, 0)
status_bar_contents.addView(mCenterLayout)
status_bar_contents.addView(mRightLayout)
status_bar_left = status_bar!!.paddingLeft
status_bar_top = status_bar!!.paddingTop
status_bar_right = status_bar!!.paddingRight
status_bar_bottom = status_bar!!.paddingBottom
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (XSPUtils.getBoolean("layout_compatibility_mode", false)) {
val custom_left_margin = XSPUtils.getInt("status_bar_left_margin", 0)
if (custom_left_margin != 0) {
status_bar_left = custom_left_margin
if (XSPUtils.getBoolean("layout_compatibility_mode", false)) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context)
}
}
val phoneStatusBarViewClass =
"com.android.systemui.statusbar.phone.PhoneStatusBarView".findClass(
getDefaultClassLoader()
)
val custom_right_margin = XSPUtils.getInt("status_bar_right_margin", 0)
if (custom_right_margin != 0) {
status_bar_right = custom_right_margin
phoneStatusBarViewClass.hookAfterMethod("updateLayoutForCutout") {
if (XSPUtils.getBoolean("layout_compatibility_mode", false)) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context)
}
}
updateLayout(context)
}
//时钟居右
2 -> {
val collapsedStatusBarFragmentClass =
"com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(
getDefaultClassLoader()
)
}
collapsedStatusBarFragmentClass.hookAfterMethod(
"onViewCreated",
View::class.java,
Bundle::class.java
) { param ->
val MiuiPhoneStatusBarView: ViewGroup =
param.thisObject.getObjectField("mStatusBar") as ViewGroup
val context: Context = MiuiPhoneStatusBarView.context
val res: Resources = MiuiPhoneStatusBarView.resources
val phoneStatusBarViewClass =
"com.android.systemui.statusbar.phone.PhoneStatusBarView".findClass(lpparam.classLoader)
//组件ID
val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val batteryId: Int = res.getIdentifier("battery", "id", "com.android.systemui")
phoneStatusBarViewClass.hookAfterMethod("updateLayoutForCutout") {
if (XSPUtils.getBoolean("layout_compatibility_mode", false)) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context)
//查找组件
statusBar = MiuiPhoneStatusBarView.findViewById(statusBarId)
if (statusBar == null) return@hookAfterMethod
val clock: TextView = MiuiPhoneStatusBarView.findViewById(clockId)
val battery: ViewGroup = MiuiPhoneStatusBarView.findViewById(batteryId)
//新建布局
val RightLp = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
).also {
it.marginStart = dp2px(context, 5f)
}
mRightLayout = LinearLayout(context).also {
it.layoutParams = RightLp
}
//添加布局与组件
battery.addView(mRightLayout)
(clock.parent as ViewGroup).removeView(clock)
mRightLayout!!.addView(clock)
}
}
//时钟居中+图标居左
3 -> {
val collapsedStatusBarFragmentClass =
"com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(
getDefaultClassLoader()
)
collapsedStatusBarFragmentClass.hookAfterMethod(
"onViewCreated",
View::class.java,
Bundle::class.java
) { param ->
val MiuiPhoneStatusBarView: ViewGroup =
param.thisObject.getObjectField("mStatusBar") as ViewGroup
val context: Context = MiuiPhoneStatusBarView.context
val res: Resources = MiuiPhoneStatusBarView.resources
val statusBarId: Int =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val statusBarContentsId: Int =
res.getIdentifier("status_bar_contents", "id", "com.android.systemui")
val systemIconAreaId: Int =
res.getIdentifier("system_icon_area", "id", "com.android.systemui")
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int =
res.getIdentifier(
"phone_status_bar_left_container",
"id",
"com.android.systemui"
)
val fullscreenNotificationIconAreaId: Int =
res.getIdentifier(
"fullscreen_notification_icon_area",
"id",
"com.android.systemui"
)
val statusIconsId: Int =
res.getIdentifier(
"statusIcons",
"id",
"com.android.systemui"
)
val systemIconsId: Int =
res.getIdentifier(
"system_icons",
"id",
"com.android.systemui"
)
val batteryId: Int =
res.getIdentifier(
"battery",
"id",
"com.android.systemui"
)
val notificationIconAreaInnerId: Int =
res.getIdentifier(
"notification_icon_area_inner",
"id",
"com.android.systemui"
)
statusBar = MiuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup =
MiuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfterMethod
val clock: TextView = MiuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup =
MiuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
val fullscreenNotificationIconArea: ViewGroup =
MiuiPhoneStatusBarView.findViewById(fullscreenNotificationIconAreaId)
val systemIconArea: ViewGroup =
MiuiPhoneStatusBarView.findViewById(systemIconAreaId)
val statusIcons: ViewGroup =
MiuiPhoneStatusBarView.findViewById(statusIconsId)
val systemIcons: ViewGroup =
MiuiPhoneStatusBarView.findViewById(systemIconsId)
val battery: ViewGroup =
MiuiPhoneStatusBarView.findViewById(batteryId)
val notificationIconAreaInner: ViewGroup =
MiuiPhoneStatusBarView.findViewById(notificationIconAreaInnerId)
(clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
phoneStatusBarLeftContainer
)
(systemIconArea.parent as ViewGroup).removeView(systemIconArea)
(statusIcons.parent as ViewGroup).removeView(statusIcons)
(systemIcons.parent as ViewGroup).removeView(systemIcons)
(battery.parent as ViewGroup).removeView(battery)
(fullscreenNotificationIconArea.parent as ViewGroup).removeView(
fullscreenNotificationIconArea
)
val mConstraintLayout =
ConstraintLayout(context).also {
it.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
}
mConstraintLayout.addView(fullscreenNotificationIconArea)
mConstraintLayout.addView(battery)
battery.layoutParams = ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also {
it.endToEnd = 0
}
fullscreenNotificationIconArea.layoutParams = ConstraintLayout.LayoutParams(
0,
ConstraintLayout.LayoutParams.MATCH_PARENT
).also {
it.startToEnd = batteryId
it.endToEnd = 0
}
fullscreenNotificationIconArea.layoutDirection = View.LAYOUT_DIRECTION_RTL
//增加一个左对齐布局
mLeftLayout = LinearLayout(context)
val LeftLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mLeftLayout!!.layoutParams = LeftLp
mLeftLayout!!.gravity = Gravity.START or Gravity.CENTER_VERTICAL
//增加一个居中布局
mCenterLayout = LinearLayout(context)
val CenterLp: LinearLayout.LayoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
mCenterLayout!!.layoutParams = CenterLp
mCenterLayout!!.gravity = Gravity.CENTER or Gravity.CENTER_VERTICAL
//增加一个右布局
mRightLayout = LinearLayout(context)
val RightLp: LinearLayout.LayoutParams =
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f)
mRightLayout!!.layoutParams = RightLp
mRightLayout!!.gravity = Gravity.END or Gravity.CENTER_VERTICAL
mLeftLayout!!.addView(phoneStatusBarLeftContainer)
mLeftLayout!!.addView(statusIcons)
statusIcons.layoutDirection = View.LAYOUT_DIRECTION_RTL
mCenterLayout!!.addView(clock)
mRightLayout!!.addView(mConstraintLayout)
fullscreenNotificationIconArea.layoutDirection = View.LAYOUT_DIRECTION_RTL
statusBarContents.addView(mLeftLayout, 0)
statusBarContents.addView(mCenterLayout)
statusBarContents.addView(mRightLayout)
statusBarLeft = statusBar!!.paddingLeft
statusBarTop = statusBar!!.paddingTop
statusBarRight = statusBar!!.paddingRight
statusBarBottom = statusBar!!.paddingBottom
if (XSPUtils.getBoolean("layout_compatibility_mode", false)) {
val customLeftMargin = XSPUtils.getInt("status_bar_left_margin", 0)
if (customLeftMargin != 0) {
statusBarLeft = customLeftMargin
}
val customRightMargin = XSPUtils.getInt("status_bar_right_margin", 0)
if (customRightMargin != 0) {
statusBarRight = customRightMargin
}
updateLayout(context)
}
}
//兼容模式
val phoneStatusBarViewClass =
"com.android.systemui.statusbar.phone.PhoneStatusBarView".findClass(
getDefaultClassLoader()
)
phoneStatusBarViewClass.hookAfterMethod("updateLayoutForCutout") {
if (XSPUtils.getBoolean("layout_compatibility_mode", false)) {
val context = (it.thisObject as ViewGroup).context
updateLayout(context)
}
}
//解决重叠
val miuiCollapsedStatusBarFragmentClass =
"com.android.systemui.statusbar.phone.MiuiCollapsedStatusBarFragment".findClass(
getDefaultClassLoader()
)
miuiCollapsedStatusBarFragmentClass.hookAfterMethod(
"showClock",
Boolean::class.java
) {
val MiuiPhoneStatusBarView =
XposedHelpers.getObjectField(it.thisObject, "mStatusBar") as ViewGroup
val res = MiuiPhoneStatusBarView.resources
val status_bar_ID =
res.getIdentifier("status_bar", "id", "com.android.systemui")
val status_bar = MiuiPhoneStatusBarView.findViewById<ViewGroup>(status_bar_ID)
//非锁屏下整个状态栏布局
val keyguardMgr =
status_bar.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardMgr.isKeyguardLocked) {
status_bar!!.visibility = View.GONE
} else {
status_bar!!.visibility = View.VISIBLE
}
}
}
}
}
fun updateLayout(context: Context) {
private fun updateLayout(context: Context) {
//判断屏幕方向
val mConfiguration: Configuration = context.resources.configuration
if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) {
mLeftLayout!!.setPadding(status_bar_left, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, status_bar_right, 0)
status_bar!!.setPadding(0, status_bar_top, 0, status_bar_bottom)
mLeftLayout!!.setPadding(statusBarLeft, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, statusBarRight, 0)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
} else {
//横屏状态
mLeftLayout!!.setPadding(175, 0, 0, 0)
mRightLayout!!.setPadding(0, 0, 175, 0)
status_bar!!.setPadding(0, status_bar_top, 0, status_bar_bottom)
statusBar!!.setPadding(0, statusBarTop, 0, statusBarBottom)
}
}

View File

@@ -2,15 +2,16 @@ package com.lt2333.simplicitytools.hook.app.systemui
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class StatusBarNetworkSpeedRefreshSpeed :IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod(lpparam.classLoader, "postUpdateNetworkSpeedDelay", Long::class.java) {
object StatusBarNetworkSpeedRefreshSpeed: HookRegister() {
override fun init() {
"com.android.systemui.statusbar.policy.NetworkSpeedController".hookBeforeMethod(getDefaultClassLoader(), "postUpdateNetworkSpeedDelay", Long::class.java) {
hasEnable("status_bar_network_speed_refresh_speed") {
it.args[0] = 1000L
}
}
}
}

View File

@@ -2,23 +2,24 @@ package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.content.Context
import android.content.res.Resources
import android.os.Bundle
import android.os.Handler
import android.provider.Settings
import android.util.AttributeSet
import android.util.TypedValue
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hookAfterConstructor
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.*
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import java.lang.reflect.Method
import java.text.SimpleDateFormat
import java.util.*
class StatusBarTimeCustomization : IXposedHookLoadPackage {
object StatusBarTimeCustomization : HookRegister() {
private val isYear = XSPUtils.getBoolean("status_bar_time_year", false)
private val isMonth = XSPUtils.getBoolean("status_bar_time_month", false)
private val isDay = XSPUtils.getBoolean("status_bar_time_day", false)
@@ -30,31 +31,40 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
private val isPeriod = XSPUtils.getBoolean("status_bar_time_period", true)
private val getClockSize = XSPUtils.getInt("status_bar_clock_size", 0)
private val isOpen = XSPUtils.getBoolean("custom_clock_switch", false)
private val isCenterAlign =
XSPUtils.getBoolean("status_bar_time_double_line_center_align", false)
private val getClockDoubleSize = XSPUtils.getInt("status_bar_clock_double_line_size", 0)
private var now_time: Date? = null
private var nowTime: Date? = null
private var str = ""
@SuppressLint("SetTextI18n")
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
override fun init() {
if (isOpen) {
var c: Context? = null
val miuiClockClass = "com.android.systemui.statusbar.views.MiuiClock".findClass(lpparam.classLoader)
miuiClockClass.hookAfterConstructor(Context::class.java, AttributeSet::class.java, Integer.TYPE) {
val miuiClockClass =
"com.android.systemui.statusbar.views.MiuiClock".findClass(getDefaultClassLoader())
miuiClockClass.hookAfterConstructor(
Context::class.java,
AttributeSet::class.java,
Integer.TYPE
) {
try {
c = it.args[0] as Context
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) != "clock") return@hookAfterConstructor
textV.isSingleLine = false
if (isDoubleLine) {
str = "\n"
var clock_double_line_size = 7F
var clockDoubleLineSize = 7F
if (getClockDoubleSize != 0) {
clock_double_line_size = getClockDoubleSize.toFloat()
clockDoubleLineSize = getClockDoubleSize.toFloat()
}
textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clock_double_line_size)
textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clockDoubleLineSize)
textV.setLineSpacing(0F, 0.8F)
} else {
if (getClockSize != 0) {
val clock_size = getClockSize.toFloat()
textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clock_size)
val clockSize = getClockSize.toFloat()
textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clockSize)
}
}
val d: Method = textV.javaClass.getDeclaredMethod("updateTime")
@@ -62,13 +72,13 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
d.isAccessible = true
d.invoke(textV)
}
class T : TimerTask() {
override fun run() {
Handler(textV.context.mainLooper).post(r)
}
}
if (textV.resources.getResourceEntryName(textV.id) == "clock")
Timer().scheduleAtFixedRate(T(), 1000 - System.currentTimeMillis() % 1000, 1000)
Timer().scheduleAtFixedRate(T(), 1000 - System.currentTimeMillis() % 1000, 1000)
} catch (e: java.lang.Exception) {
}
}
@@ -76,19 +86,40 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
try {
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString(c!!.contentResolver, Settings.System.TIME_12_24)
now_time = Calendar.getInstance().time
textV.text = getDate(c!!, t) + str + getTime(c!!, t)
val t = Settings.System.getString(
c!!.contentResolver,
Settings.System.TIME_12_24
)
val is24 = t == "24"
nowTime = Calendar.getInstance().time
textV.text = getDate(c!!) + str + getTime(c!!, is24)
}
} catch (e: Exception) {
}
}
if (isCenterAlign) {
val collapsedStatusBarFragmentClass =
"com.android.systemui.statusbar.phone.CollapsedStatusBarFragment".findClass(
getDefaultClassLoader()
)
collapsedStatusBarFragmentClass.hookAfterMethod(
"onViewCreated",
View::class.java,
Bundle::class.java
) {
val MiuiPhoneStatusBarView: ViewGroup =
it.thisObject.getObjectField("mStatusBar") as ViewGroup
val res: Resources = MiuiPhoneStatusBarView.resources
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val clock: TextView = MiuiPhoneStatusBarView.findViewById(clockId)
clock.gravity = Gravity.CENTER
}
}
}
}
@SuppressLint("SimpleDateFormat")
private fun getDate(context: Context, t: String): String {
private fun getDate(context: Context): String {
var datePattern = ""
val isZh = isZh(context)
@@ -124,17 +155,17 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
if (!isHideSpace) datePattern = "$datePattern "
}
}
datePattern = SimpleDateFormat(datePattern).format(now_time)
datePattern = SimpleDateFormat(datePattern).format(nowTime)
return datePattern
}
@SuppressLint("SimpleDateFormat")
private fun getTime(context: Context, t: String): String {
private fun getTime(context: Context, t: Boolean): String {
var timePattern = ""
val isZh = isZh(context)
timePattern += if (t == "24") "HH:mm" else "h:mm"
timePattern += if (t) "HH:mm" else "h:mm"
if (isSecond) timePattern += ":ss"
timePattern = SimpleDateFormat(timePattern).format(now_time)
timePattern = SimpleDateFormat(timePattern).format(nowTime)
if (isZh) timePattern = getPeriod(isZh) + timePattern else timePattern += getPeriod(isZh)
timePattern = getDoubleHour() + timePattern
return timePattern
@@ -145,7 +176,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
var period = ""
if (isPeriod) {
if (isZh) {
when (SimpleDateFormat("HH").format(now_time)) {
when (SimpleDateFormat("HH").format(nowTime)) {
"00", "01", "02", "03", "04", "05" -> {
period = "凌晨"
}
@@ -166,7 +197,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
}
}
} else {
period = SimpleDateFormat("a").format(now_time)
period = SimpleDateFormat("a").format(nowTime)
if (!isHideSpace) {
period = " $period"
}
@@ -180,7 +211,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
private fun getDoubleHour(): String {
var doubleHour = ""
if (isDoubleHour) {
when (SimpleDateFormat("HH").format(now_time)) {
when (SimpleDateFormat("HH").format(nowTime)) {
"23", "00" -> {
doubleHour = "子时"
}

View File

@@ -3,12 +3,12 @@ package com.lt2333.simplicitytools.hook.app.systemui
import com.github.kyuubiran.ezxhelper.utils.findMethod
import com.github.kyuubiran.ezxhelper.utils.hookMethod
import com.lt2333.simplicitytools.util.hasEnable
import de.robv.android.xposed.IXposedHookLoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class WaveCharge : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {
object WaveCharge: HookRegister() {
override fun init() {
hasEnable("enable_wave_charge_animation") {
findMethod("com.android.keyguard.charge.ChargeUtils") {
name == "supportWaveChargeAnimation"
@@ -41,4 +41,5 @@ class WaveCharge : IXposedHookLoadPackage {
}
}
}
}

View File

@@ -3,15 +3,16 @@ package com.lt2333.simplicitytools.hook.app.thememanager
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
import com.lt2333.simplicitytools.util.xposed.base.HookRegister
class RemoveAds : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
"com.android.thememanager.basemodule.ad.model.AdInfoResponse".hookBeforeMethod(lpparam.classLoader, "isAdValid", "com.android.thememanager.basemodule.ad.model.AdInfo".findClass(lpparam.classLoader)) {
object RemoveAds : HookRegister() {
override fun init() {
"com.android.thememanager.basemodule.ad.model.AdInfoResponse".hookBeforeMethod(getDefaultClassLoader(), "isAdValid", "com.android.thememanager.basemodule.ad.model.AdInfo".findClass(getDefaultClassLoader())) {
hasEnable("remove_thememanager_ads") {
it.result = false
}
}
}
}

View File

@@ -3,32 +3,38 @@ package com.lt2333.simplicitytools.tile
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
class AllowScreenshots : TileService(){
class AllowScreenshots : TileService() {
val key = "disable_flag_secure"
override fun onClick() {
super.onClick()
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
val prefEditor = pref.edit()
if (pref.getBoolean(key, false)) {
prefEditor.putBoolean(key, false)
qsTile.state = Tile.STATE_INACTIVE
} else {
prefEditor.putBoolean(key, true)
qsTile.state = Tile.STATE_ACTIVE
try {
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
val prefEditor = pref.edit()
if (pref.getBoolean(key, false)) {
prefEditor.putBoolean(key, false)
qsTile.state = Tile.STATE_INACTIVE
} else {
prefEditor.putBoolean(key, true)
qsTile.state = Tile.STATE_ACTIVE
}
prefEditor.commit()
qsTile.updateTile()
} catch (e: SecurityException) {
}
prefEditor.commit()
qsTile.updateTile()
}
override fun onStartListening() {
super.onStartListening()
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
if (pref.getBoolean(key, false)) {
qsTile.state = Tile.STATE_ACTIVE
} else {
qsTile.state = Tile.STATE_INACTIVE
try {
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
if (pref.getBoolean(key, false)) {
qsTile.state = Tile.STATE_ACTIVE
} else {
qsTile.state = Tile.STATE_INACTIVE
}
qsTile.updateTile()
} catch (e: SecurityException) {
}
qsTile.updateTile()
}
}

View File

@@ -9,28 +9,33 @@ class LockMaxFpsTile : TileService() {
override fun onClick() {
super.onClick()
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
val prefEditor = pref.edit()
if (pref.getBoolean(key, false)) {
prefEditor.putBoolean(key, false)
qsTile.state = Tile.STATE_INACTIVE
} else {
prefEditor.putBoolean(key, true)
qsTile.state = Tile.STATE_ACTIVE
try {
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
val prefEditor = pref.edit()
if (pref.getBoolean(key, false)) {
prefEditor.putBoolean(key, false)
qsTile.state = Tile.STATE_INACTIVE
} else {
prefEditor.putBoolean(key, true)
qsTile.state = Tile.STATE_ACTIVE
}
prefEditor.commit()
qsTile.updateTile()
} catch (e: SecurityException) {
}
prefEditor.commit()
qsTile.updateTile()
}
override fun onStartListening() {
super.onStartListening()
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
if (pref.getBoolean(key, false)) {
qsTile.state = Tile.STATE_ACTIVE
} else {
qsTile.state = Tile.STATE_INACTIVE
try {
val pref = getSharedPreferences("config", MODE_WORLD_READABLE)
if (pref.getBoolean(key, false)) {
qsTile.state = Tile.STATE_ACTIVE
} else {
qsTile.state = Tile.STATE_INACTIVE
}
qsTile.updateTile()
} catch (e: SecurityException) {
}
qsTile.updateTile()
}
}

View File

@@ -0,0 +1,26 @@
package com.lt2333.simplicitytools.util
import android.content.Context
object SystemProperties {
operator fun get(context: Context, key: String?): String? {
var ret = ""
try {
val cl = context.classLoader
val SystemProperties = cl.loadClass("android.os.SystemProperties")
//参数类型
val paramTypes: Array<Class<*>?> = arrayOfNulls(1)
paramTypes[0] = String::class.java
val get = SystemProperties.getMethod("get", *paramTypes)
//参数
val params = arrayOfNulls<Any>(1)
params[0] = key
ret = get.invoke(SystemProperties, *params) as String
} catch (iAE: IllegalArgumentException) {
throw iAE
} catch (e: Exception) {
ret = ""
}
return ret
}
}

View File

@@ -25,6 +25,13 @@ object XSPUtils {
}
return prefs.getFloat(key, defValue)
}
fun getString(key: String, defValue: String): String? {
if (prefs.hasFileChanged()) {
prefs.reload()
}
return prefs.getString(key, defValue)
}
}
inline fun hasEnable(key: String, default: Boolean = false, noinline extraCondition: (() -> Boolean)? = null, crossinline block: () -> Unit) {

View File

@@ -0,0 +1,31 @@
package com.lt2333.simplicitytools.util.xposed
import com.github.kyuubiran.ezxhelper.init.EzXHelperInit
import com.github.kyuubiran.ezxhelper.utils.Log.logexIfThrow
import com.lt2333.simplicitytools.util.xposed.base.AppRegister
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.IXposedHookZygoteInit
import de.robv.android.xposed.callbacks.XC_LoadPackage
abstract class EasyXposedInit: IXposedHookLoadPackage, IXposedHookZygoteInit {
private lateinit var packageParam: XC_LoadPackage.LoadPackageParam
abstract val registeredApp: List<AppRegister>
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) {
packageParam = lpparam!!
registeredApp.forEach { app ->
if (app.packageName == lpparam.packageName && (lpparam.processName in app.processName || app.processName.isEmpty())) {
EzXHelperInit.initHandleLoadPackage(lpparam)
EzXHelperInit.setLogTag(app.logTag)
EzXHelperInit.setToastTag(app.logTag)
runCatching { app.handleLoadPackage(lpparam) }.logexIfThrow("Failed call handleLoadPackage, package: ${app.packageName}")
}
}
}
override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam?) {
EzXHelperInit.initZygote(startupParam!!)
}
}

View File

@@ -0,0 +1,30 @@
package com.lt2333.simplicitytools.util.xposed.base
import com.github.kyuubiran.ezxhelper.utils.Log
import com.github.kyuubiran.ezxhelper.utils.Log.logexIfThrow
import de.robv.android.xposed.IXposedHookInitPackageResources
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_InitPackageResources
import de.robv.android.xposed.callbacks.XC_LoadPackage
abstract class AppRegister: IXposedHookLoadPackage {
abstract val packageName: String
abstract val processName: List<String>
abstract val logTag: String
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {}
protected fun autoInitHooks(lpparam: XC_LoadPackage.LoadPackageParam, vararg hook: HookRegister) {
hook.forEach {
runCatching {
if (it.isInit) return@forEach
it.setLoadPackageParam(lpparam)
it.init()
it.isInit = true
Log.i("Inited hook: ${it.javaClass.simpleName}")
}.logexIfThrow("Failed init hook: ${it.javaClass.simpleName}")
}
}
}

View File

@@ -0,0 +1,25 @@
package com.lt2333.simplicitytools.util.xposed.base
import de.robv.android.xposed.callbacks.XC_LoadPackage
abstract class HookRegister {
private lateinit var lpparam: XC_LoadPackage.LoadPackageParam
var isInit: Boolean = false
abstract fun init()
fun setLoadPackageParam(loadPackageParam: XC_LoadPackage.LoadPackageParam) {
lpparam = loadPackageParam
}
protected fun getLoadPackageParam(): XC_LoadPackage.LoadPackageParam {
if (!this::lpparam.isInitialized) {
throw RuntimeException("lpparam should be initialized")
}
return lpparam
}
protected fun getDefaultClassLoader(): ClassLoader {
return getLoadPackageParam().classLoader
}
}

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
</resources>

View File

@@ -1,155 +1,213 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="performance">Performence</string>
<string name="lock_max_fps">Lock the current refresh rate upper limit</string>
<string name="ui">Interface</string>
<string name="delete_on_post_notification">Remove display over notification</string>
<string name="delete_on_post_notification_summary">Remove \"This app is displaying over other apps\" notification</string>
<string name="other">Other</string>
<string name="disable_flag_secure">Allow screenshot</string>
<string name="disable_flag_secure_summary">Allow screenshot in software that does not allow to\nSupport adding drop-down quick setting on Control center for security</string>
<string name="home">Home</string>
<string name="home_time">Always display Home screen clock</string>
<string name="reboot_host">Restart all scope</string>
<string name="reboot">Reboot System</string>
<string name="performance">Rendimiento</string>
<string name="lock_max_fps">Bloquear la tasa actual de refresco por arriba del límite</string>
<string name="ui">Interfaz</string>
<string name="delete_on_post_notification">Eliminar notificación de mostrar encima</string>
<string name="delete_on_post_notification_summary">Eliminar la notificación \"Está aplicación se está mostrando sobre otras aplicaciones\"</string>
<string name="other">Otro</string>
<string name="disable_flag_secure">Permitir capturas de pantalla</string>
<string name="disable_flag_secure_summary">Permite realizar capturas de pantalla en aplicaciones que no lo permiten\nPor seguridad permite añadir un ajuste rápido en el Centro de Control</string>
<string name="home">Inicio</string>
<string name="home_time">Mostrar siempre el reloj en la pantalla de inicio</string>
<string name="reboot_host">Reinicia todo el ámbito</string>
<string name="reboot">Reiniciar el sistema</string>
<!--Status bar icons-->
<string name="status_bar_icon">Status bar icons</string>
<string name="hide_no_sim_icon">Hide No SIM icon</string>
<string name="hide_sim_one_icon">Hide SIM Card 1 icon</string>
<string name="hide_sim_two_icon">Hide SIM Card 2 icon</string>
<string name="hide_vpn_icon">Hide VPN icon</string>
<string name="hide_airplane_icon">Hide Airplane mode icon</string>
<string name="hide_wifi_icon">Hide WIFI icon</string>
<string name="hide_bluetooth_icon">Hide Bluetooth icon</string>
<string name="hide_volume_zen_icon">Hide Sound and Do Not Disturb icon</string>
<string name="hide_alarm_icon">Hide Alarm icon</string>
<string name="hide_hotspot_icon">Hide Portable hotspot icon</string>
<string name="hide_headset_icon">Hide Headset icon</string>
<string name="hide_bluetooth_battery_icon">hide Bluetooth battery icon</string>
<string name="hide_big_hd_icon">Hide big HD icon</string>
<string name="hide_small_hd_icon">Hide small HD icon</string>
<string name="hide_hd_no_service_icon">Hide HD No Service icon</string>
<string name="about">About</string>
<string name="about_module">About Module</string>
<string name="verison">Version</string>
<string name="dev_coolapk">Author Coolapk</string>
<string name="opensource">Open Source Repository</string>
<string name="github_url">Welcome more developers to participate in the development</string>
<string name="issues">Feedback/Proposal</string>
<string name="issues_url">Click to view GitHub Issues</string>
<string name="xposeddescription">Customization tool for MIUI13(Android 12)</string>
<string name="statusbar">Status bar</string>
<string name="status_bar_time_seconds">Display seconds</string>
<string name="status_bar_network_speed_refresh_speed">Network speed refresh in seconds</string>
<string name="remove_the_maximum_number_of_notification_icons">Remove the maximum number of notification icons</string>
<string name="main_switch">Module main switch</string>
<string name="hide_gps_icon">Hide GPS icon</string>
<string name="hide_status_bar_network_speed_second">Hide network speed (/s) units</string>
<string name="menu">Menu</string>
<string name="Tips">Tips</string>
<string name="skip_waiting_time">Skip 5/10 second warning time</string>
<string name="unlock_unlimited_cropping">Unlock unlimited cropping pictures/screenshots</string>
<string name="hide_slave_wifi_icon">Hide WIFI secondary icon</string>
<string name="HideLauncherIcon">Hide Launcher icon</string>
<string name="hide_battery_percentage_icon">Hide battery (%)</string>
<string name="hide_battery_icon">Hide battery icon</string>
<string name="status_bar_clock_format">Status bar clock format</string>
<string name="status_bar_time_year">Display year</string>
<string name="status_bar_time_month">Display month</string>
<string name="status_bar_time_day">Display date</string>
<string name="status_bar_time_week">Display day</string>
<string name="status_bar_time_hide_space">Hide space</string>
<string name="allow_screenshots">Allow screenshot</string>
<string name="lock_max">Lock current limit</string>
<string name="status_bar_time_double_hour">Display chinese twelve hour</string>
<string name="custom_clock_switch">Custom Clock Switch</string>
<string name="status_bar_time_period">Display AM/PM</string>
<string name="status_bar_time_double_line">Dual row</string>
<string name="status_bar_clock_size">Clock size (0: do not change)</string>
<string name="status_bar_clock_double_line_size">Dual row size (0: do not change)</string>
<string name="matters_needing_attention">Feature is not working? </string>
<string name="status_bar_icon">Iconos de la barra de estado</string>
<string name="hide_no_sim_icon">Ocultar icono sin SIM</string>
<string name="hide_sim_one_icon">Ocultar icono SIM 1</string>
<string name="hide_sim_two_icon">Ocultar icono SIM 2</string>
<string name="hide_vpn_icon">Ocultar icono VPN</string>
<string name="hide_airplane_icon">Ocultar icono modo fuera de línea</string>
<string name="hide_wifi_icon">Ocultar icono WIFI</string>
<string name="hide_bluetooth_icon">Ocultar icono Bluetooth</string>
<string name="hide_volume_zen_icon">Ocultar icono de Sonido y No Molestar</string>
<string name="hide_alarm_icon">Ocultar icono de alarma</string>
<string name="hide_hotspot_icon">Ocultar icono de punto de accesos inalámbrico</string>
<string name="hide_headset_icon">Ocultar icono de audífonos</string>
<string name="hide_bluetooth_battery_icon">Ocultar icono de batería de Bluetooth</string>
<string name="hide_big_hd_icon">Ocultar icono grande HD</string>
<string name="hide_small_hd_icon">Ocultar icono pequeño HD</string>
<string name="hide_hd_no_service_icon">Ocultar icono sin servicio HD</string>
<string name="about">Acerca de</string>
<string name="about_module">Acerca del Módulo</string>
<string name="verison">Versión</string>
<string name="dev_coolapk">Autor Coolapk</string>
<string name="opensource">Repositorio de Código Abierto</string>
<string name="github_url">Más desarrolladores están invitados a participar en el proyecto</string>
<string name="issues">Comentarios/Sugerencias</string>
<string name="issues_url">Clic para ver errores en GitHub</string>
<string name="xposeddescription">Herramienta de personalización para MIUI13 (Android 12)</string>
<string name="statusbar">Barra de estado</string>
<string name="status_bar_time_seconds">Mostrar segundos</string>
<string name="status_bar_network_speed_refresh_speed">La velocidad de red se actualiza en segundos</string>
<string name="remove_the_maximum_number_of_notification_icons">Eliminar el número máximo de iconos de notificaciones</string>
<string name="main_switch">Interruptor principal del módulo</string>
<string name="hide_gps_icon">Ocultar icono GPS</string>
<string name="hide_status_bar_network_speed_second">Ocultar unidad (/s) en velocidad de red</string>
<string name="menu">Menú</string>
<string name="Tips">Consejos</string>
<string name="skip_waiting_time">Saltar tiempo de advertencia de 5/10 segundos</string>
<string name="unlock_unlimited_cropping">Elimina la restricción de recorte en imágenes/capturas de pantalla</string>
<string name="hide_slave_wifi_icon">Ocultar icono de WIFI secundario</string>
<string name="HideLauncherIcon">Esconder el icono del Launcher</string>
<string name="hide_battery_percentage_icon">Esconder la batería (%)</string>
<string name="hide_battery_icon">Ocultar icono de batería</string>
<string name="status_bar_clock_format">Formato de reloj de la barra de estado</string>
<string name="status_bar_time_year">Mostrar año</string>
<string name="status_bar_time_month">Mostrar mes</string>
<string name="status_bar_time_day">Mostrar fecha</string>
<string name="status_bar_time_week">Mostrar día</string>
<string name="status_bar_time_hide_space">Ocultar espacio</string>
<string name="allow_screenshots">Permitir captura de pantalla</string>
<string name="lock_max">Bloquear límite actual</string>
<string name="status_bar_time_double_hour">Mostrar doce horas Chino</string>
<string name="custom_clock_switch">Interruptor de reloj personalizado</string>
<string name="status_bar_time_period">Mostrar AM/PM</string>
<string name="status_bar_time_double_line">Fila dual</string>
<string name="status_bar_clock_size">Tamaño del reloj (0: no cambiar)</string>
<string name="status_bar_clock_double_line_size">Tamaño de la fila dual (0: no cambiar)</string>
<string name="matters_needing_attention">¿Alguna característica no funciona? </string>
<string name="Done">OK</string>
<string name="about_module_summary">View module related information</string>
<string name="contributor_list">Open source repository contributor list</string>
<string name="developer">Developer</string>
<string name="thank_list">Thanks list</string>
<string name="third_party_open_source_statement">Third Party Open Source Statement</string>
<string name="corepacth">Remove restrictions</string>
<string name="corepacth_summary">Support downgrade/different signature/unsigned installation</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Prevent recovery of battery optimization whitelist</string>
<string name="failed_after_restart">It will be restored after system restart</string>
<string name="battery_optimization">Battery optimization</string>
<string name="battery_optimization_summary">Quickly open the battery optimization menu hidden by MIUI</string>
<string name="remove_small_window_restrictions">Force small windows</string>
<string name="app_coolapk_url">Come and give us five-star review</string>
<string name="app_coolapk_url_summary">This can make us more discoverable</string>
<string name="qq_channel">Join the official QQ channel</string>
<string name="tg_channel">Join the official TG channel</string>
<string name="tg_channel_summary">You can enter the chat group on the channel page</string>
<string name="discussions">Discussions</string>
<string name="remove_small_window_restrictions_summary">Ignore system blacklist and software prohibition of small windows</string>
<string name="remove_the_left_side_of_the_lock_screen">Remove the lock screen side panel</string>
<string name="remove_lock_screen_camera">Remove the lock screen camera feature</string>
<string name="only_official_default_themes_are_supported">Only official default themes are supported</string>
<string name="lock_one_hundred">Set 100 points on Security app</string>
<string name="scope">Scope</string>
<string name="scope_android">System Framework</string>
<string name="scope_systemui">SystemUI</string>
<string name="scope_miuihome">Home screen</string>
<string name="scope_other">Others</string>
<string name="status_bar_network_speed_refresh_speed_summary">Change the refresh frequency of the status bar network speed component to 1s</string>
<string name="hide_battery_percentage_icon_summary">Battery percentage display feature must be turned on by yourself</string>
<string name="hide_status_bar_network_speed_second_summary">Hide the (/s) units of the status bar network speed component</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Remove the limit of 3 notifications on the status bar</string>
<string name="scope_systemui_summary">Customize system interface, status bar, lock screen, etc.</string>
<string name="scope_android_summary">After enabling the module for the first time or the module is updated, the feature here will take effect after restarting the system</string>
<string name="scope_other_summary">Security app, Gallery editor, Battery and performance, etc.</string>
<string name="scope_powerkeeper">Battery and performance</string>
<string name="scope_securitycenter">Security app</string>
<string name="scope_mediaeditor">Gallery Editor</string>
<string name="home_time_summary">When turned on, the clock will not be hidden on the status bar even if there is a clock widget</string>
<string name="skip_waiting_time_summary">Ignore the waiting time by MIUI when eanbling USB debugging, unknown sources and accessibility</string>
<string name="lock_one_hundred_summary">Set the score on Security app to 100 points and block the Optimize button</string>
<string name="unlock_unlimited_cropping_summary">Ignore the minimum limit on image cropping by MIUI</string>
<string name="hide_wifi_activity_icon">Hide WIFI activity icon</string>
<string name="hide_mobile_activity_icon">Hide mobile activity icon</string>
<string name="hide_mobile_type_icon">Hide mobile type icon</string>
<string name="show_weather_main_switch">Show Weather - Main Switch</string>
<string name="lock_screen">Lock screen</string>
<string name="notification_center">Notification Center</string>
<string name="show_city">Show the city</string>
<string name="lock_max_fps_summary">Support adding drop-down control center quick setting for real-time switching</string>
<string name="control_center">Control Center</string>
<string name="control_center_weather_summary">The Mi Smart Hub version is not currently supported</string>
<string name="not_support">You seem to be using an outdated version of LSPosed or LSPosed is not active, please update LSPosed or activate it and try again.</string>
<string name="matters_needing_attention_context">It is recommended to restart the phone after the first activation or update\nMost of changes require restart in the top right corner to take effect</string>
<string name="are_you_sure_reboot">Are you sure to reboot?</string>
<string name="cancel">Cancel</string>
<string name="are_you_sure_reboot_scope">Are you sure to reboot all scope?</string>
<string name="hide_battery_charging_icon">Hide charging icon</string>
<string name="hide_wifi_standard_icon">Hide WIFI standard icon</string>
<string name="status_bar_time_center">Status bar time center</string>
<string name="status_bar_layout_summary">More status bar layouts are under development</string>
<string name="status_bar_layout">Status bar layout</string>
<string name="layout_compatibility_mode">Compatibility mode</string>
<string name="left_margin">Left margin (0: Auto)</string>
<string name="right_margin">Right margin (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Make the left and right hole screen can be displayed normally</string>
<string name="remove_macro_blacklist">Remove game macro blacklist</string>
<string name="hide_network_speed_splitter">Hide network speed splitter</string>
<string name="updater">Updater</string>
<string name="remove_ota_validate">*Remove OTA validate [LAB]</string>
<string name="remove_ota_validate_summary">- Only support VAB series use, please do not open other series.\n- No need for internal testing qualification to flash into the full internal testing package.\n- Those who have internal testing permission will not be able to receive internal testing updates, and can be used to block system updates.\n- After cross-version type upgrade, it is recommended to clear data.\n- Unofficial ROM usage is not supported.</string>
<string name="settings">Settings</string>
<string name="show_notification_importance">Show notification importance</string>
<string name="show_notification_importance_summary">Show notification importance settings which are hidden in MIUI 12 and later versions</string>
<string name="remove_ad">Remove ads</string>
<string name="remove_thememanager_ads">Remove ads for theme manager</string>
<string name="battery_life_function">Battery page shows the current temperature</string>
<string name="enable_wave_charge_animation">Enable wave charge animation</string>
<string name="max_wallpaper_scale">Max wallpaper scale</string>
<string name="def">"Default: "</string>
<string name="current">Current:</string>
<string name="participate_in_translation">Participate in translation</string>
<string name="participate_in_translation_summary">Help us translate the app into your language</string>
<string name="about_module_summary">Ver información relacionada con el módulo</string>
<string name="contributor_list">Lista de colaboradores del repositorio de código abierto</string>
<string name="developer">Desarrollador</string>
<string name="thank_list">Agradecimientos</string>
<string name="third_party_open_source_statement">Declaración de Código Abierto de Terceros</string>
<string name="corepacth">Eliminar restricciones</string>
<string name="corepacth_summary">Permite instalar versiones anteriores/con firma diferente/sin firma</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Evita la recuperación de la lista de blanca de optimización de batería</string>
<string name="failed_after_restart">Se restaurará después del reinicio del sistema</string>
<string name="battery_optimization">Optimización de la batería</string>
<string name="battery_optimization_summary">Abre rápidamente el menú oculto por MIUI de optimización de batería</string>
<string name="remove_small_window_restrictions">Fuerza ventanas pequeñas</string>
<string name="app_coolapk_url">Ayúdanos con una reseña de cinco estrellas</string>
<string name="app_coolapk_url_summary">Esto hará que más personas nos encuentren</string>
<string name="qq_channel">Únete al canal oficial de QQ</string>
<string name="tg_channel">Únete al canal oficial de TG</string>
<string name="tg_channel_summary">Pues entrar al grupo de chat desde la página del canal</string>
<string name="discussions">Discusiones</string>
<string name="remove_small_window_restrictions_summary">Ignorar la lista negra del sistema y bloqueo de software para ventanas pequeñas</string>
<string name="remove_the_left_side_of_the_lock_screen">Remueve el panel lateral de la pantalla de bloqueo</string>
<string name="remove_lock_screen_camera">Remueve el acceso a la cámara en la pantalla de bloqueo</string>
<string name="only_official_default_themes_are_supported">Solo temas oficiales por defecto son soportados</string>
<string name="lock_one_hundred">Estable 100 puntos en la aplicación de Seguridad</string>
<string name="scope">Ámbito</string>
<string name="scope_android">Framework del sistema</string>
<string name="scope_systemui">UI del Sistema</string>
<string name="scope_miuihome">Pantalla de inicio</string>
<string name="scope_other">Otros</string>
<string name="status_bar_network_speed_refresh_speed_summary">Cambia la frecuencia de actualización de la velocidad de red de la barra de estado a 1 s</string>
<string name="hide_battery_percentage_icon_summary">La función de porcentaje de batería debe de ser activada manualmente</string>
<string name="hide_status_bar_network_speed_second_summary">Ocultar la unidad (/s) de la velocidad de red en la barra de estado</string>
<string name="remove_the_maximum_number_of_notification_icons_summary">Eliminar el límite de 3 notificaciones en la barra de estado</string>
<string name="scope_systemui_summary">Personaliza la interfaz del sistema, barra de estado, pantalla de bloqueo, etc.</string>
<string name="scope_android_summary">Después de activar el módulo por primera vez o al actualizarlo, los cambios serán aplicados después de reiniciar el sistema</string>
<string name="scope_other_summary">App de seguridad, Editor de galería, Batería y rendimiento, etc.</string>
<string name="scope_powerkeeper">Batería y rendimiento</string>
<string name="scope_securitycenter">App de seguridad</string>
<string name="scope_mediaeditor">Editor de Galería</string>
<string name="home_time_summary">Cuando se activa, el reloj no se ocultará en la barra de estado incluso si hay un widget de reloj</string>
<string name="skip_waiting_time_summary">Ignora el tiempo de espera de MIUI cuando se habilita la depuración USB, fuentes desconocidas y accesibilidad</string>
<string name="lock_one_hundred_summary">Establecer la puntuación de la app de Seguridad en 100 puntos y bloquea el botón de Optimización</string>
<string name="unlock_unlimited_cropping_summary">Ignorar el límite mínimo de recorte de imagen por MIUI</string>
<string name="hide_wifi_activity_icon">Ocultar icono de actividad de WIFI</string>
<string name="hide_mobile_activity_icon">Ocultar icono de actividad red móvil</string>
<string name="hide_mobile_type_icon">Ocultar icono tipo de red móvil</string>
<string name="show_weather_main_switch">Mostrar Tiempo - Interruptor Principal</string>
<string name="lock_screen">Pantalla de bloqueo</string>
<string name="notification_center">Centro de Notificaciones</string>
<string name="show_city">Mostrar la ciudad</string>
<string name="lock_max_fps_summary">Permite añadir un mosaico de acceso rápido en el centro de control para un cambio rápido</string>
<string name="control_center">Centro de Control</string>
<string name="control_center_weather_summary">Esta versión de Mi Smart Hub no es compatible</string>
<string name="not_support">Al parecer estás usando una versión antigua de LSPosed o LSPosed no está activo, por favor actualiza LSPosed o actívalo e intenta de nuevo.</string>
<string name="matters_needing_attention_context">Se recomienda reiniciar el teléfono después de la primera activación o al actualizarla\nLa mayoría de los cambios requieren un reinicio desde la esquina superior derecha para que surtan efecto</string>
<string name="are_you_sure_reboot">¿Está seguro de reiniciar?</string>
<string name="cancel">Cancelar</string>
<string name="are_you_sure_reboot_scope">¿Está seguro de reiniciar todo el ámbito?</string>
<string name="hide_battery_charging_icon">Ocultar el icono de carga</string>
<string name="hide_wifi_standard_icon">Ocultar el icono estándar de WIFI</string>
<string name="status_bar_time_center">Centrar el reloj en la barra de estado</string>
<string name="status_bar_layout_summary">Más diseños para la barra de estado están en desarrollo</string>
<string name="status_bar_layout">Diseño de la barra de estado</string>
<string name="layout_compatibility_mode">Modo de compatibilidad</string>
<string name="left_margin">Margen izquierdo (0: Auto)</string>
<string name="right_margin">Margen derecho (0: Auto)</string>
<string name="layout_compatibility_mode_summary">Hace que los agujeros izquierdo y derecho de la pantalla se puedan mostrar normalmente</string>
<string name="remove_macro_blacklist">Remueve la lista negra de game macro</string>
<string name="hide_network_speed_splitter">Remover el divisor de la velocidad de red</string>
<string name="updater">Actualizador</string>
<string name="remove_ota_validate">*Remueve validación de OTA [LAB]</string>
<string name="remove_ota_validate_summary">- Sólo soporta series que usen VAB, por favor no use en otras series.\n- No se requiere aplicar para pruebas internas para flashear los paquetes completos de éstos.\n- Para aquellos que cuentan con permisos, ya no serán capaces de recibir actualizaciones de pruebas internas, y se podrá usar para bloquear actualizaciones del sistema.\n Después de actualizar entre versiones diferentes, se recomienda borrar datos.\n- ROM no oficiales no están soportadas.</string>
<string name="settings">Configuración</string>
<string name="show_notification_importance">Mostrar importancia de notificaciones</string>
<string name="show_notification_importance_summary">Mostrar configuración de importancia de notificación que está oculto en MIUI 12 y versiones posteriores</string>
<string name="remove_ad">Remover publicidad</string>
<string name="remove_thememanager_ads">Remueve publicidad del gestor de Temas</string>
<string name="battery_life_function">La página de batería muestra la temperatura actual</string>
<string name="enable_wave_charge_animation">Activar la animación de carga de onda</string>
<string name="max_wallpaper_scale">Escala máxima de fondo de pantalla</string>
<string name="def">"Predeterminado: "</string>
<string name="current">Actual:</string>
<string name="participate_in_translation">Participa en la traducción</string>
<string name="participate_in_translation_summary">Ayúdanos a traducir la app en tu idioma</string>
<string name="lock_screen_charging_current">Mostrar la información de corriente durante la carga</string>
<string name="current_current">Corriente de carga</string>
<string name="remove_open_app_confirmation_popup">Remover popup de inicio en cadena</string>
<string name="remove_open_app_confirmation_popup_summary">Eliminar ventana de inicio en cadena \"Permitir XXX abrir XXX\"</string>
<string name="hide_volume_icon">Ocultar icono de volumen</string>
<string name="hide_zen_icon">Ocultar icono ZEN</string>
<string name="hide_icon">Ocultar Iconos</string>
<string name="double_tap_to_sleep">Doble toque para bloquear</string>
<string name="home_double_tap_to_sleep_summary">Doble toque en espacio en blanco para bloquear</string>
<string name="old_quick_settings_panel">Panel de ajustes rápido antiguo</string>
<string name="old_qs_custom_switch">Filas y columnas personalizadas</string>
<string name="qs_custom_columns_unexpanded">Columnas (contraídas)</string>
<string name="qs_custom_rows">Filas</string>
<string name="qs_custom_columns">Columnas</string>
<string name="qs_custom_rows_horizontal">Filas (horizontal)</string>
<string name="status_bar_dual_row_network_speed">Velocidad de red en fila dual</string>
<string name="status_bar_dual_row_network_speed_summary">Mostrar velocidad de subida y bajada</string>
<string name="status_bar_network_speed">Velocidad de red en barra de estado</string>
<string name="status_bar_network_speed_dual_row_size">Tamaño de fila dual (0: no cambiar)</string>
<string name="status_bar_network_speed_dual_row_icon">Icono de fila dual</string>
<string name="none">Ninguno</string>
<string name="status_bar_network_speed_dual_row_gravity">Alineación de icono en fila dual</string>
<string name="left">Izquierda</string>
<string name="right">Derecha</string>
<string name="big_mobile_type_icon">Icono grande de red móvil</string>
<string name="can_notification_slide">Hacer que todas las notificaciones puedan deslizarse hacia una ventana pequeña</string>
<string name="battery_percentage_font_size">Tamaño de la fuente del porcentaje de batería</string>
<string name="zero_do_no_change">0: sin cambios</string>
<string name="big_mobile_type_icon_size">Tamaño del icono red móvil grande</string>
<string name="big_mobile_type_icon_bold">Icono red móvil grande en negrita</string>
<string name="big_mobile_type_icon_up_and_down_position">Posición arriba y abajo del icono red móvil grande</string>
<string name="input_error">Error de entrada</string>
<string name="range">Rango: </string>
<string name="big_mobile_type_icon_left_and_right_margins">Margen izquierdo y derecho del icono de red móvil grande</string>
<string name="cast">Transmitir</string>
<string name="force_support_send_app">Forzar que todas las apps soporten abrir en otro dispositivo</string>
<string name="status_bar_time_double_line_center_align">Alinear al centro fila dual</string>
<string name="default1">Por defecto</string>
<string name="clock_center">Reloj centrado</string>
<string name="clock_right">Reloj a la derecha</string>
<string name="status_bar_layout_mode">Modo de diseño de barra de estado</string>
<string name="clock_center_and_icon_left">Centrar reloj e icono a la izquierda</string>
<string name="maximum_number_of_notification_icons">Número máximo de iconos de notificación</string>
<string name="maximum_number_of_notification_dots">Número máximo de puntos de notificaciones</string>
<string name="custom_mobile_type_text">Texto red móvil personalizado</string>
<string name="custom_mobile_type_text_switch">Interruptor texto red móvil personalizado</string>
<string name="downgr">Permitir volver a la versión anterior</string>
<string name="downgr_summary">Permitir volver a la versión anterior de la aplicación.</string>
<string name="authcreak">Deshabilitar verificación de digest</string>
<string name="authcreak_summary">Permite instalar las apps después de modificar el archivo apk (ignorar error de digest inválido).</string>
<string name="digestCreak">Deshabilitar comparación de firmas</string>
<string name="digestCreak_summary">Permitir reinstalar apps con firmas diferentes.</string>
<string name="UsePreSig">Usar firmas instaladas</string>
<string name="UsePreSig_summary">Usar siempre las firmas de las aplicaciones instaladas cuando se instale una.\nEsto es extremadamente&lt;b&lt;peligroso&lt;/b&gt;.\n¡Habilitar únicamente cuando sea necesario!</string>
<string name="enhancedMode">Modo mejorado</string>
<string name="enhancedMode_summary">Pasar algunas validaciones en la aplicación</string>
<string name="rear_display">Pantalla trasera (11Ultra)</string>
<string name="lock_screen_clock_display_seconds">Mostrar segundos en el reloj</string>
</resources>

Some files were not shown because too many files have changed in this diff Show More