diff --git a/README.md b/README.md index 03b12057c..4fe685ce4 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ # HyperCeiler -### Make HyperOS/MIUI Great Again! +### Make HyperOS Great Again! 简体中文  |  [English](/README_en-US.md)  |  [Português (Brasil)](/README_pt-BR.md) @@ -12,15 +12,13 @@ ## 当前支持的版本 -Android 13-15 的 MIUI 和 HyperOS - -> 注:Android 13 已基本停止维护,仅提供临时支持,不再接受反馈 +Android 14-15 的 HyperOS ## 使用前说明 请在 [LSPosed](https://github.com/LSPosed/LSPosed/releases) 中启用 HyperCeiler, 然后在 HyperCeiler 应用内启用对应的功能,重启作用域 (需要 Root 权限); -本模块不支持 `修改较多的第三方 MIUI/Xiaomi HyperOS ROM`、`修改较多的系统软件`,以及`部分国际 MIUI/Xiaomi HyperOS ROM`; +本模块不支持 `修改较多的第三方 Xiaomi HyperOS ROM`、`修改较多的系统软件`,以及`部分国际 Xiaomi HyperOS ROM`; 目前 HyperCeiler 是基于 Android 15 的 Xiaomi HyperOS 2.0 的手机端设备进行适配,覆盖不是很完整,需要不断测试和改进 diff --git a/README_en-US.md b/README_en-US.md index cfe945ae7..920957346 100644 --- a/README_en-US.md +++ b/README_en-US.md @@ -4,7 +4,7 @@ # HyperCeiler -### Make HyperOS/MIUI Great Again! +### Make HyperOS Great Again! [简体中文](/README.md)  |  English  |  [Português (Brasil)](/README_pt-BR.md) @@ -12,15 +12,13 @@ ## Currently supported versions -MIUI and HyperOS for Android 13-15 - -> Note: Android 13 has basically stopped maintenance, only provides temporary support, and no longer accepts feedback. +HyperOS for Android 14-15 ## Pre-use instructions Please enable HyperCeiler in [LSPosed](https://github.com/LSPosed/LSPosed/releases), then enable the corresponding feature in the HyperCeiler app and restart the scope (root access required). -This module does not support `third-party MIUI/Xiaomi HyperOS ROMs with a lot of modifications`, `system software with a lot of modifications`, and some `international MIUI/Xiaomi HyperOS ROMs`. +This module does not support `third-party Xiaomi HyperOS ROMs with a lot of modifications`, `system software with a lot of modifications`, and some `international Xiaomi HyperOS ROMs`. Currently, HyperCeiler is adapted for Xiaomi HyperOS 2.0 mobile devices based on Android 15. The coverage isn't very comprehensive and requires ongoing testing and improvements. diff --git a/README_pt-BR.md b/README_pt-BR.md index 5c7e8d5d8..02cd9d43c 100644 --- a/README_pt-BR.md +++ b/README_pt-BR.md @@ -4,7 +4,7 @@ # HyperCeiler -### Torne o HyperOS/MIUI ótimo novamente! +### Torne o HyperOS ótimo novamente! [简体中文](/README.md)  |  [English](/README_en-US.md)  |  Português (Brasil) @@ -12,15 +12,13 @@ ## Versões atualmente suportadas -MIUI e HyperOS para Android 13-15 - -> Observação: O Android 13 praticamente encerrou a manutenção, oferecendo apenas suporte temporário e não aceitando mais feedback. +HyperOS para Android 13-15 ## Instruções de pré-uso Por favor, ative o HyperCeiler no [LSPosed](https://github.com/LSPosed/LSPosed/releases), em seguida, ative o recurso correspondente no app HyperCeiler e reinicie o escopo (necessário root). -Este módulo não suporta `ROM MIUI/Xiaomi HyperOS de terceiros com muitas modificações`, `software de sistema com muitas modificações` e algumas `ROM MIUI/Xiaomi HyperOS internacionais`. +Este módulo não suporta `ROM Xiaomi HyperOS de terceiros com muitas modificações`, `software de sistema com muitas modificações` e algumas `ROM Xiaomi HyperOS internacionais`. Atualmente, o HyperCeiler está adaptado para dispositivos móveis Xiaomi HyperOS 2.0 baseados em Android 15. A cobertura não é muito abrangente e requer testes e melhorias contínuas. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 331c96504..ec311d9b0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -90,11 +90,11 @@ fun loadPropertiesFromFile(fileName: String): Properties? { android { namespace = "com.sevtinge.hyperceiler" compileSdk = 35 - buildToolsVersion = "35.0.0" + buildToolsVersion = "35.0.1" defaultConfig { applicationId = namespace - minSdk = 33 + minSdk = 34 targetSdk = 35 versionCode = getVersionCode() versionName = "2.5.156" diff --git a/app/src/main/java/com/sevtinge/hyperceiler/XposedInit.java b/app/src/main/java/com/sevtinge/hyperceiler/XposedInit.java index 1386d46f6..1aa196428 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/XposedInit.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/XposedInit.java @@ -23,10 +23,8 @@ import static com.sevtinge.hyperceiler.utils.devicesdk.MiDeviceAppUtilsKt.isPad; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getAndroidVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getHyperOSVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getMiuiVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isAndroidVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isHyperOSVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMiuiVersion; import static com.sevtinge.hyperceiler.utils.log.LogManager.logLevelDesc; import static com.sevtinge.hyperceiler.utils.log.XposedLogUtils.logE; import static com.sevtinge.hyperceiler.utils.log.XposedLogUtils.logI; @@ -48,7 +46,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; import com.sevtinge.hyperceiler.module.hook.systemframework.ToastBlur; import com.sevtinge.hyperceiler.module.hook.systemframework.UnlockAlwaysOnDisplay; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; import com.sevtinge.hyperceiler.module.skip.SystemFrameworkForCorePatch; import com.sevtinge.hyperceiler.safe.CrashHook; import com.sevtinge.hyperceiler.utils.api.ProjectApi; @@ -124,8 +121,6 @@ private static void loadZygoteHook(StartupParam startupParam) throws Throwable { if (mPrefsMap.getBoolean("system_framework_screen_all_rotations")) ScreenRotation.initRes(); if (mPrefsMap.getBoolean("system_framework_clean_share_menu")) CleanShareMenu.initRes(); if (mPrefsMap.getBoolean("system_framework_clean_open_menu")) CleanOpenMenu.initRes(); - if (mPrefsMap.getBoolean("system_framework_volume_separate_control")) - VolumeSeparateControlForSettings.initRes(); if (startupParam != null) { new BackgroundBlurDrawable().initZygote(startupParam); @@ -171,7 +166,7 @@ private void setXSharedPrefs() { private void init(XC_LoadPackage.LoadPackageParam lpparam) { String packageName = lpparam.packageName; if (Objects.equals(packageName, "android")) - logI(packageName, "androidVersion = " + getAndroidVersion() + ", miuiVersion = " + getMiuiVersion() + ", hyperosVersion = " + getHyperOSVersion()); + logI(packageName, "androidVersion = " + getAndroidVersion() + ", hyperosVersion = " + getHyperOSVersion()); else logI(packageName, "versionName = " + getPackageVersionName(lpparam) + ", versionCode = " + getPackageVersionCode(lpparam)); @@ -203,7 +198,7 @@ public void accept(String s, DataBase dataBase) { return; if (!(dataBase.mTargetSdk == -1) && !isAndroidVersion(dataBase.mTargetSdk)) return; - if (!(dataBase.mTargetOSVersion == -1F) && !(isHyperOSVersion(dataBase.mTargetOSVersion) || isMiuiVersion(dataBase.mTargetOSVersion))) + if (!(dataBase.mTargetOSVersion == -1F) && !(isHyperOSVersion(dataBase.mTargetOSVersion))) return; if ((dataBase.isPad == 1 && !isPad()) || (dataBase.isPad == 2 && isPad())) return; diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Camera.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Camera.java deleted file mode 100644 index 1d724d9e1..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Camera.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.app; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.camera.BlackLeica; -import com.sevtinge.hyperceiler.module.hook.camera.CustomCameraColor; -import com.sevtinge.hyperceiler.module.hook.camera.CustomWatermark; -import com.sevtinge.hyperceiler.module.hook.camera.EnableLabOptions; -import com.sevtinge.hyperceiler.module.hook.camera.MaxScreenBrightness; -import com.sevtinge.hyperceiler.module.hook.camera.Unlock120Fps; -import com.sevtinge.hyperceiler.module.hook.camera.Unlock60Fps; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockAiEnhance; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockAiShutter; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockAiWatermark; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockAmbilight; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockAudioZoom; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockClone; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockColorEnhance; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockCosmeticMirror; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockCvlens; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockCyberFocusVersion2; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockDoc; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockDualcam; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockDuration; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilm; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilmDelay; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilmDollyZoom; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilmDream; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilmSlowShutter; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilmTimeBackflow; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockFilmTimeFreeze; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockHandGesture; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockHdr; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockHeic; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockIdcard; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockLog; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockMakeup; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockMenMakeup; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockMilive; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockMoon; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockNevus; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockNewBeauty; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockPano; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockPixel; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockPortrait; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockRaw; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockSlow; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockTrackEyes; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockTrackFeature; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockTrackFocus; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockVideosky; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockVlog; -import com.sevtinge.hyperceiler.module.hook.camera.UnlockVlogPro; - -@HookBase(targetPackage = "com.android.camera") -public class Camera extends BaseModule { - - @Override - public void handleLoadPackage() { - // 功能 - initHook(new UnlockAiWatermark(), mPrefsMap.getBoolean("camera_features_unlock_aiwatermark")); - initHook(new UnlockAmbilight(), mPrefsMap.getBoolean("camera_features_unlock_ambilight")); - initHook(new UnlockClone(), mPrefsMap.getBoolean("camera_features_unlock_clone")); - initHook(new UnlockCosmeticMirror(), mPrefsMap.getBoolean("camera_features_unlock_cosmetic_mirror")); - initHook(new UnlockDoc(), mPrefsMap.getBoolean("camera_features_unlock_doc")); - initHook(new UnlockDualcam(), mPrefsMap.getBoolean("camera_features_unlock_dualcam")); - initHook(new UnlockDuration(), mPrefsMap.getBoolean("camera_features_unlock_duration")); - initHook(new UnlockIdcard(), mPrefsMap.getBoolean("camera_features_unlock_idcard")); - initHook(new UnlockMilive(), mPrefsMap.getBoolean("camera_features_unlock_milive")); - initHook(new UnlockMoon(), mPrefsMap.getBoolean("camera_features_unlock_moon")); - initHook(new UnlockPano(), mPrefsMap.getBoolean("camera_features_unlock_pano")); - initHook(new UnlockPixel(), mPrefsMap.getBoolean("camera_features_unlock_pixel")); - initHook(new UnlockPortrait(), mPrefsMap.getBoolean("camera_features_unlock_portrait")); - initHook(new UnlockSlow(), mPrefsMap.getBoolean("camera_features_unlock_slow")); - initHook(new UnlockVideosky(), mPrefsMap.getBoolean("camera_features_unlock_videosky")); - initHook(new UnlockVlog(), mPrefsMap.getBoolean("camera_features_unlock_vlog")); - initHook(new UnlockVlogPro(), mPrefsMap.getBoolean("camera_features_unlock_vlog_pro")); - initHook(new UnlockFilm(), mPrefsMap.getBoolean("camera_features_unlock_film")); - initHook(new UnlockFilmDelay(), mPrefsMap.getBoolean("camera_features_unlock_film_delay")); - initHook(new UnlockFilmDollyZoom(), mPrefsMap.getBoolean("camera_features_unlock_film_dollyzoom")); - initHook(new UnlockFilmDream(), mPrefsMap.getBoolean("camera_features_unlock_film_dream")); - initHook(new UnlockFilmSlowShutter(), mPrefsMap.getBoolean("camera_features_unlock_film_slowshutter")); - initHook(new UnlockFilmTimeBackflow(), mPrefsMap.getBoolean("camera_features_unlock_film_timebackflow")); - initHook(new UnlockFilmTimeFreeze(), mPrefsMap.getBoolean("camera_features_unlock_film_timefreeze")); - - // 拍照 - initHook(new UnlockMakeup(), mPrefsMap.getBoolean("camera_shot_makeup")); - initHook(new UnlockColorEnhance(), mPrefsMap.getBoolean("camera_shot_color_enhance")); - initHook(new UnlockHandGesture(), mPrefsMap.getBoolean("camera_shot_hand_gesture")); - initHook(new CustomWatermark(), mPrefsMap.getBoolean("camera_custom_watermark")); - initHook(new BlackLeica(), mPrefsMap.getBoolean("camera_black_leica")); - - // 录像 - initHook(new Unlock60Fps(), mPrefsMap.getBoolean("camera_record_60fps")); - initHook(new Unlock120Fps(), mPrefsMap.getBoolean("camera_record_120fps")); - initHook(new UnlockHdr(), mPrefsMap.getBoolean("camera_record_hdr")); - initHook(new UnlockAiEnhance(), mPrefsMap.getBoolean("camera_record_ai")); - initHook(new UnlockAudioZoom(), mPrefsMap.getBoolean("camera_record_audio_zoom")); - - // 人像 - initHook(new UnlockCvlens(), mPrefsMap.getBoolean("camera_portrait_cvlens")); - initHook(new UnlockNewBeauty(), mPrefsMap.getBoolean("camera_portrait_new_beauty")); - - // 专业 - initHook(new UnlockRaw(), mPrefsMap.getBoolean("camera_pro_raw")); - initHook(new UnlockLog(), mPrefsMap.getBoolean("camera_pro_log")); - - // 设置 - initHook(new UnlockTrackFeature(), (mPrefsMap.getBoolean("camera_settings_track_eyes") || mPrefsMap.getBoolean("camera_settings_track_focus"))); - initHook(new UnlockHeic(), mPrefsMap.getBoolean("camera_settings_heic")); - initHook(new UnlockTrackFocus(), mPrefsMap.getBoolean("camera_settings_track_focus")); - initHook(new UnlockAiShutter(), mPrefsMap.getBoolean("camera_settings_predictive")); - initHook(new UnlockCyberFocusVersion2(), mPrefsMap.getBoolean("camera_settings_track_focus")); - initHook(new UnlockNevus(), mPrefsMap.getBoolean("camera_settings_nevus")); - initHook(new UnlockMenMakeup(), mPrefsMap.getBoolean("camera_settings_men_makeup")); - initHook(new EnableLabOptions(), mPrefsMap.getBoolean("camera_settings_lab_options")); - initHook(new UnlockTrackEyes(), mPrefsMap.getBoolean("camera_settings_track_eyes")); - - initHook(new MaxScreenBrightness(), mPrefsMap.getBoolean("camera_max_brightness")); - initHook(new CustomCameraColor(), mPrefsMap.getBoolean("camera_custom_theme_color")); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeT.java deleted file mode 100644 index 4eae289d4..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeT.java +++ /dev/null @@ -1,331 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.Home.Pad; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.home.AnimDurationRatio; -import com.sevtinge.hyperceiler.module.hook.home.DisablePrestart; -import com.sevtinge.hyperceiler.module.hook.home.FreeFormCountForHome; -import com.sevtinge.hyperceiler.module.hook.home.HomePortraitReverse; -import com.sevtinge.hyperceiler.module.hook.home.LockApp; -import com.sevtinge.hyperceiler.module.hook.home.MaxFreeForm; -import com.sevtinge.hyperceiler.module.hook.home.ScreenSwipe; -import com.sevtinge.hyperceiler.module.hook.home.SeekPoints; -import com.sevtinge.hyperceiler.module.hook.home.SetDeviceLevel; -import com.sevtinge.hyperceiler.module.hook.home.StickyFloatingWindowsForHome; -import com.sevtinge.hyperceiler.module.hook.home.ToastSlideAgain; -import com.sevtinge.hyperceiler.module.hook.home.UnlockHotseatIcon; -import com.sevtinge.hyperceiler.module.hook.home.UserPresentAnimation; -import com.sevtinge.hyperceiler.module.hook.home.WidgetCornerRadius; -import com.sevtinge.hyperceiler.module.hook.home.dock.DisableRecentsIcon; -import com.sevtinge.hyperceiler.module.hook.home.dock.DockCustom; -import com.sevtinge.hyperceiler.module.hook.home.dock.DockCustomNew; -import com.sevtinge.hyperceiler.module.hook.home.dock.FoldDeviceDock; -import com.sevtinge.hyperceiler.module.hook.home.dock.FoldDock; -import com.sevtinge.hyperceiler.module.hook.home.dock.HideDock; -import com.sevtinge.hyperceiler.module.hook.home.dock.ShowDockIconTitle; -import com.sevtinge.hyperceiler.module.hook.home.dock.SlideUpOnlyShowDock; -import com.sevtinge.hyperceiler.module.hook.home.drawer.AllAppsContainerViewBlur; -import com.sevtinge.hyperceiler.module.hook.home.drawer.AllAppsContainerViewSuperBlur; -import com.sevtinge.hyperceiler.module.hook.home.drawer.AppDrawer; -import com.sevtinge.hyperceiler.module.hook.home.drawer.PinyinArrangement; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIcon; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIconBlur; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIconBlur1x2; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIconBlur2x1; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderItemMaxCount; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderAnimation; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderAutoClose; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderBlur; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderColumns; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderShade; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderVerticalSpacing; -import com.sevtinge.hyperceiler.module.hook.home.folder.SmallFolderIconBlur; -import com.sevtinge.hyperceiler.module.hook.home.folder.UnlockBlurSupported; -import com.sevtinge.hyperceiler.module.hook.home.gesture.CornerSlide; -import com.sevtinge.hyperceiler.module.hook.home.gesture.DoubleTap; -import com.sevtinge.hyperceiler.module.hook.home.gesture.HotSeatSwipe; -import com.sevtinge.hyperceiler.module.hook.home.gesture.QuickBack; -import com.sevtinge.hyperceiler.module.hook.home.gesture.ShakeDevice; -import com.sevtinge.hyperceiler.module.hook.home.layout.HotSeatsHeight; -import com.sevtinge.hyperceiler.module.hook.home.layout.HotSeatsMarginBottom; -import com.sevtinge.hyperceiler.module.hook.home.layout.HotSeatsMarginTop; -import com.sevtinge.hyperceiler.module.hook.home.layout.IndicatorMarginBottom; -import com.sevtinge.hyperceiler.module.hook.home.layout.SearchBarMarginBottom; -import com.sevtinge.hyperceiler.module.hook.home.layout.SearchBarMarginWidth; -import com.sevtinge.hyperceiler.module.hook.home.layout.UnlockGrids; -import com.sevtinge.hyperceiler.module.hook.home.layout.WorkspacePadding; -import com.sevtinge.hyperceiler.module.hook.home.mipad.EnableHideGestureLine; -import com.sevtinge.hyperceiler.module.hook.home.mipad.EnableMoreSetting; -import com.sevtinge.hyperceiler.module.hook.home.navigation.BackGestureAreaHeight; -import com.sevtinge.hyperceiler.module.hook.home.navigation.BackGestureAreaWidth; -import com.sevtinge.hyperceiler.module.hook.home.navigation.HideNavigationBar; -import com.sevtinge.hyperceiler.module.hook.home.other.AllowShareApk; -import com.sevtinge.hyperceiler.module.hook.home.other.AlwaysBlurWallpaper; -import com.sevtinge.hyperceiler.module.hook.home.other.AlwaysShowStatusClock; -import com.sevtinge.hyperceiler.module.hook.home.other.BlurRadius; -import com.sevtinge.hyperceiler.module.hook.home.other.BlurWhenShowShortcutMenu; -import com.sevtinge.hyperceiler.module.hook.home.other.DisableHideGoogle; -import com.sevtinge.hyperceiler.module.hook.home.other.FreeformShortcutMenu; -import com.sevtinge.hyperceiler.module.hook.home.other.HomeMode; -import com.sevtinge.hyperceiler.module.hook.home.other.InfiniteScroll; -import com.sevtinge.hyperceiler.module.hook.home.other.OptAppLaunchDelay; -import com.sevtinge.hyperceiler.module.hook.home.other.OverlapMode; -import com.sevtinge.hyperceiler.module.hook.home.other.ShortcutItemCount; -import com.sevtinge.hyperceiler.module.hook.home.other.ShowAllHideApp; -import com.sevtinge.hyperceiler.module.hook.home.other.TasksShortcutMenu; -import com.sevtinge.hyperceiler.module.hook.home.recent.AlwaysShowCleanUp; -import com.sevtinge.hyperceiler.module.hook.home.recent.BackgroundBlur; -import com.sevtinge.hyperceiler.module.hook.home.recent.BlurLevel; -import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextColor; -import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextSize; -import com.sevtinge.hyperceiler.module.hook.home.recent.DisableRecentViewWallpaperDarken; -import com.sevtinge.hyperceiler.module.hook.home.recent.FreeformCardBackgroundColor; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideCleanUp; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideFreeform; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideRecentCard; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideStatusBarWhenEnterRecent; -import com.sevtinge.hyperceiler.module.hook.home.recent.MemInfoShow; -import com.sevtinge.hyperceiler.module.hook.home.recent.RealMemory; -import com.sevtinge.hyperceiler.module.hook.home.recent.RecentResource; -import com.sevtinge.hyperceiler.module.hook.home.recent.RecentText; -import com.sevtinge.hyperceiler.module.hook.home.recent.RemoveCardAnim; -import com.sevtinge.hyperceiler.module.hook.home.recent.RemoveIcon; -import com.sevtinge.hyperceiler.module.hook.home.recent.RemoveLeftShare; -import com.sevtinge.hyperceiler.module.hook.home.recent.ShowLaunch; -import com.sevtinge.hyperceiler.module.hook.home.recent.TaskViewHorizontal; -import com.sevtinge.hyperceiler.module.hook.home.recent.TaskViewVertical; -import com.sevtinge.hyperceiler.module.hook.home.recent.UnlockPin; -import com.sevtinge.hyperceiler.module.hook.home.title.AnimParamCustom; -import com.sevtinge.hyperceiler.module.hook.home.title.AppBlurAnim; -import com.sevtinge.hyperceiler.module.hook.home.title.BigIconCorner; -import com.sevtinge.hyperceiler.module.hook.home.title.DisableHideFile; -import com.sevtinge.hyperceiler.module.hook.home.title.DisableHideTheme; -import com.sevtinge.hyperceiler.module.hook.home.title.DownloadAnimation; -import com.sevtinge.hyperceiler.module.hook.home.title.EnableIconMonetColor; -import com.sevtinge.hyperceiler.module.hook.home.title.EnableIconMonoChrome; -import com.sevtinge.hyperceiler.module.hook.home.title.FakeNonDefaultIcon; -import com.sevtinge.hyperceiler.module.hook.home.title.FixAnimation; -import com.sevtinge.hyperceiler.module.hook.home.title.HiddenAllTitle; -import com.sevtinge.hyperceiler.module.hook.home.title.HideReportText; -import com.sevtinge.hyperceiler.module.hook.home.title.IconMessageColorCustom; -import com.sevtinge.hyperceiler.module.hook.home.title.IconTitleColor; -import com.sevtinge.hyperceiler.module.hook.home.title.IconTitleCustomization; -import com.sevtinge.hyperceiler.module.hook.home.title.LargeIconCornerRadius; -import com.sevtinge.hyperceiler.module.hook.home.title.NewInstallIndicator; -import com.sevtinge.hyperceiler.module.hook.home.title.PerfectIcon; -import com.sevtinge.hyperceiler.module.hook.home.title.RecommendAppsSwitch; -import com.sevtinge.hyperceiler.module.hook.home.title.TitleFontSize; -import com.sevtinge.hyperceiler.module.hook.home.title.TitleMarquee; -import com.sevtinge.hyperceiler.module.hook.home.widget.AllWidgetAnimation; -import com.sevtinge.hyperceiler.module.hook.home.widget.AllowMoveAllWidgetToMinus; -import com.sevtinge.hyperceiler.module.hook.home.widget.AlwaysShowMiuiWidget; -import com.sevtinge.hyperceiler.module.hook.home.widget.HideWidgetTitles; -import com.sevtinge.hyperceiler.module.hook.home.widget.ResizableWidgets; -import com.sevtinge.hyperceiler.module.hook.systemframework.mipad.SetGestureNeedFingerNum; - -import java.util.Objects; - -@HookBase(targetPackage = "com.miui.home", isPad = 1, targetSdk = 33) -public class HomeT extends BaseModule { - - @Override - public void handleLoadPackage() { - - // 手势 - initHook(new QuickBack(), mPrefsMap.getBoolean("home_navigation_quick_back")); - initHook(new CornerSlide(), - mPrefsMap.getInt("home_navigation_assist_left_slide_action", 0) > 0 || - mPrefsMap.getInt("home_navigation_assist_right_slide_action", 0) > 0 - ); - initHook(new DoubleTap(), mPrefsMap.getInt("home_gesture_double_tap_action", 0) > 0); - initHook(new ScreenSwipe(), mPrefsMap.getInt("home_gesture_up_swipe_action", 0) > 0 || - mPrefsMap.getInt("home_gesture_down_swipe_action", 0) > 0 || - mPrefsMap.getInt("home_gesture_up_swipe2_action", 0) > 0 || - mPrefsMap.getInt("home_gesture_down_swipe2_action", 0) > 0); - initHook(new HotSeatSwipe(), mPrefsMap.getInt("home_gesture_left_swipe_action", 0) > 0 - || mPrefsMap.getInt("home_gesture_right_swipe_action", 0) > 0); - initHook(new ShakeDevice(), mPrefsMap.getInt("home_gesture_shake_action", 0) > 0); - // initHook(new SwipeAndStop(), mPrefsMap.getInt("home_gesture_swipe_and_stop_action" ,0) > 0); - - initHook(new BackGestureAreaHeight(), mPrefsMap.getInt("home_navigation_back_area_height", 60) != 60); - initHook(new BackGestureAreaWidth(), mPrefsMap.getInt("home_navigation_back_area_width", 100) != 100); - - // 布局 - initHook(new UnlockGrids(), mPrefsMap.getBoolean("home_layout_unlock_grids")); - // initHook(new UnlockGridsNoWord(), mPrefsMap.getBoolean("home_layout_unlock_grids_no_word")); - initHook(new WorkspacePadding(), - mPrefsMap.getBoolean("home_layout_workspace_padding_bottom_enable") || - mPrefsMap.getBoolean("home_layout_workspace_padding_top_enable") || - mPrefsMap.getBoolean("home_layout_workspace_padding_horizontal_enable") - ); - - initHook(new IndicatorMarginBottom(), mPrefsMap.getBoolean("home_layout_indicator_margin_bottom_enable")); - initHook(new HotSeatsHeight(), mPrefsMap.getBoolean("home_layout_hotseats_height_enable")); - initHook(new HotSeatsMarginTop(), mPrefsMap.getBoolean("home_layout_hotseats_margin_top_enable")); - initHook(new HotSeatsMarginBottom(), mPrefsMap.getBoolean("home_layout_hotseats_margin_bottom_enable")); - initHook(new SearchBarMarginWidth(), mPrefsMap.getBoolean("home_layout_searchbar_width_enable")); - initHook(new SearchBarMarginBottom(), (mPrefsMap.getInt("home_layout_searchbar_margin_bottom", 0) > 0) && - mPrefsMap.getBoolean("home_layout_searchbar_margin_bottom_enable")); - - - // 文件夹 - initHook(FolderAutoClose.INSTANCE, mPrefsMap.getBoolean("home_folder_auto_close")); - initHook(new FolderShade(), mPrefsMap.getStringAsInt("home_folder_shade", 1) > 0); - initHook(FolderColumns.INSTANCE, mPrefsMap.getStringAsInt("home_folder_title_pos", 0) != 0 || - mPrefsMap.getBoolean("home_folder_width") || - mPrefsMap.getInt("home_folder_columns", 3) != 3); - initHook(new FolderAnimation(), mPrefsMap.getBoolean("home_folder_animation")); - initHook(new SmallFolderIconBlur(), mPrefsMap.getBoolean("home_small_folder_icon_bg")); - initHook(FolderVerticalSpacing.INSTANCE, mPrefsMap.getBoolean("home_folder_vertical_spacing_enable")); - - initHook(new BigFolderIcon(), false); - initHook(new BigFolderIconBlur2x1(), mPrefsMap.getBoolean("home_big_folder_icon_bg_2x1")); - initHook(new BigFolderIconBlur1x2(), mPrefsMap.getBoolean("home_big_folder_icon_bg_1x2")); - initHook(new BigFolderIconBlur(), mPrefsMap.getBoolean("home_big_folder_icon_bg")); - initHook(new BigFolderItemMaxCount(), mPrefsMap.getBoolean("home_big_folder_item_max_count")); - initHook(new UnlockBlurSupported(), mPrefsMap.getBoolean("home_folder_unlock_blur_supported")); - initHook(new RecommendAppsSwitch(), mPrefsMap.getBoolean("home_folder_recommend_apps_switch")); - - // 抽屉 - initHook(AppDrawer.INSTANCE, mPrefsMap.getBoolean("home_drawer_all") || - mPrefsMap.getBoolean("home_drawer_editor")); - initHook(AllAppsContainerViewBlur.INSTANCE, mPrefsMap.getBoolean("home_drawer_blur")); - initHook(new AllAppsContainerViewSuperBlur(), mPrefsMap.getBoolean("home_drawer_blur_super")); - initHook(new PinyinArrangement(), mPrefsMap.getBoolean("home_drawer_pinyin")); - - // 最近任务 - initHook(BlurLevel.INSTANCE, mPrefsMap.getStringAsInt("home_recent_blur_level", 6) != 6 && !mPrefsMap.getBoolean("home_title_app_blur_enable")); - initHook(DisableRecentViewWallpaperDarken.INSTANCE, mPrefsMap.getBoolean("home_recent_disable_wallpaper_dimming")); - initHook(HideStatusBarWhenEnterRecent.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_status_bar_in_task_view")); - initHook(RemoveCardAnim.INSTANCE, mPrefsMap.getBoolean("home_recent_modify_animation")); - initHook(TaskViewHorizontal.INSTANCE, true); - initHook(TaskViewVertical.INSTANCE, true); - initHook(HideFreeform.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_freeform")); - initHook(new HideCleanUp(), mPrefsMap.getBoolean("home_recent_hide_clean_up")); - initHook(FreeformCardBackgroundColor.INSTANCE, true); - initHook(CardTextColor.INSTANCE, true); - initHook(CardTextSize.INSTANCE, true); - initHook(UnlockPin.INSTANCE, mPrefsMap.getBoolean("home_recent_unlock_pin")); - initHook(RecentText.INSTANCE, !Objects.equals(mPrefsMap.getString("home_recent_text", ""), "")); - initHook(RemoveIcon.INSTANCE, mPrefsMap.getBoolean("home_recent_remove_icon")); - initHook(RemoveLeftShare.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_world_circulate")); - initHook(RecentResource.INSTANCE, mPrefsMap.getInt("task_view_corners", 20) != 20 || - mPrefsMap.getInt("task_view_header_height", 40) != 40); - initHook(RealMemory.INSTANCE, mPrefsMap.getBoolean("home_recent_show_real_memory")); - initHook(MemInfoShow.INSTANCE, mPrefsMap.getBoolean("home_recent_show_memory_info")); - initHook(AlwaysShowCleanUp.INSTANCE, mPrefsMap.getBoolean("always_show_clean_up")); - initHook(new BackgroundBlur(), mPrefsMap.getBoolean("home_recent_blur")); - initHook(new ShowLaunch(), mPrefsMap.getBoolean("home_recent_show_launch")); - initHook(HideRecentCard.INSTANCE, !mPrefsMap.getStringSet("home_recent_hide_card").isEmpty()); - - // 图标 - initHook(BigIconCorner.INSTANCE, mPrefsMap.getBoolean("home_title_big_icon_corner")); - initHook(new DownloadAnimation(), mPrefsMap.getBoolean("home_title_download_animation")); - initHook(DisableHideTheme.INSTANCE, mPrefsMap.getBoolean("home_title_disable_hide_theme")); - initHook(DisableHideFile.INSTANCE, mPrefsMap.getBoolean("home_title_disable_hide_file")); - initHook(DisableHideGoogle.INSTANCE, mPrefsMap.getBoolean("home_title_disable_hide_google")); - initHook(new FakeNonDefaultIcon(), mPrefsMap.getBoolean("fake_non_default_icon")); - initHook(new AnimParamCustom(), mPrefsMap.getBoolean("home_title_custom_anim_param_main")); - initHook(AppBlurAnim.INSTANCE, mPrefsMap.getBoolean("home_title_app_blur_enable")); - // initHook(new IconScaleHook()/*, mPrefsMap.getInt("home_title_icon_scale", 100) != 100*/); - - // 标题 - initHook(new TitleMarquee(), mPrefsMap.getBoolean("home_title_title_marquee")); - initHook(new NewInstallIndicator(), mPrefsMap.getBoolean("home_title_title_new_install")); - initHook(new IconTitleCustomization(), mPrefsMap.getBoolean("home_title_title_icontitlecustomization_onoff")); - initHook(new HiddenAllTitle(), mPrefsMap.getBoolean("home_drawer_font_hidden")); - initHook(new TitleFontSize()); - initHook(IconTitleColor.INSTANCE, true); - initHook(new UnlockHotseatIcon(), mPrefsMap.getBoolean("home_dock_unlock_hotseat")); - initHook(new IconMessageColorCustom(), mPrefsMap.getBoolean("home_title_notif_color")); - - // 小部件 - initHook(new AllWidgetAnimation(), mPrefsMap.getBoolean("home_widget_all_widget_animation")); - initHook(AlwaysShowMiuiWidget.INSTANCE, mPrefsMap.getBoolean("home_widget_show_miui_widget")); - initHook(AllowMoveAllWidgetToMinus.INSTANCE, mPrefsMap.getBoolean("home_widget_allow_moved_to_minus_one_screen")); - initHook(new WidgetCornerRadius(), mPrefsMap.getInt("home_widget_corner_radius", 0) > 0); - initHook(HideWidgetTitles.INSTANCE, mPrefsMap.getBoolean("home_widget_hide_title")); - initHook(ResizableWidgets.INSTANCE, mPrefsMap.getBoolean("home_widget_resizable")); - - // 底栏 - initHook(new DockCustom(), mPrefsMap.getBoolean("home_dock_bg_custom_enable") && mPrefsMap.getStringAsInt("home_dock_add_blur", 0) == 2); - initHook(DockCustomNew.INSTANCE, mPrefsMap.getBoolean("home_dock_bg_custom_enable") && (mPrefsMap.getStringAsInt("home_dock_add_blur", 0) == 0 || mPrefsMap.getStringAsInt("home_dock_add_blur", 0) == 1)); - initHook(new SeekPoints(), mPrefsMap.getStringAsInt("home_other_seek_points", 0) > 0); - initHook(FoldDeviceDock.INSTANCE, mPrefsMap.getBoolean("home_dock_fold")); - initHook(ShowDockIconTitle.INSTANCE, mPrefsMap.getBoolean("home_dock_icon_title")); - initHook(new HideNavigationBar(), mPrefsMap.getBoolean("system_ui_hide_navigation_bar")); - initHook(DisableRecentsIcon.INSTANCE, mPrefsMap.getBoolean("home_dock_disable_recents_icon")); - initHook(SlideUpOnlyShowDock.INSTANCE, mPrefsMap.getBoolean("home_dock_slide_up_only_show_dock") && !mPrefsMap.getBoolean("home_dock_hide_dock")); - initHook(HideDock.INSTANCE, mPrefsMap.getBoolean("home_dock_hide_dock")); - - // 其他 - initHook(new LockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new HomeMode(), mPrefsMap.getStringAsInt("home_other_home_mode", 0) > 0); - initHook(AlwaysShowStatusClock.INSTANCE, mPrefsMap.getBoolean("home_other_show_clock")); - initHook(new InfiniteScroll(), mPrefsMap.getBoolean("home_other_infinite_scroll")); - initHook(new FreeformShortcutMenu(), mPrefsMap.getBoolean("home_other_freeform_shortcut_menu")); - initHook(new TasksShortcutMenu(), mPrefsMap.getBoolean("home_other_tasks_shortcut_menu")); - initHook(new UserPresentAnimation(), mPrefsMap.getBoolean("home_other_user_present_animation")); - initHook(new PerfectIcon(), mPrefsMap.getBoolean("home_other_perfect_icon")); - initHook(new EnableIconMonoChrome(), mPrefsMap.getBoolean("home_other_icon_mono_chrome")); - initHook(new HomePortraitReverse(), mPrefsMap.getBoolean("home_other_portrait_reverse")); - initHook(AlwaysBlurWallpaper.INSTANCE, mPrefsMap.getBoolean("home_other_always_blur_launcher_wallpaper")); - initHook(BlurRadius.INSTANCE, mPrefsMap.getInt("home_other_blur_radius", 100) != 100); - initHook(ShortcutItemCount.INSTANCE, mPrefsMap.getBoolean("home_other_shortcut_remove_restrictions")); - initHook(ShowAllHideApp.INSTANCE, true); // 桌面快捷方式管理 - // initHook(new AllowShareApk(), mPrefsMap.getBoolean("home_other_allow_share_apk")); - initHook(new HideReportText(), mPrefsMap.getBoolean("home_title_hide_report_text")); - initHook(new DisablePrestart(), mPrefsMap.getBoolean("home_other_disable_prestart")); - initHook(new OptAppLaunchDelay(), mPrefsMap.getBoolean("home_other_opt_app_launch_delay")); - - // 实验性功能 - initHook(BlurWhenShowShortcutMenu.INSTANCE, mPrefsMap.getBoolean("home_other_shortcut_background_blur")); - initHook(FolderBlur.INSTANCE, mPrefsMap.getBoolean("home_folder_blur") && !mPrefsMap.getBoolean("home_title_app_blur_enable")); - initHook(new FoldDock(), mPrefsMap.getBoolean("home_other_fold_dock")); - // initHook(new AllAppsBlur); // ?? - initHook(new FixAnimation(), mPrefsMap.getBoolean("home_title_fix_animation")); - initHook(new LargeIconCornerRadius(), mPrefsMap.getBoolean("home_large_icon_enable")); - - // 多小窗 - initHook(new FreeFormCountForHome(), mPrefsMap.getBoolean("system_framework_freeform_count")); - initHook(new MaxFreeForm(), mPrefsMap.getBoolean("system_framework_freeform_count")); - - // Fold2样式负一屏 - initHook(new OverlapMode(), mPrefsMap.getBoolean("personal_assistant_overlap_mode")); - - // Other - initHook(new ToastSlideAgain(), mPrefsMap.getBoolean("home_other_toast_slide_again")); - initHook(new StickyFloatingWindowsForHome(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); - initHook(AnimDurationRatio.INSTANCE, true); - initHook(SetDeviceLevel.INSTANCE, mPrefsMap.getBoolean("home_other_high_models")); - - // 小米/红米平板相关 - boolean mMoreSetting = mPrefsMap.getBoolean("home_other_mi_pad_enable_more_setting"); - initHook(SetGestureNeedFingerNum.INSTANCE, mPrefsMap.getBoolean("mipad_input_need_finger_num")); - initHook(EnableMoreSetting.INSTANCE, mMoreSetting); - initHook(EnableHideGestureLine.INSTANCE, mMoreSetting); - - // reshook - initHook(EnableIconMonetColor.INSTANCE, mPrefsMap.getBoolean("home_other_icon_monet_color")); - initHook(new AllowShareApk(), mPrefsMap.getBoolean("home_other_allow_share_apk")); - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeU.java index 9fe3081a0..5513a039e 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeU.java @@ -96,7 +96,6 @@ import com.sevtinge.hyperceiler.module.hook.home.recent.BlurLevel; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextColor; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextSize; -import com.sevtinge.hyperceiler.module.hook.home.recent.DisableRecentViewWallpaperDarken; import com.sevtinge.hyperceiler.module.hook.home.recent.FreeformCardBackgroundColor; import com.sevtinge.hyperceiler.module.hook.home.recent.HideCleanUp; import com.sevtinge.hyperceiler.module.hook.home.recent.HideFreeform; @@ -213,7 +212,6 @@ public void handleLoadPackage() { // 最近任务 initHook(BlurLevel.INSTANCE, mPrefsMap.getStringAsInt("home_recent_blur_level", 6) != 6 && !mPrefsMap.getBoolean("home_title_app_blur_enable")); - initHook(DisableRecentViewWallpaperDarken.INSTANCE, mPrefsMap.getBoolean("home_recent_disable_wallpaper_dimming")); initHook(HideStatusBarWhenEnterRecent.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_status_bar_in_task_view")); initHook(RemoveCardAnim.INSTANCE, mPrefsMap.getBoolean("home_recent_modify_animation")); initHook(TaskViewHorizontal.INSTANCE, true); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeV.java index b433437f2..88a69e8f4 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Pad/HomeV.java @@ -96,7 +96,6 @@ import com.sevtinge.hyperceiler.module.hook.home.recent.BlurLevel; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextColor; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextSize; -import com.sevtinge.hyperceiler.module.hook.home.recent.DisableRecentViewWallpaperDarken; import com.sevtinge.hyperceiler.module.hook.home.recent.FreeformCardBackgroundColor; import com.sevtinge.hyperceiler.module.hook.home.recent.HideCleanUp; import com.sevtinge.hyperceiler.module.hook.home.recent.HideFreeform; @@ -212,7 +211,6 @@ public void handleLoadPackage() { // 最近任务 initHook(BlurLevel.INSTANCE, mPrefsMap.getStringAsInt("home_recent_blur_level", 6) != 6 && !mPrefsMap.getBoolean("home_title_app_blur_enable")); - initHook(DisableRecentViewWallpaperDarken.INSTANCE, mPrefsMap.getBoolean("home_recent_disable_wallpaper_dimming")); initHook(HideStatusBarWhenEnterRecent.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_status_bar_in_task_view")); initHook(RemoveCardAnim.INSTANCE, mPrefsMap.getBoolean("home_recent_modify_animation")); initHook(TaskViewHorizontal.INSTANCE, true); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeT.java deleted file mode 100644 index e327dd9a1..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeT.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.Home.Phone; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.home.AnimDurationRatio; -import com.sevtinge.hyperceiler.module.hook.home.DisablePrestart; -import com.sevtinge.hyperceiler.module.hook.home.FreeFormCountForHome; -import com.sevtinge.hyperceiler.module.hook.home.HomePortraitReverse; -import com.sevtinge.hyperceiler.module.hook.home.LockApp; -import com.sevtinge.hyperceiler.module.hook.home.MaxFreeForm; -import com.sevtinge.hyperceiler.module.hook.home.ScreenSwipe; -import com.sevtinge.hyperceiler.module.hook.home.SeekPoints; -import com.sevtinge.hyperceiler.module.hook.home.SetDeviceLevel; -import com.sevtinge.hyperceiler.module.hook.home.StickyFloatingWindowsForHome; -import com.sevtinge.hyperceiler.module.hook.home.ToastSlideAgain; -import com.sevtinge.hyperceiler.module.hook.home.UnlockHotseatIcon; -import com.sevtinge.hyperceiler.module.hook.home.UserPresentAnimation; -import com.sevtinge.hyperceiler.module.hook.home.WidgetCornerRadius; -import com.sevtinge.hyperceiler.module.hook.home.dock.DisableRecentsIcon; -import com.sevtinge.hyperceiler.module.hook.home.dock.DockCustom; -import com.sevtinge.hyperceiler.module.hook.home.dock.DockCustomNew; -import com.sevtinge.hyperceiler.module.hook.home.dock.FoldDeviceDock; -import com.sevtinge.hyperceiler.module.hook.home.dock.FoldDock; -import com.sevtinge.hyperceiler.module.hook.home.dock.HideDock; -import com.sevtinge.hyperceiler.module.hook.home.dock.ShowDockIconTitle; -import com.sevtinge.hyperceiler.module.hook.home.dock.SlideUpOnlyShowDock; -import com.sevtinge.hyperceiler.module.hook.home.drawer.AllAppsContainerViewBlur; -import com.sevtinge.hyperceiler.module.hook.home.drawer.AllAppsContainerViewSuperBlur; -import com.sevtinge.hyperceiler.module.hook.home.drawer.AppDrawer; -import com.sevtinge.hyperceiler.module.hook.home.drawer.PinyinArrangement; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIcon; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIconBlur; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIconBlur1x2; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderIconBlur2x1; -import com.sevtinge.hyperceiler.module.hook.home.folder.BigFolderItemMaxCount; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderAnimation; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderAutoClose; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderBlur; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderColumns; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderShade; -import com.sevtinge.hyperceiler.module.hook.home.folder.FolderVerticalSpacing; -import com.sevtinge.hyperceiler.module.hook.home.folder.SmallFolderIconBlur; -import com.sevtinge.hyperceiler.module.hook.home.folder.UnlockBlurSupported; -import com.sevtinge.hyperceiler.module.hook.home.gesture.CornerSlide; -import com.sevtinge.hyperceiler.module.hook.home.gesture.DoubleTap; -import com.sevtinge.hyperceiler.module.hook.home.gesture.HotSeatSwipe; -import com.sevtinge.hyperceiler.module.hook.home.gesture.QuickBack; -import com.sevtinge.hyperceiler.module.hook.home.gesture.ShakeDevice; -import com.sevtinge.hyperceiler.module.hook.home.layout.HotSeatsHeight; -import com.sevtinge.hyperceiler.module.hook.home.layout.HotSeatsMarginBottom; -import com.sevtinge.hyperceiler.module.hook.home.layout.HotSeatsMarginTop; -import com.sevtinge.hyperceiler.module.hook.home.layout.IndicatorMarginBottom; -import com.sevtinge.hyperceiler.module.hook.home.layout.SearchBarMarginBottom; -import com.sevtinge.hyperceiler.module.hook.home.layout.SearchBarMarginWidth; -import com.sevtinge.hyperceiler.module.hook.home.layout.UnlockGrids; -import com.sevtinge.hyperceiler.module.hook.home.layout.WorkspacePadding; -import com.sevtinge.hyperceiler.module.hook.home.navigation.BackGestureAreaHeight; -import com.sevtinge.hyperceiler.module.hook.home.navigation.BackGestureAreaWidth; -import com.sevtinge.hyperceiler.module.hook.home.navigation.HideNavigationBar; -import com.sevtinge.hyperceiler.module.hook.home.other.AllowShareApk; -import com.sevtinge.hyperceiler.module.hook.home.other.AlwaysBlurWallpaper; -import com.sevtinge.hyperceiler.module.hook.home.other.AlwaysShowStatusClock; -import com.sevtinge.hyperceiler.module.hook.home.other.BlurRadius; -import com.sevtinge.hyperceiler.module.hook.home.other.BlurWhenShowShortcutMenu; -import com.sevtinge.hyperceiler.module.hook.home.other.DisableHideGoogle; -import com.sevtinge.hyperceiler.module.hook.home.other.FreeformShortcutMenu; -import com.sevtinge.hyperceiler.module.hook.home.other.HomeMode; -import com.sevtinge.hyperceiler.module.hook.home.other.InfiniteScroll; -import com.sevtinge.hyperceiler.module.hook.home.other.OptAppLaunchDelay; -import com.sevtinge.hyperceiler.module.hook.home.other.OverlapMode; -import com.sevtinge.hyperceiler.module.hook.home.other.ShortcutItemCount; -import com.sevtinge.hyperceiler.module.hook.home.other.ShowAllHideApp; -import com.sevtinge.hyperceiler.module.hook.home.recent.AlwaysShowCleanUp; -import com.sevtinge.hyperceiler.module.hook.home.recent.BackgroundBlur; -import com.sevtinge.hyperceiler.module.hook.home.recent.BlurLevel; -import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextColor; -import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextSize; -import com.sevtinge.hyperceiler.module.hook.home.recent.DisableRecentViewWallpaperDarken; -import com.sevtinge.hyperceiler.module.hook.home.recent.FreeformCardBackgroundColor; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideCleanUp; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideFreeform; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideRecentCard; -import com.sevtinge.hyperceiler.module.hook.home.recent.HideStatusBarWhenEnterRecent; -import com.sevtinge.hyperceiler.module.hook.home.recent.RealMemory; -import com.sevtinge.hyperceiler.module.hook.home.recent.RecentResource; -import com.sevtinge.hyperceiler.module.hook.home.recent.RecentText; -import com.sevtinge.hyperceiler.module.hook.home.recent.RemoveCardAnim; -import com.sevtinge.hyperceiler.module.hook.home.recent.RemoveIcon; -import com.sevtinge.hyperceiler.module.hook.home.recent.RemoveLeftShare; -import com.sevtinge.hyperceiler.module.hook.home.recent.ShowLaunch; -import com.sevtinge.hyperceiler.module.hook.home.recent.TaskViewHorizontal; -import com.sevtinge.hyperceiler.module.hook.home.recent.TaskViewVertical; -import com.sevtinge.hyperceiler.module.hook.home.recent.UnlockPin; -import com.sevtinge.hyperceiler.module.hook.home.title.AnimParamCustom; -import com.sevtinge.hyperceiler.module.hook.home.title.AppBlurAnim; -import com.sevtinge.hyperceiler.module.hook.home.title.BigIconCorner; -import com.sevtinge.hyperceiler.module.hook.home.title.DisableHideFile; -import com.sevtinge.hyperceiler.module.hook.home.title.DownloadAnimation; -import com.sevtinge.hyperceiler.module.hook.home.title.EnableIconMonetColor; -import com.sevtinge.hyperceiler.module.hook.home.title.EnableIconMonoChrome; -import com.sevtinge.hyperceiler.module.hook.home.title.FakeNonDefaultIcon; -import com.sevtinge.hyperceiler.module.hook.home.title.FixAnimation; -import com.sevtinge.hyperceiler.module.hook.home.title.HiddenAllTitle; -import com.sevtinge.hyperceiler.module.hook.home.title.HideReportText; -import com.sevtinge.hyperceiler.module.hook.home.title.IconMessageColorCustom; -import com.sevtinge.hyperceiler.module.hook.home.title.IconTitleColor; -import com.sevtinge.hyperceiler.module.hook.home.title.IconTitleCustomization; -import com.sevtinge.hyperceiler.module.hook.home.title.LargeIconCornerRadius; -import com.sevtinge.hyperceiler.module.hook.home.title.NewInstallIndicator; -import com.sevtinge.hyperceiler.module.hook.home.title.PerfectIcon; -import com.sevtinge.hyperceiler.module.hook.home.title.RecommendAppsSwitch; -import com.sevtinge.hyperceiler.module.hook.home.title.TitleFontSize; -import com.sevtinge.hyperceiler.module.hook.home.title.TitleMarquee; -import com.sevtinge.hyperceiler.module.hook.home.widget.AllWidgetAnimation; -import com.sevtinge.hyperceiler.module.hook.home.widget.AllowMoveAllWidgetToMinus; -import com.sevtinge.hyperceiler.module.hook.home.widget.AlwaysShowMiuiWidget; -import com.sevtinge.hyperceiler.module.hook.home.widget.HideWidgetTitles; -import com.sevtinge.hyperceiler.module.hook.home.widget.ResizableWidgets; - -import java.util.Objects; - -@HookBase(targetPackage = "com.miui.home", isPad = 2, targetSdk = 33) -public class HomeT extends BaseModule { - - @Override - public void handleLoadPackage() { - - // 手势 - initHook(new QuickBack(), mPrefsMap.getBoolean("home_navigation_quick_back")); - initHook(new CornerSlide(), - mPrefsMap.getInt("home_navigation_assist_left_slide_action", 0) > 0 || - mPrefsMap.getInt("home_navigation_assist_right_slide_action", 0) > 0 - ); - initHook(new DoubleTap(), mPrefsMap.getInt("home_gesture_double_tap_action", 0) > 0); - initHook(new ScreenSwipe(), mPrefsMap.getInt("home_gesture_up_swipe_action", 0) > 0 || - mPrefsMap.getInt("home_gesture_down_swipe_action", 0) > 0 || - mPrefsMap.getInt("home_gesture_up_swipe2_action", 0) > 0 || - mPrefsMap.getInt("home_gesture_down_swipe2_action", 0) > 0); - initHook(new HotSeatSwipe(), mPrefsMap.getInt("home_gesture_left_swipe_action", 0) > 0 - || mPrefsMap.getInt("home_gesture_right_swipe_action", 0) > 0); - initHook(new ShakeDevice(), mPrefsMap.getInt("home_gesture_shake_action", 0) > 0); - // initHook(new SwipeAndStop(), mPrefsMap.getInt("home_gesture_swipe_and_stop_action" ,0) > 0); - - initHook(new BackGestureAreaHeight(), mPrefsMap.getInt("home_navigation_back_area_height", 60) != 60); - initHook(new BackGestureAreaWidth(), mPrefsMap.getInt("home_navigation_back_area_width", 100) != 100); - - // 布局 - initHook(new UnlockGrids(), mPrefsMap.getBoolean("home_layout_unlock_grids")); - // initHook(new UnlockGridsNoWord(), mPrefsMap.getBoolean("home_layout_unlock_grids_no_word")); - initHook(new WorkspacePadding(), - mPrefsMap.getBoolean("home_layout_workspace_padding_bottom_enable") || - mPrefsMap.getBoolean("home_layout_workspace_padding_top_enable") || - mPrefsMap.getBoolean("home_layout_workspace_padding_horizontal_enable") - ); - - initHook(new IndicatorMarginBottom(), mPrefsMap.getBoolean("home_layout_indicator_margin_bottom_enable")); - initHook(new HotSeatsHeight(), mPrefsMap.getBoolean("home_layout_hotseats_height_enable")); - initHook(new HotSeatsMarginTop(), mPrefsMap.getBoolean("home_layout_hotseats_margin_top_enable")); - initHook(new HotSeatsMarginBottom(), mPrefsMap.getBoolean("home_layout_hotseats_margin_bottom_enable")); - initHook(new SearchBarMarginWidth(), mPrefsMap.getBoolean("home_layout_searchbar_width_enable")); - initHook(new SearchBarMarginBottom(), (mPrefsMap.getInt("home_layout_searchbar_margin_bottom", 0) > 0) && - mPrefsMap.getBoolean("home_layout_searchbar_margin_bottom_enable")); - - - // 文件夹 - initHook(FolderAutoClose.INSTANCE, mPrefsMap.getBoolean("home_folder_auto_close")); - initHook(new FolderShade(), mPrefsMap.getStringAsInt("home_folder_shade", 1) > 0); - initHook(FolderColumns.INSTANCE, mPrefsMap.getStringAsInt("home_folder_title_pos", 0) != 0 || - mPrefsMap.getBoolean("home_folder_width") || - mPrefsMap.getInt("home_folder_columns", 3) != 3); - initHook(new FolderAnimation(), mPrefsMap.getBoolean("home_folder_animation")); - initHook(new SmallFolderIconBlur(), mPrefsMap.getBoolean("home_small_folder_icon_bg")); - initHook(FolderVerticalSpacing.INSTANCE, mPrefsMap.getBoolean("home_folder_vertical_spacing_enable")); - - initHook(new BigFolderIcon(), false); - initHook(new BigFolderIconBlur2x1(), mPrefsMap.getBoolean("home_big_folder_icon_bg_2x1")); - initHook(new BigFolderIconBlur1x2(), mPrefsMap.getBoolean("home_big_folder_icon_bg_1x2")); - initHook(new BigFolderIconBlur(), mPrefsMap.getBoolean("home_big_folder_icon_bg")); - initHook(new BigFolderItemMaxCount(), mPrefsMap.getBoolean("home_big_folder_item_max_count")); - initHook(new UnlockBlurSupported(), mPrefsMap.getBoolean("home_folder_unlock_blur_supported")); - initHook(new RecommendAppsSwitch(), mPrefsMap.getBoolean("home_folder_recommend_apps_switch")); - - // 抽屉 - initHook(AppDrawer.INSTANCE, mPrefsMap.getBoolean("home_drawer_all") || - mPrefsMap.getBoolean("home_drawer_editor")); - initHook(AllAppsContainerViewBlur.INSTANCE, mPrefsMap.getBoolean("home_drawer_blur")); - initHook(new AllAppsContainerViewSuperBlur(), mPrefsMap.getBoolean("home_drawer_blur_super")); - initHook(new PinyinArrangement(), mPrefsMap.getBoolean("home_drawer_pinyin")); - - // 最近任务 - initHook(BlurLevel.INSTANCE, mPrefsMap.getStringAsInt("home_recent_blur_level", 6) != 6 && !mPrefsMap.getBoolean("home_title_app_blur_enable")); - initHook(DisableRecentViewWallpaperDarken.INSTANCE, mPrefsMap.getBoolean("home_recent_disable_wallpaper_dimming")); - initHook(HideStatusBarWhenEnterRecent.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_status_bar_in_task_view")); - initHook(RemoveCardAnim.INSTANCE, mPrefsMap.getBoolean("home_recent_modify_animation")); - initHook(TaskViewHorizontal.INSTANCE, true); - initHook(TaskViewVertical.INSTANCE, true); - initHook(HideFreeform.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_freeform")); - initHook(new HideCleanUp(), mPrefsMap.getBoolean("home_recent_hide_clean_up")); - initHook(FreeformCardBackgroundColor.INSTANCE, true); - initHook(CardTextColor.INSTANCE, true); - initHook(CardTextSize.INSTANCE, true); - initHook(UnlockPin.INSTANCE, mPrefsMap.getBoolean("home_recent_unlock_pin")); - initHook(RecentText.INSTANCE, !Objects.equals(mPrefsMap.getString("home_recent_text", ""), "")); - initHook(RemoveIcon.INSTANCE, mPrefsMap.getBoolean("home_recent_remove_icon")); - initHook(RemoveLeftShare.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_world_circulate")); - initHook(RecentResource.INSTANCE, mPrefsMap.getInt("task_view_corners", 20) != 20 || - mPrefsMap.getInt("task_view_header_height", 40) != 40); - initHook(RealMemory.INSTANCE, mPrefsMap.getBoolean("home_recent_show_real_memory")); - initHook(AlwaysShowCleanUp.INSTANCE, mPrefsMap.getBoolean("always_show_clean_up")); - initHook(new BackgroundBlur(), mPrefsMap.getBoolean("home_recent_blur")); - initHook(new ShowLaunch(), mPrefsMap.getBoolean("home_recent_show_launch")); - initHook(HideRecentCard.INSTANCE, !mPrefsMap.getStringSet("home_recent_hide_card").isEmpty()); - - // 图标 - initHook(BigIconCorner.INSTANCE, mPrefsMap.getBoolean("home_title_big_icon_corner")); - initHook(new DownloadAnimation(), mPrefsMap.getBoolean("home_title_download_animation")); - initHook(DisableHideFile.INSTANCE, mPrefsMap.getBoolean("home_title_disable_hide_file")); - initHook(DisableHideGoogle.INSTANCE, mPrefsMap.getBoolean("home_title_disable_hide_google")); - initHook(new FakeNonDefaultIcon(), mPrefsMap.getBoolean("fake_non_default_icon")); - initHook(new AnimParamCustom(), mPrefsMap.getBoolean("home_title_custom_anim_param_main")); - initHook(AppBlurAnim.INSTANCE, mPrefsMap.getBoolean("home_title_app_blur_enable")); - // initHook(new IconScaleHook()/*, mPrefsMap.getInt("home_title_icon_scale", 100) != 100*/); - - // 标题 - initHook(new TitleMarquee(), mPrefsMap.getBoolean("home_title_title_marquee")); - initHook(new NewInstallIndicator(), mPrefsMap.getBoolean("home_title_title_new_install")); - initHook(new IconTitleCustomization(), mPrefsMap.getBoolean("home_title_title_icontitlecustomization_onoff")); - initHook(new HiddenAllTitle(), mPrefsMap.getBoolean("home_drawer_font_hidden")); - initHook(new TitleFontSize()); - initHook(IconTitleColor.INSTANCE, true); - initHook(new UnlockHotseatIcon(), mPrefsMap.getBoolean("home_dock_unlock_hotseat")); - initHook(new IconMessageColorCustom(), mPrefsMap.getBoolean("home_title_notif_color")); - - // 小部件 - initHook(new AllWidgetAnimation(), mPrefsMap.getBoolean("home_widget_all_widget_animation")); - initHook(AlwaysShowMiuiWidget.INSTANCE, mPrefsMap.getBoolean("home_widget_show_miui_widget")); - initHook(AllowMoveAllWidgetToMinus.INSTANCE, mPrefsMap.getBoolean("home_widget_allow_moved_to_minus_one_screen")); - initHook(new WidgetCornerRadius(), mPrefsMap.getInt("home_widget_corner_radius", 0) > 0); - initHook(HideWidgetTitles.INSTANCE, mPrefsMap.getBoolean("home_widget_hide_title")); - initHook(ResizableWidgets.INSTANCE, mPrefsMap.getBoolean("home_widget_resizable")); - - // 底栏 - initHook(new DockCustom(), mPrefsMap.getBoolean("home_dock_bg_custom_enable") && mPrefsMap.getStringAsInt("home_dock_add_blur", 0) == 2); - initHook(DockCustomNew.INSTANCE, mPrefsMap.getBoolean("home_dock_bg_custom_enable") && (mPrefsMap.getStringAsInt("home_dock_add_blur", 0) == 0 || mPrefsMap.getStringAsInt("home_dock_add_blur", 0) == 1)); - initHook(new SeekPoints(), mPrefsMap.getStringAsInt("home_other_seek_points", 0) > 0); - initHook(FoldDeviceDock.INSTANCE, mPrefsMap.getBoolean("home_dock_fold")); - initHook(ShowDockIconTitle.INSTANCE, mPrefsMap.getBoolean("home_dock_icon_title")); - initHook(new HideNavigationBar(), mPrefsMap.getBoolean("system_ui_hide_navigation_bar")); - initHook(DisableRecentsIcon.INSTANCE, mPrefsMap.getBoolean("home_dock_disable_recents_icon")); - initHook(SlideUpOnlyShowDock.INSTANCE, mPrefsMap.getBoolean("home_dock_slide_up_only_show_dock") && !mPrefsMap.getBoolean("home_dock_hide_dock")); - initHook(HideDock.INSTANCE, mPrefsMap.getBoolean("home_dock_hide_dock")); - - // 其他 - initHook(new LockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new HomeMode(), mPrefsMap.getStringAsInt("home_other_home_mode", 0) > 0); - initHook(AlwaysShowStatusClock.INSTANCE, mPrefsMap.getBoolean("home_other_show_clock")); - initHook(new InfiniteScroll(), mPrefsMap.getBoolean("home_other_infinite_scroll")); - initHook(new FreeformShortcutMenu(), (mPrefsMap.getBoolean("home_other_freeform_shortcut_menu") || (mPrefsMap.getBoolean("home_other_tasks_shortcut_menu")))); - initHook(new UserPresentAnimation(), mPrefsMap.getBoolean("home_other_user_present_animation")); - initHook(new PerfectIcon(), mPrefsMap.getBoolean("home_other_perfect_icon")); - initHook(new EnableIconMonoChrome(), mPrefsMap.getBoolean("home_other_icon_mono_chrome")); - initHook(new HomePortraitReverse(), mPrefsMap.getBoolean("home_other_portrait_reverse")); - initHook(AlwaysBlurWallpaper.INSTANCE, mPrefsMap.getBoolean("home_other_always_blur_launcher_wallpaper")); - initHook(BlurRadius.INSTANCE, mPrefsMap.getInt("home_other_blur_radius", 100) != 100); - initHook(ShortcutItemCount.INSTANCE, mPrefsMap.getBoolean("home_other_shortcut_remove_restrictions")); - initHook(ShowAllHideApp.INSTANCE, true); // 桌面快捷方式管理 - // initHook(new AllowShareApk(), mPrefsMap.getBoolean("home_other_allow_share_apk")); - initHook(new HideReportText(), mPrefsMap.getBoolean("home_title_hide_report_text")); - initHook(new DisablePrestart(), mPrefsMap.getBoolean("home_other_disable_prestart")); - initHook(new OptAppLaunchDelay(), mPrefsMap.getBoolean("home_other_opt_app_launch_delay")); - - // 实验性功能 - initHook(BlurWhenShowShortcutMenu.INSTANCE, mPrefsMap.getBoolean("home_other_shortcut_background_blur")); - initHook(FolderBlur.INSTANCE, mPrefsMap.getBoolean("home_folder_blur") && !mPrefsMap.getBoolean("home_title_app_blur_enable")); - initHook(new FoldDock(), mPrefsMap.getBoolean("home_other_fold_dock")); - // initHook(new AllAppsBlur); // ?? - initHook(new FixAnimation(), mPrefsMap.getBoolean("home_title_fix_animation")); - initHook(new LargeIconCornerRadius(), mPrefsMap.getBoolean("home_large_icon_enable")); - - // 多小窗 - initHook(new FreeFormCountForHome(), mPrefsMap.getBoolean("system_framework_freeform_count")); - initHook(new MaxFreeForm(), mPrefsMap.getBoolean("system_framework_freeform_count")); - - // Fold2样式负一屏 - initHook(new OverlapMode(), mPrefsMap.getBoolean("personal_assistant_overlap_mode")); - - // Other - initHook(new ToastSlideAgain(), mPrefsMap.getBoolean("home_other_toast_slide_again")); - initHook(new StickyFloatingWindowsForHome(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); - initHook(AnimDurationRatio.INSTANCE, true); - initHook(SetDeviceLevel.INSTANCE, mPrefsMap.getBoolean("home_other_high_models")); - - // reshook - initHook(EnableIconMonetColor.INSTANCE, mPrefsMap.getBoolean("home_other_icon_monet_color")); - initHook(new AllowShareApk(), mPrefsMap.getBoolean("home_other_allow_share_apk")); - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeU.java index eff2fd902..786ced584 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeU.java @@ -96,7 +96,6 @@ import com.sevtinge.hyperceiler.module.hook.home.recent.BlurLevel; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextColor; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextSize; -import com.sevtinge.hyperceiler.module.hook.home.recent.DisableRecentViewWallpaperDarken; import com.sevtinge.hyperceiler.module.hook.home.recent.FreeformCardBackgroundColor; import com.sevtinge.hyperceiler.module.hook.home.recent.HideCleanUp; import com.sevtinge.hyperceiler.module.hook.home.recent.HideFreeform; @@ -210,7 +209,6 @@ public void handleLoadPackage() { // 最近任务 initHook(BlurLevel.INSTANCE, mPrefsMap.getStringAsInt("home_recent_blur_level", 6) != 6 && !mPrefsMap.getBoolean("home_title_app_blur_enable") && !isMoreHyperOSVersion(2f)); - initHook(DisableRecentViewWallpaperDarken.INSTANCE, mPrefsMap.getBoolean("home_recent_disable_wallpaper_dimming")); initHook(HideStatusBarWhenEnterRecent.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_status_bar_in_task_view")); initHook(RemoveCardAnim.INSTANCE, mPrefsMap.getBoolean("home_recent_modify_animation")); initHook(TaskViewHorizontal.INSTANCE, true); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeV.java index 4a6f390d1..8b37fad3b 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Home/Phone/HomeV.java @@ -93,7 +93,6 @@ import com.sevtinge.hyperceiler.module.hook.home.recent.BackgroundBlur; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextColor; import com.sevtinge.hyperceiler.module.hook.home.recent.CardTextSize; -import com.sevtinge.hyperceiler.module.hook.home.recent.DisableRecentViewWallpaperDarken; import com.sevtinge.hyperceiler.module.hook.home.recent.FreeformCardBackgroundColor; import com.sevtinge.hyperceiler.module.hook.home.recent.HideCleanUp; import com.sevtinge.hyperceiler.module.hook.home.recent.HideFreeform; @@ -209,7 +208,6 @@ public void handleLoadPackage() { initHook(new PinyinArrangement(), mPrefsMap.getBoolean("home_drawer_pinyin")); // 最近任务 - initHook(DisableRecentViewWallpaperDarken.INSTANCE, mPrefsMap.getBoolean("home_recent_disable_wallpaper_dimming")); initHook(HideStatusBarWhenEnterRecent.INSTANCE, mPrefsMap.getBoolean("home_recent_hide_status_bar_in_task_view")); initHook(RemoveCardAnim.INSTANCE, mPrefsMap.getBoolean("home_recent_modify_animation")); initHook(TaskViewHorizontal.INSTANCE, true); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Lbe.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Lbe.java index 41f7f6106..06afe15b4 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/Lbe.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/Lbe.java @@ -21,7 +21,6 @@ import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; import com.sevtinge.hyperceiler.module.hook.lbe.AutoStart; -import com.sevtinge.hyperceiler.module.hook.lbe.DisableClipboardTip; @HookBase(targetPackage = "com.lbe.security.miui") public class Lbe extends BaseModule { @@ -29,6 +28,5 @@ public class Lbe extends BaseModule { @Override public void handleLoadPackage() { initHook(new AutoStart(), mPrefsMap.getBoolean("lbe_auto_start")); - initHook(DisableClipboardTip.INSTANCE, mPrefsMap.getBoolean("lbe_clipboard_tip_toast")); } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/ScreenShot.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/ScreenShot.java index de77b7f26..6b4932701 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/ScreenShot.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/ScreenShot.java @@ -42,6 +42,5 @@ public void handleLoadPackage() { initHook(UnlockPrivacyMarking.INSTANCE, mPrefsMap.getBoolean("screenshot_unlock_privacy_marking")); // 超级剪切板 initHook(UnlockSuperClipboard.INSTANCE, mPrefsMap.getStringAsInt("various_super_clipboard_e", 0) != 0); - initHook(new FlagSecure(), mPrefsMap.getBoolean("system_other_flag_secure") && isAndroidVersion(33)); } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterT.java deleted file mode 100644 index fe71282e8..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterT.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.SecurityCenter.Pad; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.securitycenter.AppLockPinScramble; -import com.sevtinge.hyperceiler.module.hook.securitycenter.BypassAdbInstallVerify; -import com.sevtinge.hyperceiler.module.hook.securitycenter.DisableReport; -import com.sevtinge.hyperceiler.module.hook.securitycenter.DisableRootedCheck; -import com.sevtinge.hyperceiler.module.hook.securitycenter.GetBubbleAppString; -import com.sevtinge.hyperceiler.module.hook.securitycenter.HideXOptModeTip; -import com.sevtinge.hyperceiler.module.hook.securitycenter.InstallIntercept; -import com.sevtinge.hyperceiler.module.hook.securitycenter.IsSbnBelongToActiveBubbleApp; -import com.sevtinge.hyperceiler.module.hook.securitycenter.NewBoxBlur; -import com.sevtinge.hyperceiler.module.hook.securitycenter.PowerSaver; -import com.sevtinge.hyperceiler.module.hook.securitycenter.PrivacyThumbnailBlur; -import com.sevtinge.hyperceiler.module.hook.securitycenter.RemoveConversationBubbleSettingsRestriction; -import com.sevtinge.hyperceiler.module.hook.securitycenter.RemoveOpenAppConfirmationPopup; -import com.sevtinge.hyperceiler.module.hook.securitycenter.ScLockApp; -import com.sevtinge.hyperceiler.module.hook.securitycenter.SidebarLineCustom; -import com.sevtinge.hyperceiler.module.hook.securitycenter.UnlockFbo; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AddAppInfoEntry; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AddAppManagerEntry; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppDefaultSort; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppDetails; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppDisable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppRestrict; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.OpenByDefaultSetting; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.BatteryHealth; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.PowerConsumptionRanking; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.ScreenUsedTime; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.ShowBatteryTemperatureNew; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.UnlockLowTempExtEndurance; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.UnlockSmartCharge; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.UnlockSuperWirelessCharge; -import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyLightAuto; -import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPc; -import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPrivacy; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.AiClipboardEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.BlurLocationEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.GetNumberEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.BypassSimLockMiAccountAuth; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.DisableRootCheck; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.FuckRiskPkg; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.LockOneHundredPoints; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.NoLowBatteryWarning; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.RemoveSIMLockSuccessDialog; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.SimplifyMainFragment; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.SkipCountDownLimit; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.AddSideBarExpandReceiver; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.BlurSecurity; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.game.GamePerformanceWildMode; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.game.RemoveMacroBlackList; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.game.UnlockGunService; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.DisableRemoveScreenHoldOn; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.UnlockVideoSomeFunc; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.VBVideoMode; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.VideoDolbyOpen; - -@HookBase(targetPackage = "com.miui.securitycenter", isPad = 1, targetSdk = 33) -public class SecurityCenterT extends BaseModule { - - @Override - public void handleLoadPackage() { - - // 应用管理 - initHook(new AppDefaultSort(), mPrefsMap.getStringAsInt("security_center_app_default_sort", 0) > 0); - initHook(new AppRestrict(), mPrefsMap.getBoolean("security_center_app_restrict")); - initHook(new AppDisable(), mPrefsMap.getBoolean("security_center_app_disable")); - initHook(new AppDetails(), mPrefsMap.getBoolean("security_center_app_details")); - initHook(DisableReport.INSTANCE, mPrefsMap.getBoolean("security_center_disable_ban")); - initHook(new OpenByDefaultSetting(), mPrefsMap.getBoolean("security_center_app_default_setting")); - initHook(AddAppInfoEntry.INSTANCE, mPrefsMap.getBoolean("security_center_aosp_app_info")); - initHook(AddAppManagerEntry.INSTANCE, mPrefsMap.getBoolean("security_center_aosp_app_manager")); - - // 省电与电池 - initHook(ShowBatteryTemperatureNew.INSTANCE, mPrefsMap.getBoolean("security_center_show_battery_temperature")); - initHook(UnlockSuperWirelessCharge.INSTANCE, mPrefsMap.getBoolean("security_center_super_wireless_charge")); - initHook(ScreenUsedTime.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_screen_time")); - initHook(new UnlockSmartCharge(), mPrefsMap.getBoolean("security_center_unlock_smart_charge")); - initHook(BatteryHealth.INSTANCE, mPrefsMap.getBoolean("security_center_show_battery_health")); - initHook(new UnlockLowTempExtEndurance(), mPrefsMap.getBoolean("security_center_battery_unlock_low_temp_ext_endurance")); - - // 隐私保护 - initHook(new AppLockPinScramble(), mPrefsMap.getBoolean("security_center_applock_pin_scramble")); - initHook(AiClipboardEnable.INSTANCE, mPrefsMap.getBoolean("security_center_ai_clipboard")); - initHook(BlurLocationEnable.INSTANCE, mPrefsMap.getBoolean("security_center_blur_location")); - initHook(GetNumberEnable.INSTANCE, mPrefsMap.getBoolean("security_center_get_number")); - initHook(new HideXOptModeTip(), mPrefsMap.getBoolean("security_center_hide_xopt_mode_tip")); - - // 前置摄像助手 - initHook(BeautyLightAuto.INSTANCE, mPrefsMap.getBoolean("security_center_beauty_face") || - mPrefsMap.getBoolean("security_center_beauty_light_auto")); - initHook(BeautyPrivacy.INSTANCE, mPrefsMap.getBoolean("security_center_beauty_privacy")); - initHook(BeautyPc.INSTANCE, mPrefsMap.getBoolean("security_center_beauty_pc")); - - // 其他 - initHook(new DisableRootedCheck(), mPrefsMap.getBoolean("security_center_disable_root_check_environment")); - initHook(SimplifyMainFragment.INSTANCE, mPrefsMap.getBoolean("security_center_simplify_home")); - initHook(new InstallIntercept(), mPrefsMap.getBoolean("security_center_install_intercept")); - initHook(LockOneHundredPoints.INSTANCE, mPrefsMap.getBoolean("security_center_score")); - initHook(new SkipCountDownLimit(), mPrefsMap.getBoolean("security_center_skip_count_down_limit")); - initHook(DisableRootCheck.INSTANCE, mPrefsMap.getBoolean("security_center_disable_root_check")); - initHook(FuckRiskPkg.INSTANCE, mPrefsMap.getBoolean("security_center_disable_send_malicious_app_notification")); - initHook(NoLowBatteryWarning.INSTANCE, mPrefsMap.getBoolean("security_center_remove_low_battery_reminder")); - initHook(RemoveSIMLockSuccessDialog.INSTANCE, mPrefsMap.getBoolean("security_center_remove_simlock_success_dialog")); - initHook(new UnlockFbo(), mPrefsMap.getBoolean("security_center_unlock_fbo")); - initHook(BypassSimLockMiAccountAuth.INSTANCE, mPrefsMap.getBoolean("security_center_bypass_simlock_miaccount_auth")); - initHook(new BypassAdbInstallVerify(), mPrefsMap.getBoolean("security_center_adb_install_verify")); - - // 小窗和气泡通知 - initHook(new RemoveConversationBubbleSettingsRestriction(), mPrefsMap.getBoolean("security_center_remove_conversation_bubble_settings_restriction")); - initHook(IsSbnBelongToActiveBubbleApp.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_side_hide_freeform")); - initHook(GetBubbleAppString.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_side_hide_freeform")); - - // 移除打开应用弹窗 - initHook(new RemoveOpenAppConfirmationPopup(), mPrefsMap.getBoolean("security_center_remove_open_app_confirmation_popup")); - - // 全局侧边栏 - boolean isVideoFunc = mPrefsMap.getBoolean("security_center_unlock_memc") || - mPrefsMap.getBoolean("security_center_unlock_s_resolution") || - mPrefsMap.getBoolean("security_center_unlock_enhance_contours"); - - initHook(new PrivacyThumbnailBlur(), mPrefsMap.getBoolean("security_center_privacy_thumbnail_blur")); - initHook(new PowerSaver(), mPrefsMap.getBoolean("security_center_power_saver")); - initHook(new NewBoxBlur(), mPrefsMap.getBoolean("security_center_newbox_custom_enable")); - initHook(BlurSecurity.INSTANCE, mPrefsMap.getBoolean("se_enable")); - initHook(SidebarLineCustom.INSTANCE, mPrefsMap.getBoolean("security_center_sidebar_line_color")); - initHook(new ScLockApp(), mPrefsMap.getBoolean("system_framework_guided_access_sc")); - initHook(new RemoveMacroBlackList(), mPrefsMap.getBoolean("security_center_remove_macro_black_list")); - initHook(UnlockGunService.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_gun_service")); - initHook(DisableRemoveScreenHoldOn.INSTANCE, mPrefsMap.getBoolean("security_center_disable_remove_screen_hold_on")); - initHook(UnlockVideoSomeFunc.INSTANCE, isVideoFunc); - initHook(new AddSideBarExpandReceiver(), mPrefsMap.getBoolean("security_center_hide_sidebar")); - // initHook(new DockSuggest(), mPrefsMap.getStringAsInt("security_center_sidebar_show_suggest", 0) != 0); - initHook(new VideoDolbyOpen(), mPrefsMap.getBoolean("security_center_dolby_open")); - initHook(new VBVideoMode(), mPrefsMap.getBoolean("security_center_unlock_new_vb")); - initHook(new GamePerformanceWildMode(), mPrefsMap.getBoolean("security_center_game_performance_wild_mode")); - - initHook(new PowerConsumptionRanking(), mPrefsMap.getBoolean("security_center_power_consumption_ranking")); - - // initHook(new EnableGameSpeed(), mPrefsMap.getBoolean("security_center_game_speed")); - - // reshook - initHook(SidebarLineCustom.INSTANCE, mPrefsMap.getBoolean("security_center_sidebar_line_color")); - - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterU.java index 574ea5ea7..acdce3cce 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterU.java @@ -54,9 +54,6 @@ import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyLightAuto; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPc; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPrivacy; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.AiClipboardEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.BlurLocationEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.GetNumberEnable; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.BypassSimLockMiAccountAuth; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.DisableRootCheck; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.FuckRiskPkg; @@ -102,9 +99,6 @@ public void handleLoadPackage() { // 隐私保护 initHook(new AppLockPinScramble(), mPrefsMap.getBoolean("security_center_applock_pin_scramble")); - initHook(AiClipboardEnable.INSTANCE, mPrefsMap.getBoolean("security_center_ai_clipboard")); - initHook(BlurLocationEnable.INSTANCE, mPrefsMap.getBoolean("security_center_blur_location")); - initHook(GetNumberEnable.INSTANCE, mPrefsMap.getBoolean("security_center_get_number")); initHook(new HideXOptModeTip(), mPrefsMap.getBoolean("security_center_hide_xopt_mode_tip")); // 前置摄像助手 diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterV.java index 2795f41c6..4a9b92ec4 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Pad/SecurityCenterV.java @@ -54,9 +54,6 @@ import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyLightAuto; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPc; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPrivacy; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.AiClipboardEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.BlurLocationEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.GetNumberEnable; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.BypassSimLockMiAccountAuth; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.DisableRootCheck; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.FuckRiskPkg; @@ -102,9 +99,6 @@ public void handleLoadPackage() { // 隐私保护 initHook(new AppLockPinScramble(), mPrefsMap.getBoolean("security_center_applock_pin_scramble")); - initHook(AiClipboardEnable.INSTANCE, mPrefsMap.getBoolean("security_center_ai_clipboard")); - initHook(BlurLocationEnable.INSTANCE, mPrefsMap.getBoolean("security_center_blur_location")); - initHook(GetNumberEnable.INSTANCE, mPrefsMap.getBoolean("security_center_get_number")); initHook(new HideXOptModeTip(), mPrefsMap.getBoolean("security_center_hide_xopt_mode_tip")); // 前置摄像助手 diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterT.java deleted file mode 100644 index 6802bb9af..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterT.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.SecurityCenter.Phone; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.securitycenter.AppLockPinScramble; -import com.sevtinge.hyperceiler.module.hook.securitycenter.BypassAdbInstallVerify; -import com.sevtinge.hyperceiler.module.hook.securitycenter.DisableReport; -import com.sevtinge.hyperceiler.module.hook.securitycenter.DisableRootedCheck; -import com.sevtinge.hyperceiler.module.hook.securitycenter.GetBubbleAppString; -import com.sevtinge.hyperceiler.module.hook.securitycenter.HideXOptModeTip; -import com.sevtinge.hyperceiler.module.hook.securitycenter.InstallIntercept; -import com.sevtinge.hyperceiler.module.hook.securitycenter.IsSbnBelongToActiveBubbleApp; -import com.sevtinge.hyperceiler.module.hook.securitycenter.NewBoxBlur; -import com.sevtinge.hyperceiler.module.hook.securitycenter.PowerSaver; -import com.sevtinge.hyperceiler.module.hook.securitycenter.PrivacyThumbnailBlur; -import com.sevtinge.hyperceiler.module.hook.securitycenter.RemoveConversationBubbleSettingsRestriction; -import com.sevtinge.hyperceiler.module.hook.securitycenter.RemoveOpenAppConfirmationPopup; -import com.sevtinge.hyperceiler.module.hook.securitycenter.ScLockApp; -import com.sevtinge.hyperceiler.module.hook.securitycenter.SidebarLineCustom; -import com.sevtinge.hyperceiler.module.hook.securitycenter.UnlockFbo; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AddAppInfoEntry; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AddAppManagerEntry; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppDefaultSort; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppDetails; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppDisable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.AppRestrict; -import com.sevtinge.hyperceiler.module.hook.securitycenter.app.OpenByDefaultSetting; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.BatteryHealth; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.PowerConsumptionRanking; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.ScreenUsedTime; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.ShowBatteryTemperatureNew; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.UnlockLowTempExtEndurance; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.UnlockSmartCharge; -import com.sevtinge.hyperceiler.module.hook.securitycenter.battery.UnlockSuperWirelessCharge; -import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyLightAuto; -import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPc; -import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPrivacy; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.AiClipboardEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.BlurLocationEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.GetNumberEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.BypassSimLockMiAccountAuth; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.DisableRootCheck; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.FuckRiskPkg; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.LockOneHundredPoints; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.NoLowBatteryWarning; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.RemoveSIMLockSuccessDialog; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.SimplifyMainFragment; -import com.sevtinge.hyperceiler.module.hook.securitycenter.other.SkipCountDownLimit; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.AddSideBarExpandReceiver; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.BlurSecurity; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.game.GamePerformanceWildMode; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.game.RemoveMacroBlackList; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.game.UnlockGunService; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.DisableRemoveScreenHoldOn; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.UnlockVideoSomeFunc; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.VBVideoMode; -import com.sevtinge.hyperceiler.module.hook.securitycenter.sidebar.video.VideoDolbyOpen; - -@HookBase(targetPackage = "com.miui.securitycenter", isPad = 2, targetSdk = 33) -public class SecurityCenterT extends BaseModule { - - @Override - public void handleLoadPackage() { - - // 应用管理 - initHook(new AppDefaultSort(), mPrefsMap.getStringAsInt("security_center_app_default_sort", 0) > 0); - initHook(new AppRestrict(), mPrefsMap.getBoolean("security_center_app_restrict")); - initHook(new AppDisable(), mPrefsMap.getBoolean("security_center_app_disable")); - initHook(new AppDetails(), mPrefsMap.getBoolean("security_center_app_details")); - initHook(DisableReport.INSTANCE, mPrefsMap.getBoolean("security_center_disable_ban")); - initHook(new OpenByDefaultSetting(), mPrefsMap.getBoolean("security_center_app_default_setting")); - initHook(AddAppInfoEntry.INSTANCE, mPrefsMap.getBoolean("security_center_aosp_app_info")); - initHook(AddAppManagerEntry.INSTANCE, mPrefsMap.getBoolean("security_center_aosp_app_manager")); - - // 省电与电池 - initHook(ShowBatteryTemperatureNew.INSTANCE, mPrefsMap.getBoolean("security_center_show_battery_temperature")); - initHook(UnlockSuperWirelessCharge.INSTANCE, mPrefsMap.getBoolean("security_center_super_wireless_charge")); - initHook(ScreenUsedTime.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_screen_time")); - initHook(new UnlockSmartCharge(), mPrefsMap.getBoolean("security_center_unlock_smart_charge")); - initHook(BatteryHealth.INSTANCE, mPrefsMap.getBoolean("security_center_show_battery_health")); - initHook(new UnlockLowTempExtEndurance(), mPrefsMap.getBoolean("security_center_battery_unlock_low_temp_ext_endurance")); - - // 隐私保护 - initHook(new AppLockPinScramble(), mPrefsMap.getBoolean("security_center_applock_pin_scramble")); - initHook(AiClipboardEnable.INSTANCE, mPrefsMap.getBoolean("security_center_ai_clipboard")); - initHook(BlurLocationEnable.INSTANCE, mPrefsMap.getBoolean("security_center_blur_location")); - initHook(GetNumberEnable.INSTANCE, mPrefsMap.getBoolean("security_center_get_number")); - initHook(new HideXOptModeTip(), mPrefsMap.getBoolean("security_center_hide_xopt_mode_tip")); - - // 前置摄像助手 - initHook(BeautyLightAuto.INSTANCE, mPrefsMap.getBoolean("security_center_beauty_face") || - mPrefsMap.getBoolean("security_center_beauty_light_auto")); - initHook(BeautyPrivacy.INSTANCE, mPrefsMap.getBoolean("security_center_beauty_privacy")); - initHook(BeautyPc.INSTANCE, mPrefsMap.getBoolean("security_center_beauty_pc")); - - // 其他 - initHook(new DisableRootedCheck(), mPrefsMap.getBoolean("security_center_disable_root_check_environment")); - initHook(SimplifyMainFragment.INSTANCE, mPrefsMap.getBoolean("security_center_simplify_home")); - initHook(new InstallIntercept(), mPrefsMap.getBoolean("security_center_install_intercept")); - initHook(LockOneHundredPoints.INSTANCE, mPrefsMap.getBoolean("security_center_score")); - initHook(new SkipCountDownLimit(), mPrefsMap.getBoolean("security_center_skip_count_down_limit")); - initHook(DisableRootCheck.INSTANCE, mPrefsMap.getBoolean("security_center_disable_root_check")); - initHook(FuckRiskPkg.INSTANCE, mPrefsMap.getBoolean("security_center_disable_send_malicious_app_notification")); - initHook(NoLowBatteryWarning.INSTANCE, mPrefsMap.getBoolean("security_center_remove_low_battery_reminder")); - initHook(RemoveSIMLockSuccessDialog.INSTANCE, mPrefsMap.getBoolean("security_center_remove_simlock_success_dialog")); - initHook(new UnlockFbo(), mPrefsMap.getBoolean("security_center_unlock_fbo")); - initHook(BypassSimLockMiAccountAuth.INSTANCE, mPrefsMap.getBoolean("security_center_bypass_simlock_miaccount_auth")); - initHook(new BypassAdbInstallVerify(), mPrefsMap.getBoolean("security_center_adb_install_verify")); - - // 小窗和气泡通知 - initHook(new RemoveConversationBubbleSettingsRestriction(), mPrefsMap.getBoolean("security_center_remove_conversation_bubble_settings_restriction")); - initHook(IsSbnBelongToActiveBubbleApp.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_side_hide_freeform")); - initHook(GetBubbleAppString.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_side_hide_freeform")); - - // 移除打开应用弹窗 - initHook(new RemoveOpenAppConfirmationPopup(), mPrefsMap.getBoolean("security_center_remove_open_app_confirmation_popup")); - - // 全局侧边栏 - boolean isVideoFunc = mPrefsMap.getBoolean("security_center_unlock_memc") || - mPrefsMap.getBoolean("security_center_unlock_s_resolution") || - mPrefsMap.getBoolean("security_center_unlock_enhance_contours"); - - initHook(new PrivacyThumbnailBlur(), mPrefsMap.getBoolean("security_center_privacy_thumbnail_blur")); - initHook(new PowerSaver(), mPrefsMap.getBoolean("security_center_power_saver")); - initHook(new NewBoxBlur(), mPrefsMap.getBoolean("security_center_newbox_custom_enable")); - initHook(BlurSecurity.INSTANCE, mPrefsMap.getBoolean("se_enable")); - initHook(SidebarLineCustom.INSTANCE, mPrefsMap.getBoolean("security_center_sidebar_line_color")); - initHook(new ScLockApp(), mPrefsMap.getBoolean("system_framework_guided_access_sc")); - initHook(new RemoveMacroBlackList(), mPrefsMap.getBoolean("security_center_remove_macro_black_list")); - initHook(UnlockGunService.INSTANCE, mPrefsMap.getBoolean("security_center_unlock_gun_service")); - initHook(DisableRemoveScreenHoldOn.INSTANCE, mPrefsMap.getBoolean("security_center_disable_remove_screen_hold_on")); - initHook(UnlockVideoSomeFunc.INSTANCE, isVideoFunc); - initHook(new AddSideBarExpandReceiver(), mPrefsMap.getBoolean("security_center_hide_sidebar")); - // initHook(new DockSuggest(), mPrefsMap.getStringAsInt("security_center_sidebar_show_suggest", 0) != 0); - initHook(new VideoDolbyOpen(), mPrefsMap.getBoolean("security_center_dolby_open")); - initHook(new VBVideoMode(), mPrefsMap.getBoolean("security_center_unlock_new_vb")); - initHook(new GamePerformanceWildMode(), mPrefsMap.getBoolean("security_center_game_performance_wild_mode")); - - initHook(new PowerConsumptionRanking(), mPrefsMap.getBoolean("security_center_power_consumption_ranking")); - - // initHook(new EnableGameSpeed(), mPrefsMap.getBoolean("security_center_game_speed")); - - // reshook - initHook(SidebarLineCustom.INSTANCE, mPrefsMap.getBoolean("security_center_sidebar_line_color")); - - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterU.java index a6b65df4e..78ffaae8c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterU.java @@ -54,9 +54,6 @@ import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyLightAuto; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPc; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPrivacy; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.AiClipboardEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.BlurLocationEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.GetNumberEnable; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.BypassSimLockMiAccountAuth; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.DisableRootCheck; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.FuckRiskPkg; @@ -102,9 +99,6 @@ public void handleLoadPackage() { // 隐私保护 initHook(new AppLockPinScramble(), mPrefsMap.getBoolean("security_center_applock_pin_scramble")); - initHook(AiClipboardEnable.INSTANCE, mPrefsMap.getBoolean("security_center_ai_clipboard")); - initHook(BlurLocationEnable.INSTANCE, mPrefsMap.getBoolean("security_center_blur_location")); - initHook(GetNumberEnable.INSTANCE, mPrefsMap.getBoolean("security_center_get_number")); initHook(new HideXOptModeTip(), mPrefsMap.getBoolean("security_center_hide_xopt_mode_tip")); // 前置摄像助手 diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterV.java index a4144b5a4..c7d6892b5 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SecurityCenter/Phone/SecurityCenterV.java @@ -54,9 +54,6 @@ import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyLightAuto; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPc; import com.sevtinge.hyperceiler.module.hook.securitycenter.beauty.BeautyPrivacy; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.AiClipboardEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.BlurLocationEnable; -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.GetNumberEnable; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.BypassSimLockMiAccountAuth; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.DisableRootCheck; import com.sevtinge.hyperceiler.module.hook.securitycenter.other.FuckRiskPkg; @@ -102,9 +99,6 @@ public void handleLoadPackage() { // 隐私保护 initHook(new AppLockPinScramble(), mPrefsMap.getBoolean("security_center_applock_pin_scramble")); - initHook(AiClipboardEnable.INSTANCE, mPrefsMap.getBoolean("security_center_ai_clipboard")); - initHook(BlurLocationEnable.INSTANCE, mPrefsMap.getBoolean("security_center_blur_location")); - initHook(GetNumberEnable.INSTANCE, mPrefsMap.getBoolean("security_center_get_number")); initHook(new HideXOptModeTip(), mPrefsMap.getBoolean("security_center_hide_xopt_mode_tip")); // 前置摄像助手 diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkT.java deleted file mode 100644 index 2bf97ffa5..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkT.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.SystemFramework.Pad; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.GlobalActions; -import com.sevtinge.hyperceiler.module.hook.systemframework.AllowAutoStart; -import com.sevtinge.hyperceiler.module.hook.systemframework.AllowDisableProtectedPackage; -import com.sevtinge.hyperceiler.module.hook.systemframework.AllowUntrustedTouch; -import com.sevtinge.hyperceiler.module.hook.systemframework.AntiQues; -import com.sevtinge.hyperceiler.module.hook.systemframework.AppLinkVerify; -import com.sevtinge.hyperceiler.module.hook.systemframework.BackgroundBlur; -import com.sevtinge.hyperceiler.module.hook.systemframework.BypassUnknownSourcesRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.CleanOpenMenu; -import com.sevtinge.hyperceiler.module.hook.systemframework.CleanProcessTextMenu; -import com.sevtinge.hyperceiler.module.hook.systemframework.CleanShareMenu; -import com.sevtinge.hyperceiler.module.hook.systemframework.ClipboardWhitelist; -import com.sevtinge.hyperceiler.module.hook.systemframework.DeleteOnPostNotification; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableCleaner; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableFreeformBlackList; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableGestureMonitor; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableMiuiLite; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableMiuiWatermark; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisablePinVerifyPer72h; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableVerifyCanBeDisabled; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; -import com.sevtinge.hyperceiler.module.hook.systemframework.FreeformBubble; -import com.sevtinge.hyperceiler.module.hook.systemframework.HookEntry; -import com.sevtinge.hyperceiler.module.hook.systemframework.LinkTurboToast; -import com.sevtinge.hyperceiler.module.hook.systemframework.MultiFreeFormSupported; -import com.sevtinge.hyperceiler.module.hook.systemframework.PackagePermissions; -import com.sevtinge.hyperceiler.module.hook.systemframework.PstedClipboard; -import com.sevtinge.hyperceiler.module.hook.systemframework.QuickScreenshot; -import com.sevtinge.hyperceiler.module.hook.systemframework.RemoveSmallWindowRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.RotationButton; -import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; -import com.sevtinge.hyperceiler.module.hook.systemframework.SpeedInstall; -import com.sevtinge.hyperceiler.module.hook.systemframework.StickyFloatingWindows; -import com.sevtinge.hyperceiler.module.hook.systemframework.SystemLockApp; -import com.sevtinge.hyperceiler.module.hook.systemframework.ThermalBrightness; -import com.sevtinge.hyperceiler.module.hook.systemframework.UseAndroidPackageInstaller; -import com.sevtinge.hyperceiler.module.hook.systemframework.UseOriginalAnimation; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDefaultStream; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDisableSafe; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeFirstPress; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeMediaSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSeparateControl; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.BypassSignCheckForT; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.AllDarkMode; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.DisplayCutout; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.ThemeProvider; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.ToastTime; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.UseAOSPScreenShot; -import com.sevtinge.hyperceiler.module.hook.systemframework.freeform.FreeFormCount; -import com.sevtinge.hyperceiler.module.hook.systemframework.freeform.OpenAppInFreeForm; -import com.sevtinge.hyperceiler.module.hook.systemframework.freeform.UnForegroundPin; -import com.sevtinge.hyperceiler.module.hook.systemframework.mipad.IgnoreStylusKeyGesture; -import com.sevtinge.hyperceiler.module.hook.systemframework.mipad.NoMagicPointer; -import com.sevtinge.hyperceiler.module.hook.systemframework.mipad.RemoveStylusBluetoothRestriction; -import com.sevtinge.hyperceiler.module.hook.systemframework.mipad.RestoreEsc; -import com.sevtinge.hyperceiler.module.hook.systemframework.mipad.SetGestureNeedFingerNum; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.DualNRSupport; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.DualSASupport; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.FlightModeHotSpot; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.N1Band; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.N28Band; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.N5N8Band; -import com.sevtinge.hyperceiler.module.hook.various.NoAccessDeviceLogsRequest; - -@HookBase(targetPackage = "android", isPad = 1, targetSdk = 33) -public class SystemFrameworkT extends BaseModule { - - @Override - public void handleLoadPackage() { - initHook(new DisableMiuiWatermark(), mPrefsMap.getBoolean("system_framework_disable_miui_watermark")); - initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); - // 小窗 - initHook(new AllowAutoStart(), mPrefsMap.getBoolean("system_framework_auto_start_apps_menu")); - initHook(new FreeFormCount(), mPrefsMap.getBoolean("system_framework_freeform_count")); - initHook(new FreeformBubble(), mPrefsMap.getBoolean("system_framework_freeform_bubble")); - initHook(new DisableFreeformBlackList(), mPrefsMap.getBoolean("system_framework_disable_freeform_blacklist")); - initHook(RemoveSmallWindowRestrictions.INSTANCE, mPrefsMap.getBoolean("system_framework_disable_freeform_blacklist")); - initHook(new StickyFloatingWindows(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); - initHook(MultiFreeFormSupported.INSTANCE, mPrefsMap.getBoolean("system_framework_freeform_recents_to_small_freeform")); - initHook(new OpenAppInFreeForm(), mPrefsMap.getBoolean("system_framework_freeform_jump")); - initHook(new UnForegroundPin(), mPrefsMap.getBoolean("system_framework_freeform_foreground_pin")); - // initHook(new OpenAppInFreeForm(), mPrefsMap.getBoolean("system_framework_freeform_jump")); - - // 音量 - initHook(new VolumeDefaultStream(), true); - initHook(new VolumeFirstPress(), mPrefsMap.getBoolean("system_framework_volume_first_press")); - initHook(new VolumeSeparateControl(), mPrefsMap.getBoolean("system_framework_volume_separate_control")); - initHook(new VolumeSteps(), mPrefsMap.getInt("system_framework_volume_steps", 0) > 0); - initHook(new VolumeMediaSteps(), mPrefsMap.getBoolean("system_framework_volume_media_steps_enable")); - initHook(new VolumeDisableSafe(), mPrefsMap.getStringAsInt("system_framework_volume_disable_safe_new", 0) != 0); - - // 其他 - initHook(new SystemLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new ScreenRotation(), mPrefsMap.getBoolean("system_framework_screen_all_rotations")); - initHook(new CleanShareMenu(), mPrefsMap.getBoolean("system_framework_clean_share_menu")); - initHook(new CleanOpenMenu(), mPrefsMap.getBoolean("system_framework_clean_open_menu")); - initHook(new CleanProcessTextMenu(), mPrefsMap.getBoolean("system_framework_clean_process_text_menu")); - initHook(new AllowUntrustedTouch(), mPrefsMap.getBoolean("system_framework_allow_untrusted_touch")); - initHook(new FlagSecure(), mPrefsMap.getBoolean("system_other_flag_secure")); - initHook(new AppLinkVerify(), mPrefsMap.getBoolean("system_framework_disable_app_link_verify")); - initHook(new UseOriginalAnimation(), mPrefsMap.getBoolean("system_framework_other_use_original_animation")); - initHook(new SpeedInstall(), mPrefsMap.getBoolean("system_framework_other_speed_install")); - initHook(DeleteOnPostNotification.INSTANCE, mPrefsMap.getBoolean("system_other_delete_on_post_notification")); - initHook(NoAccessDeviceLogsRequest.INSTANCE, mPrefsMap.getBoolean("various_disable_access_device_logs")); - initHook(new DisableMiuiLite(), mPrefsMap.getBoolean("system_framework_disablt_miuilite_check")); - initHook(new HookEntry(), mPrefsMap.getBoolean("system_framework_hook_entry")); - initHook(new PstedClipboard(), mPrefsMap.getBoolean("system_framework_posted_clipboard")); - initHook(new AllowDisableProtectedPackage(), mPrefsMap.getBoolean("system_framework_allow_disable_protected_package")); - // 允许应用后台读取剪切板 - initHook(new ClipboardWhitelist(), mPrefsMap.getBoolean("system_framework_clipboard_whitelist")); - - initHook(new BypassUnknownSourcesRestrictions(), mPrefsMap.getBoolean("system_framework_bypass_unknown_sources_restrictions")); - - // 显示 - initHook(new BackgroundBlur(), mPrefsMap.getBoolean("system_framework_background_blur_supported")); - initHook(DisplayCutout.INSTANCE, mPrefsMap.getBoolean("system_ui_display_hide_cutout_enable")); - initHook(UseAOSPScreenShot.INSTANCE, mPrefsMap.getBoolean("system_ui_display_use_aosp_screenshot_enable")); - initHook(new ToastTime(), mPrefsMap.getBoolean("system_ui_display_toast_times_enable")); - initHook(new AllDarkMode(), mPrefsMap.getBoolean("system_framework_allow_all_dark_mode")); - initHook(new ThemeProvider(), mPrefsMap.getBoolean("system_framework_allow_third_theme")); - // initHook(new AutoBrightness(), mPrefsMap.getBoolean("system_control_center_auto_brightness")); - - // 位置模拟 - // initHook(new LocationSimulation(), false); - - // 小米/红米平板设置相关 - initHook(IgnoreStylusKeyGesture.INSTANCE, mPrefsMap.getBoolean("mipad_input_ingore_gesture")); - initHook(NoMagicPointer.INSTANCE, mPrefsMap.getBoolean("mipad_input_close_magic")); - initHook(RemoveStylusBluetoothRestriction.INSTANCE, mPrefsMap.getBoolean("mipad_input_disable_bluetooth_new")); - initHook(RestoreEsc.INSTANCE, mPrefsMap.getBoolean("mipad_input_restore_esc")); - initHook(SetGestureNeedFingerNum.INSTANCE, mPrefsMap.getBoolean("mipad_input_need_finger_num")); - - // 核心破解 - initHook(BypassSignCheckForT.INSTANCE, mPrefsMap.getBoolean("system_framework_core_patch_auth_creak") || mPrefsMap.getBoolean("system_framework_core_patch_disable_integrity")); - - // 网络 - initHook(DualNRSupport.INSTANCE, mPrefsMap.getBoolean("phone_double_5g_nr")); - initHook(DualSASupport.INSTANCE, mPrefsMap.getBoolean("phone_double_5g_sa")); - initHook(N1Band.INSTANCE, mPrefsMap.getBoolean("phone_n1")); - initHook(N5N8Band.INSTANCE, mPrefsMap.getBoolean("phone_n5_n8")); - initHook(N28Band.INSTANCE, mPrefsMap.getBoolean("phone_n28")); - initHook(new FlightModeHotSpot(), mPrefsMap.getBoolean("system_framework_network_flightmode_hotspot")); - - // Other - initHook(new PackagePermissions(), true); - initHook(new RotationButton(), mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) == 2); - initHook(new GlobalActions(), mLoadPackageParam.processName.equals("android")); - initHook(new ThermalBrightness(), mPrefsMap.getBoolean("system_framework_other_thermal_brightness")); - initHook(DisableCleaner.INSTANCE, mPrefsMap.getBoolean("system_framework_other_disable_cleaner")); - initHook(DisableGestureMonitor.INSTANCE, mPrefsMap.getBoolean("system_framework_other_disable_gesture_monitor")); - initHook(new DisablePinVerifyPer72h(), mPrefsMap.getBoolean("system_framework_disable_72h_verify")); - initHook(new DisableVerifyCanBeDisabled(), mPrefsMap.getBoolean("system_framework_disable_verify_can_ve_disabled")); - initHook(new UseAndroidPackageInstaller(), mPrefsMap.getBoolean("system_framework_use_android_package_installer")); - initHook(new QuickScreenshot(), mPrefsMap.getBoolean("system_framework_quick_screenshot")); - initHook(new LinkTurboToast(), mPrefsMap.getBoolean("system_framework_disable_link_turbo_toast")); - - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkU.java index 92b56174d..db1e3554b 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkU.java @@ -52,7 +52,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.PstedClipboard; import com.sevtinge.hyperceiler.module.hook.systemframework.QuickScreenshot; import com.sevtinge.hyperceiler.module.hook.systemframework.RemoveSmallWindowRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.RotationButton; import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; import com.sevtinge.hyperceiler.module.hook.systemframework.SpeedInstall; import com.sevtinge.hyperceiler.module.hook.systemframework.StickyFloatingWindows; @@ -64,7 +63,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDisableSafe; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeFirstPress; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeMediaSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSeparateControl; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSteps; import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.BypassSignCheckForT; import com.sevtinge.hyperceiler.module.hook.systemframework.display.AllDarkMode; @@ -109,7 +107,6 @@ public void handleLoadPackage() { // 音量 initHook(new VolumeDefaultStream(), true); initHook(new VolumeFirstPress(), mPrefsMap.getBoolean("system_framework_volume_first_press")); - initHook(new VolumeSeparateControl(), mPrefsMap.getBoolean("system_framework_volume_separate_control")); initHook(new VolumeSteps(), mPrefsMap.getInt("system_framework_volume_steps", 0) > 0); initHook(new VolumeMediaSteps(), mPrefsMap.getBoolean("system_framework_volume_media_steps_enable")); initHook(new VolumeDisableSafe(), mPrefsMap.getStringAsInt("system_framework_volume_disable_safe_new", 0) != 0); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkV.java index e8c6c27a6..5af62820d 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Pad/SystemFrameworkV.java @@ -52,7 +52,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.PstedClipboard; import com.sevtinge.hyperceiler.module.hook.systemframework.QuickScreenshot; import com.sevtinge.hyperceiler.module.hook.systemframework.RemoveSmallWindowRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.RotationButton; import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; import com.sevtinge.hyperceiler.module.hook.systemframework.SpeedInstall; import com.sevtinge.hyperceiler.module.hook.systemframework.StickyFloatingWindows; @@ -64,7 +63,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDisableSafe; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeFirstPress; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeMediaSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSeparateControl; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSteps; import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.AllowUpdateSystemApp; import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.BypassIsolationViolation; @@ -111,7 +109,6 @@ public void handleLoadPackage() { // 音量 initHook(new VolumeDefaultStream(), true); initHook(new VolumeFirstPress(), mPrefsMap.getBoolean("system_framework_volume_first_press")); - initHook(new VolumeSeparateControl(), mPrefsMap.getBoolean("system_framework_volume_separate_control")); initHook(new VolumeSteps(), mPrefsMap.getInt("system_framework_volume_steps", 0) > 0); initHook(new VolumeMediaSteps(), mPrefsMap.getBoolean("system_framework_volume_media_steps_enable")); initHook(new VolumeDisableSafe(), mPrefsMap.getStringAsInt("system_framework_volume_disable_safe_new", 0) != 0); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkT.java deleted file mode 100644 index 1531f6647..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkT.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.SystemFramework.Phone; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.GlobalActions; -import com.sevtinge.hyperceiler.module.hook.systemframework.AllowAutoStart; -import com.sevtinge.hyperceiler.module.hook.systemframework.AllowDisableProtectedPackage; -import com.sevtinge.hyperceiler.module.hook.systemframework.AllowUntrustedTouch; -import com.sevtinge.hyperceiler.module.hook.systemframework.AntiQues; -import com.sevtinge.hyperceiler.module.hook.systemframework.AppLinkVerify; -import com.sevtinge.hyperceiler.module.hook.systemframework.BackgroundBlur; -import com.sevtinge.hyperceiler.module.hook.systemframework.BypassUnknownSourcesRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.CleanOpenMenu; -import com.sevtinge.hyperceiler.module.hook.systemframework.CleanProcessTextMenu; -import com.sevtinge.hyperceiler.module.hook.systemframework.CleanShareMenu; -import com.sevtinge.hyperceiler.module.hook.systemframework.ClipboardWhitelist; -import com.sevtinge.hyperceiler.module.hook.systemframework.DeleteOnPostNotification; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableCleaner; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableFreeformBlackList; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableGestureMonitor; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableMiuiLite; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableMiuiWatermark; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisablePinVerifyPer72h; -import com.sevtinge.hyperceiler.module.hook.systemframework.DisableVerifyCanBeDisabled; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; -import com.sevtinge.hyperceiler.module.hook.systemframework.FreeformBubble; -import com.sevtinge.hyperceiler.module.hook.systemframework.HookEntry; -import com.sevtinge.hyperceiler.module.hook.systemframework.LinkTurboToast; -import com.sevtinge.hyperceiler.module.hook.systemframework.MultiFreeFormSupported; -import com.sevtinge.hyperceiler.module.hook.systemframework.PackagePermissions; -import com.sevtinge.hyperceiler.module.hook.systemframework.PstedClipboard; -import com.sevtinge.hyperceiler.module.hook.systemframework.QuickScreenshot; -import com.sevtinge.hyperceiler.module.hook.systemframework.RemoveSmallWindowRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.RotationButton; -import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; -import com.sevtinge.hyperceiler.module.hook.systemframework.SpeedInstall; -import com.sevtinge.hyperceiler.module.hook.systemframework.StickyFloatingWindows; -import com.sevtinge.hyperceiler.module.hook.systemframework.SystemLockApp; -import com.sevtinge.hyperceiler.module.hook.systemframework.ThermalBrightness; -import com.sevtinge.hyperceiler.module.hook.systemframework.UseAndroidPackageInstaller; -import com.sevtinge.hyperceiler.module.hook.systemframework.UseOriginalAnimation; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDefaultStream; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDisableSafe; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeFirstPress; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeMediaSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSeparateControl; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.BypassSignCheckForT; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.AllDarkMode; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.DisplayCutout; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.ThemeProvider; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.ToastTime; -import com.sevtinge.hyperceiler.module.hook.systemframework.display.UseAOSPScreenShot; -import com.sevtinge.hyperceiler.module.hook.systemframework.freeform.FreeFormCount; -import com.sevtinge.hyperceiler.module.hook.systemframework.freeform.OpenAppInFreeForm; -import com.sevtinge.hyperceiler.module.hook.systemframework.freeform.UnForegroundPin; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.DualNRSupport; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.DualSASupport; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.FlightModeHotSpot; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.N1Band; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.N28Band; -import com.sevtinge.hyperceiler.module.hook.systemframework.network.N5N8Band; -import com.sevtinge.hyperceiler.module.hook.various.NoAccessDeviceLogsRequest; - -@HookBase(targetPackage = "android", isPad = 2, targetSdk = 33) -public class SystemFrameworkT extends BaseModule { - - @Override - public void handleLoadPackage() { - initHook(new DisableMiuiWatermark(), mPrefsMap.getBoolean("system_framework_disable_miui_watermark")); - initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); - // 小窗 - initHook(new AllowAutoStart(), mPrefsMap.getBoolean("system_framework_auto_start_apps_menu")); - initHook(new FreeFormCount(), mPrefsMap.getBoolean("system_framework_freeform_count")); - initHook(new FreeformBubble(), mPrefsMap.getBoolean("system_framework_freeform_bubble")); - initHook(new DisableFreeformBlackList(), mPrefsMap.getBoolean("system_framework_disable_freeform_blacklist")); - initHook(RemoveSmallWindowRestrictions.INSTANCE, mPrefsMap.getBoolean("system_framework_disable_freeform_blacklist")); - initHook(new StickyFloatingWindows(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); - initHook(MultiFreeFormSupported.INSTANCE, mPrefsMap.getBoolean("system_framework_freeform_recents_to_small_freeform")); - initHook(new OpenAppInFreeForm(), mPrefsMap.getBoolean("system_framework_freeform_jump")); - initHook(new UnForegroundPin(), mPrefsMap.getBoolean("system_framework_freeform_foreground_pin")); - // initHook(new OpenAppInFreeForm(), mPrefsMap.getBoolean("system_framework_freeform_jump")); - - // 音量 - initHook(new VolumeDefaultStream(), true); - initHook(new VolumeFirstPress(), mPrefsMap.getBoolean("system_framework_volume_first_press")); - initHook(new VolumeSeparateControl(), mPrefsMap.getBoolean("system_framework_volume_separate_control")); - initHook(new VolumeSteps(), mPrefsMap.getInt("system_framework_volume_steps", 0) > 0); - initHook(new VolumeMediaSteps(), mPrefsMap.getBoolean("system_framework_volume_media_steps_enable")); - initHook(new VolumeDisableSafe(), mPrefsMap.getStringAsInt("system_framework_volume_disable_safe_new", 0) != 0); - - // 其他 - initHook(new SystemLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new ScreenRotation(), mPrefsMap.getBoolean("system_framework_screen_all_rotations")); - initHook(new CleanShareMenu(), mPrefsMap.getBoolean("system_framework_clean_share_menu")); - initHook(new CleanOpenMenu(), mPrefsMap.getBoolean("system_framework_clean_open_menu")); - initHook(new CleanProcessTextMenu(), mPrefsMap.getBoolean("system_framework_clean_process_text_menu")); - initHook(new AllowUntrustedTouch(), mPrefsMap.getBoolean("system_framework_allow_untrusted_touch")); - initHook(new FlagSecure(), mPrefsMap.getBoolean("system_other_flag_secure")); - initHook(new AppLinkVerify(), mPrefsMap.getBoolean("system_framework_disable_app_link_verify")); - initHook(new UseOriginalAnimation(), mPrefsMap.getBoolean("system_framework_other_use_original_animation")); - initHook(new SpeedInstall(), mPrefsMap.getBoolean("system_framework_other_speed_install")); - initHook(DeleteOnPostNotification.INSTANCE, mPrefsMap.getBoolean("system_other_delete_on_post_notification")); - initHook(NoAccessDeviceLogsRequest.INSTANCE, mPrefsMap.getBoolean("various_disable_access_device_logs")); - initHook(new DisableMiuiLite(), mPrefsMap.getBoolean("system_framework_disablt_miuilite_check")); - initHook(new HookEntry(), mPrefsMap.getBoolean("system_framework_hook_entry")); - initHook(new PstedClipboard(), mPrefsMap.getBoolean("system_framework_posted_clipboard")); - initHook(new AllowDisableProtectedPackage(), mPrefsMap.getBoolean("system_framework_allow_disable_protected_package")); - // 允许应用后台读取剪切板 - initHook(new ClipboardWhitelist(), mPrefsMap.getBoolean("system_framework_clipboard_whitelist")); - - initHook(new BypassUnknownSourcesRestrictions(), mPrefsMap.getBoolean("system_framework_bypass_unknown_sources_restrictions")); - - // 显示 - initHook(new BackgroundBlur(), mPrefsMap.getBoolean("system_framework_background_blur_supported")); - initHook(DisplayCutout.INSTANCE, mPrefsMap.getBoolean("system_ui_display_hide_cutout_enable")); - initHook(UseAOSPScreenShot.INSTANCE, mPrefsMap.getBoolean("system_ui_display_use_aosp_screenshot_enable")); - initHook(new ToastTime(), mPrefsMap.getBoolean("system_ui_display_toast_times_enable")); - initHook(new AllDarkMode(), mPrefsMap.getBoolean("system_framework_allow_all_dark_mode")); - initHook(new ThemeProvider(), mPrefsMap.getBoolean("system_framework_allow_third_theme")); - // initHook(new AutoBrightness(), mPrefsMap.getBoolean("system_control_center_auto_brightness")); - - // 位置模拟 - // initHook(new LocationSimulation(), false); - - - // 核心破解 - initHook(BypassSignCheckForT.INSTANCE, mPrefsMap.getBoolean("system_framework_core_patch_auth_creak") || mPrefsMap.getBoolean("system_framework_core_patch_disable_integrity")); - - // 网络 - initHook(DualNRSupport.INSTANCE, mPrefsMap.getBoolean("phone_double_5g_nr")); - initHook(DualSASupport.INSTANCE, mPrefsMap.getBoolean("phone_double_5g_sa")); - initHook(N1Band.INSTANCE, mPrefsMap.getBoolean("phone_n1")); - initHook(N5N8Band.INSTANCE, mPrefsMap.getBoolean("phone_n5_n8")); - initHook(N28Band.INSTANCE, mPrefsMap.getBoolean("phone_n28")); - initHook(new FlightModeHotSpot(), mPrefsMap.getBoolean("system_framework_network_flightmode_hotspot")); - - // Other - initHook(new PackagePermissions(), true); - initHook(new RotationButton(), mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) == 2); - initHook(new GlobalActions(), mLoadPackageParam.processName.equals("android")); - initHook(new ThermalBrightness(), mPrefsMap.getBoolean("system_framework_other_thermal_brightness")); - initHook(DisableCleaner.INSTANCE, mPrefsMap.getBoolean("system_framework_other_disable_cleaner")); - initHook(DisableGestureMonitor.INSTANCE, mPrefsMap.getBoolean("system_framework_other_disable_gesture_monitor")); - initHook(new DisablePinVerifyPer72h(), mPrefsMap.getBoolean("system_framework_disable_72h_verify")); - initHook(new DisableVerifyCanBeDisabled(), mPrefsMap.getBoolean("system_framework_disable_verify_can_ve_disabled")); - initHook(new UseAndroidPackageInstaller(), mPrefsMap.getBoolean("system_framework_use_android_package_installer")); - initHook(new QuickScreenshot(), mPrefsMap.getBoolean("system_framework_quick_screenshot")); - initHook(new LinkTurboToast(), mPrefsMap.getBoolean("system_framework_disable_link_turbo_toast")); - - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkU.java index d0c8d5012..0c1752805 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkU.java @@ -52,7 +52,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.PstedClipboard; import com.sevtinge.hyperceiler.module.hook.systemframework.QuickScreenshot; import com.sevtinge.hyperceiler.module.hook.systemframework.RemoveSmallWindowRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.RotationButton; import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; import com.sevtinge.hyperceiler.module.hook.systemframework.SpeedInstall; import com.sevtinge.hyperceiler.module.hook.systemframework.StickyFloatingWindows; @@ -64,7 +63,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDisableSafe; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeFirstPress; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeMediaSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSeparateControl; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSteps; import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.BypassSignCheckForT; import com.sevtinge.hyperceiler.module.hook.systemframework.display.AllDarkMode; @@ -104,7 +102,6 @@ public void handleLoadPackage() { // 音量 initHook(new VolumeDefaultStream(), true); initHook(new VolumeFirstPress(), mPrefsMap.getBoolean("system_framework_volume_first_press")); - initHook(new VolumeSeparateControl(), mPrefsMap.getBoolean("system_framework_volume_separate_control")); initHook(new VolumeSteps(), mPrefsMap.getInt("system_framework_volume_steps", 0) > 0); initHook(new VolumeMediaSteps(), mPrefsMap.getBoolean("system_framework_volume_media_steps_enable")); initHook(new VolumeDisableSafe(), mPrefsMap.getStringAsInt("system_framework_volume_disable_safe_new", 0) != 0); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkV.java index f24fd02b5..9cb395bda 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemFramework/Phone/SystemFrameworkV.java @@ -52,7 +52,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.PstedClipboard; import com.sevtinge.hyperceiler.module.hook.systemframework.QuickScreenshot; import com.sevtinge.hyperceiler.module.hook.systemframework.RemoveSmallWindowRestrictions; -import com.sevtinge.hyperceiler.module.hook.systemframework.RotationButton; import com.sevtinge.hyperceiler.module.hook.systemframework.ScreenRotation; import com.sevtinge.hyperceiler.module.hook.systemframework.SpeedInstall; import com.sevtinge.hyperceiler.module.hook.systemframework.StickyFloatingWindows; @@ -64,7 +63,6 @@ import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeDisableSafe; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeFirstPress; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeMediaSteps; -import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSeparateControl; import com.sevtinge.hyperceiler.module.hook.systemframework.VolumeSteps; import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.AllowUpdateSystemApp; import com.sevtinge.hyperceiler.module.hook.systemframework.corepatch.BypassIsolationViolation; @@ -106,7 +104,6 @@ public void handleLoadPackage() { // 音量 initHook(new VolumeDefaultStream(), true); initHook(new VolumeFirstPress(), mPrefsMap.getBoolean("system_framework_volume_first_press")); - initHook(new VolumeSeparateControl(), mPrefsMap.getBoolean("system_framework_volume_separate_control")); initHook(new VolumeSteps(), mPrefsMap.getInt("system_framework_volume_steps", 0) > 0); initHook(new VolumeMediaSteps(), mPrefsMap.getBoolean("system_framework_volume_media_steps_enable")); initHook(new VolumeDisableSafe(), mPrefsMap.getStringAsInt("system_framework_volume_disable_safe_new", 0) != 0); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsT.java deleted file mode 100644 index d744a735d..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsT.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * This file is part of HyperCeiler. - * - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.SystemSettings.Pad; - -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AddGoogleListHeader; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AddMiuiPlusEntry; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AllowManageAllNotifications; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AntiQues; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AppsFreezerEnable; -import com.sevtinge.hyperceiler.module.hook.systemsettings.DisableInstallUnknownVerify; -import com.sevtinge.hyperceiler.module.hook.systemsettings.EnableFoldArea; -import com.sevtinge.hyperceiler.module.hook.systemsettings.EnablePadArea; -import com.sevtinge.hyperceiler.module.hook.systemsettings.EnableSpeedMode; -import com.sevtinge.hyperceiler.module.hook.systemsettings.HyperCeilerSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.InternationalBuild; -import com.sevtinge.hyperceiler.module.hook.systemsettings.LanguageMenuShowAllApps; -import com.sevtinge.hyperceiler.module.hook.systemsettings.LinkTurbo; -import com.sevtinge.hyperceiler.module.hook.systemsettings.ModifySystemVersion; -import com.sevtinge.hyperceiler.module.hook.systemsettings.MoreNotificationSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.MoreVpnTypes; -import com.sevtinge.hyperceiler.module.hook.systemsettings.NewNFCPage; -import com.sevtinge.hyperceiler.module.hook.systemsettings.NoveltyHaptic; -import com.sevtinge.hyperceiler.module.hook.systemsettings.QuickManageOverlayPermission; -import com.sevtinge.hyperceiler.module.hook.systemsettings.QuickManageUnknownAppSources; -import com.sevtinge.hyperceiler.module.hook.systemsettings.QuickManagerAccessibilityPermission; -import com.sevtinge.hyperceiler.module.hook.systemsettings.RunningServices; -import com.sevtinge.hyperceiler.module.hook.systemsettings.ShowAutoUIMode; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnLockAreaScreenshot; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnlockMaxFps; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnlockNeverSleepScreen; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnlockTaplusForSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UsbModeChoose; -import com.sevtinge.hyperceiler.module.hook.systemsettings.ViewWifiPasswordHook; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VoipAssistantController; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockAi; -import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockMemc; -import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockSuperResolution; - -@HookBase(targetPackage = "com.android.settings", isPad = 1, targetSdk = 33) -public class SystemSettingsT extends BaseModule { - - @Override - public void handleLoadPackage() { - initHook(new HyperCeilerSettings(), mPrefsMap.getStringAsInt("settings_icon", 0) != 0); - - initHook(new ShowAutoUIMode(), mPrefsMap.getBoolean("system_settings_unlock_ui_mode")); - initHook(new LinkTurbo(), mPrefsMap.getBoolean("system_settings_linkturbo")); - initHook(new RunningServices(), true); // 显示原生内存信息 - initHook(new UsbModeChoose(), mPrefsMap.getStringAsInt("system_settings_usb_mode_choose", 0) != 0 - || mPrefsMap.getBoolean("system_settings_usb_mode")); - initHook(new ViewWifiPasswordHook(), mPrefsMap.getBoolean("system_settings_safe_wifi")); - initHook(new VoipAssistantController(), mPrefsMap.getBoolean("system_settings_voip_assistant_controller")); - initHook(new MoreVpnTypes(), mPrefsMap.getBoolean("system_settings_more_vpn_types")); - initHook(new AddMiuiPlusEntry(), mPrefsMap.getBoolean("mirror_unlock_miui_plus")); - initHook(new EnableSpeedMode(), mPrefsMap.getBoolean("system_settings_develop_speed_mode")); - initHook(new QuickManageOverlayPermission(), mPrefsMap.getBoolean("system_settings_permission_show_app_up")); - initHook(new QuickManageUnknownAppSources(), mPrefsMap.getBoolean("system_settings_permission_unknown_origin_app")); - initHook(new QuickManagerAccessibilityPermission(), mPrefsMap.getBoolean("system_settings_permission_accessibility")); - initHook(new InternationalBuild(), mPrefsMap.getBoolean("system_settings_international_build")); - initHook(new DisableInstallUnknownVerify(), mPrefsMap.getBoolean("system_settings_permission_disable_install_unknown_verify")); - initHook(new NewNFCPage(), mPrefsMap.getBoolean("system_settings_new_nfc_page")); - initHook(new AppsFreezerEnable(), mPrefsMap.getBoolean("system_settings_apps_freezer")); - // initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("various_disable_bluetooth_restrict")); - initHook(new VolumeSeparateControlForSettings(), mPrefsMap.getBoolean("system_framework_volume_separate_control") && !isMoreHyperOSVersion(1f)); - initHook(UnlockMaxFps.INSTANCE, mPrefsMap.getBoolean("system_settings_develop_max_fps")); - initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); - - initHook(new UnlockSuperResolution(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_sr")); - initHook(new UnlockAi(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_ai")); - initHook(new UnlockMemc(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_memc")); - initHook(UnLockAreaScreenshot.INSTANCE, mPrefsMap.getBoolean("system_settings_area_screenshot")); - initHook(NoveltyHaptic.INSTANCE, mPrefsMap.getBoolean("system_settings_novelty_haptic")); - initHook(new MoreNotificationSettings(), mPrefsMap.getBoolean("system_settings_more_notification_settings")); - initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); - initHook(new LanguageMenuShowAllApps(), mPrefsMap.getBoolean("system_settings_lang_menu_shouw_all_app")); - - initHook(new EnablePadArea(), mPrefsMap.getBoolean("system_settings_enable_pad_area")); - initHook(new EnableFoldArea(), mPrefsMap.getBoolean("system_settings_enable_fold_area")); - - initHook(new ModifySystemVersion(), mPrefsMap.getBoolean("updater_enable_miui_version") && mPrefsMap.getStringAsInt("updater_version_mode", 1) != 1); - - initHook(UnlockTaplusForSettings.INSTANCE, mPrefsMap.getBoolean("content_extension_unlock_taplus")); - - initHook(new AddGoogleListHeader(), mPrefsMap.getBoolean("system_settings_unlock_google_header")); - - initHook(new UnlockNeverSleepScreen(), mPrefsMap.getBoolean("system_settings_allow_never_lock_screen")); - - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsU.java index 8c3848ed2..dcc343761 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsU.java @@ -18,8 +18,6 @@ */ package com.sevtinge.hyperceiler.module.app.SystemSettings.Pad; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; import com.sevtinge.hyperceiler.module.hook.systemsettings.AddGoogleListHeader; @@ -53,7 +51,6 @@ import com.sevtinge.hyperceiler.module.hook.systemsettings.UsbModeChoose; import com.sevtinge.hyperceiler.module.hook.systemsettings.ViewWifiPasswordHook; import com.sevtinge.hyperceiler.module.hook.systemsettings.VoipAssistantController; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockAi; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockMemc; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockSuperResolution; @@ -83,14 +80,12 @@ public void handleLoadPackage() { initHook(new NewNFCPage(), mPrefsMap.getBoolean("system_settings_new_nfc_page")); initHook(new AppsFreezerEnable(), mPrefsMap.getBoolean("system_settings_apps_freezer")); // initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("various_disable_bluetooth_restrict")); - initHook(new VolumeSeparateControlForSettings(), mPrefsMap.getBoolean("system_framework_volume_separate_control") && !isMoreHyperOSVersion(1f)); initHook(UnlockMaxFps.INSTANCE, mPrefsMap.getBoolean("system_settings_develop_max_fps")); initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); initHook(new UnlockSuperResolution(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_sr")); initHook(new UnlockAi(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_ai")); initHook(new UnlockMemc(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_memc")); - initHook(UnLockAreaScreenshot.INSTANCE, mPrefsMap.getBoolean("system_settings_area_screenshot")); initHook(NoveltyHaptic.INSTANCE, mPrefsMap.getBoolean("system_settings_novelty_haptic")); initHook(new MoreNotificationSettings(), mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsV.java index 4623cb60c..bafcb543a 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Pad/SystemSettingsV.java @@ -18,8 +18,6 @@ */ package com.sevtinge.hyperceiler.module.app.SystemSettings.Pad; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; import com.sevtinge.hyperceiler.module.hook.systemsettings.AddGoogleListHeader; @@ -53,7 +51,6 @@ import com.sevtinge.hyperceiler.module.hook.systemsettings.UsbModeChoose; import com.sevtinge.hyperceiler.module.hook.systemsettings.ViewWifiPasswordHook; import com.sevtinge.hyperceiler.module.hook.systemsettings.VoipAssistantController; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockAi; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockMemc; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockSuperResolution; @@ -83,14 +80,12 @@ public void handleLoadPackage() { initHook(new NewNFCPage(), mPrefsMap.getBoolean("system_settings_new_nfc_page")); initHook(new AppsFreezerEnable(), mPrefsMap.getBoolean("system_settings_apps_freezer")); // initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("various_disable_bluetooth_restrict")); - initHook(new VolumeSeparateControlForSettings(), mPrefsMap.getBoolean("system_framework_volume_separate_control") && !isMoreHyperOSVersion(1f)); initHook(UnlockMaxFps.INSTANCE, mPrefsMap.getBoolean("system_settings_develop_max_fps")); initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); initHook(new UnlockSuperResolution(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_sr")); initHook(new UnlockAi(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_ai")); initHook(new UnlockMemc(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_memc")); - initHook(UnLockAreaScreenshot.INSTANCE, mPrefsMap.getBoolean("system_settings_area_screenshot")); initHook(NoveltyHaptic.INSTANCE, mPrefsMap.getBoolean("system_settings_novelty_haptic")); initHook(new MoreNotificationSettings(), mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsT.java deleted file mode 100644 index 3c6f8d72d..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsT.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * This file is part of HyperCeiler. - * - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.app.SystemSettings.Phone; - -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AddGoogleListHeader; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AddMiuiPlusEntry; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AllowManageAllNotifications; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AntiQues; -import com.sevtinge.hyperceiler.module.hook.systemsettings.AppsFreezerEnable; -import com.sevtinge.hyperceiler.module.hook.systemsettings.DisableInstallUnknownVerify; -import com.sevtinge.hyperceiler.module.hook.systemsettings.EnableFoldArea; -import com.sevtinge.hyperceiler.module.hook.systemsettings.EnablePadArea; -import com.sevtinge.hyperceiler.module.hook.systemsettings.EnableSpeedMode; -import com.sevtinge.hyperceiler.module.hook.systemsettings.HyperCeilerSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.InternationalBuild; -import com.sevtinge.hyperceiler.module.hook.systemsettings.LanguageMenuShowAllApps; -import com.sevtinge.hyperceiler.module.hook.systemsettings.LinkTurbo; -import com.sevtinge.hyperceiler.module.hook.systemsettings.ModifySystemVersion; -import com.sevtinge.hyperceiler.module.hook.systemsettings.MoreNotificationSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.MoreVpnTypes; -import com.sevtinge.hyperceiler.module.hook.systemsettings.NewNFCPage; -import com.sevtinge.hyperceiler.module.hook.systemsettings.NoveltyHaptic; -import com.sevtinge.hyperceiler.module.hook.systemsettings.QuickManageOverlayPermission; -import com.sevtinge.hyperceiler.module.hook.systemsettings.QuickManageUnknownAppSources; -import com.sevtinge.hyperceiler.module.hook.systemsettings.QuickManagerAccessibilityPermission; -import com.sevtinge.hyperceiler.module.hook.systemsettings.RunningServices; -import com.sevtinge.hyperceiler.module.hook.systemsettings.ShowAutoUIMode; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnLockAreaScreenshot; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnlockMaxFps; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnlockNeverSleepScreen; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UnlockTaplusForSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.UsbModeChoose; -import com.sevtinge.hyperceiler.module.hook.systemsettings.ViewWifiPasswordHook; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VoipAssistantController; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; -import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockAi; -import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockMemc; -import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockSuperResolution; - -@HookBase(targetPackage = "com.android.settings", isPad = 2, targetSdk = 33) -public class SystemSettingsT extends BaseModule { - - @Override - public void handleLoadPackage() { - initHook(new HyperCeilerSettings(), mPrefsMap.getStringAsInt("settings_icon", 0) != 0); - - initHook(new ShowAutoUIMode(), mPrefsMap.getBoolean("system_settings_unlock_ui_mode")); - initHook(new LinkTurbo(), mPrefsMap.getBoolean("system_settings_linkturbo")); - initHook(new RunningServices(), true); // 显示原生内存信息 - initHook(new UsbModeChoose(), mPrefsMap.getStringAsInt("system_settings_usb_mode_choose", 0) != 0 - || mPrefsMap.getBoolean("system_settings_usb_mode")); - initHook(new ViewWifiPasswordHook(), mPrefsMap.getBoolean("system_settings_safe_wifi")); - initHook(new VoipAssistantController(), mPrefsMap.getBoolean("system_settings_voip_assistant_controller")); - initHook(new MoreVpnTypes(), mPrefsMap.getBoolean("system_settings_more_vpn_types")); - initHook(new AddMiuiPlusEntry(), mPrefsMap.getBoolean("mirror_unlock_miui_plus")); - initHook(new EnableSpeedMode(), mPrefsMap.getBoolean("system_settings_develop_speed_mode")); - initHook(new QuickManageOverlayPermission(), mPrefsMap.getBoolean("system_settings_permission_show_app_up")); - initHook(new QuickManageUnknownAppSources(), mPrefsMap.getBoolean("system_settings_permission_unknown_origin_app")); - initHook(new QuickManagerAccessibilityPermission(), mPrefsMap.getBoolean("system_settings_permission_accessibility")); - initHook(new InternationalBuild(), mPrefsMap.getBoolean("system_settings_international_build")); - initHook(new DisableInstallUnknownVerify(), mPrefsMap.getBoolean("system_settings_permission_disable_install_unknown_verify")); - initHook(new NewNFCPage(), mPrefsMap.getBoolean("system_settings_new_nfc_page")); - initHook(new AppsFreezerEnable(), mPrefsMap.getBoolean("system_settings_apps_freezer")); - // initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("various_disable_bluetooth_restrict")); - initHook(new VolumeSeparateControlForSettings(), mPrefsMap.getBoolean("system_framework_volume_separate_control") && !isMoreHyperOSVersion(1f)); - initHook(UnlockMaxFps.INSTANCE, mPrefsMap.getBoolean("system_settings_develop_max_fps")); - initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); - - initHook(new UnlockSuperResolution(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_sr")); - initHook(new UnlockAi(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_ai")); - initHook(new UnlockMemc(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_memc")); - initHook(UnLockAreaScreenshot.INSTANCE, mPrefsMap.getBoolean("system_settings_area_screenshot")); - initHook(NoveltyHaptic.INSTANCE, mPrefsMap.getBoolean("system_settings_novelty_haptic")); - initHook(new MoreNotificationSettings(), mPrefsMap.getBoolean("system_settings_more_notification_settings")); - initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); - initHook(new LanguageMenuShowAllApps(), mPrefsMap.getBoolean("system_settings_lang_menu_shouw_all_app")); - - initHook(new EnablePadArea(), mPrefsMap.getBoolean("system_settings_enable_pad_area")); - initHook(new EnableFoldArea(), mPrefsMap.getBoolean("system_settings_enable_fold_area")); - - initHook(new ModifySystemVersion(), mPrefsMap.getBoolean("updater_enable_miui_version") && mPrefsMap.getStringAsInt("updater_version_mode", 1) != 1); - - initHook(UnlockTaplusForSettings.INSTANCE, mPrefsMap.getBoolean("content_extension_unlock_taplus")); - - initHook(new AddGoogleListHeader(), mPrefsMap.getBoolean("system_settings_unlock_google_header")); - - initHook(new UnlockNeverSleepScreen(), mPrefsMap.getBoolean("system_settings_allow_never_lock_screen")); - - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsU.java index 646975217..fcf6eae3d 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsU.java @@ -53,7 +53,6 @@ import com.sevtinge.hyperceiler.module.hook.systemsettings.UsbModeChoose; import com.sevtinge.hyperceiler.module.hook.systemsettings.ViewWifiPasswordHook; import com.sevtinge.hyperceiler.module.hook.systemsettings.VoipAssistantController; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockAi; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockMemc; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockSuperResolution; @@ -83,14 +82,12 @@ public void handleLoadPackage() { initHook(new NewNFCPage(), mPrefsMap.getBoolean("system_settings_new_nfc_page")); initHook(new AppsFreezerEnable(), mPrefsMap.getBoolean("system_settings_apps_freezer")); // initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("various_disable_bluetooth_restrict")); - initHook(new VolumeSeparateControlForSettings(), mPrefsMap.getBoolean("system_framework_volume_separate_control") && !isMoreHyperOSVersion(1f)); initHook(UnlockMaxFps.INSTANCE, mPrefsMap.getBoolean("system_settings_develop_max_fps")); initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); initHook(new UnlockSuperResolution(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_sr")); initHook(new UnlockAi(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_ai")); initHook(new UnlockMemc(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_memc")); - initHook(UnLockAreaScreenshot.INSTANCE, mPrefsMap.getBoolean("system_settings_area_screenshot")); initHook(NoveltyHaptic.INSTANCE, mPrefsMap.getBoolean("system_settings_novelty_haptic")); initHook(new MoreNotificationSettings(), mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsV.java index 43c1efb53..2feb47204 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemSettings/Phone/SystemSettingsV.java @@ -54,7 +54,6 @@ import com.sevtinge.hyperceiler.module.hook.systemsettings.UsbModeChoose; import com.sevtinge.hyperceiler.module.hook.systemsettings.ViewWifiPasswordHook; import com.sevtinge.hyperceiler.module.hook.systemsettings.VoipAssistantController; -import com.sevtinge.hyperceiler.module.hook.systemsettings.VolumeSeparateControlForSettings; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockAi; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockMemc; import com.sevtinge.hyperceiler.module.hook.systemsettings.aiimage.UnlockSuperResolution; @@ -85,14 +84,12 @@ public void handleLoadPackage() { initHook(new NewNFCPage(), mPrefsMap.getBoolean("system_settings_new_nfc_page")); initHook(new AppsFreezerEnable(), mPrefsMap.getBoolean("system_settings_apps_freezer")); // initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("various_disable_bluetooth_restrict")); - initHook(new VolumeSeparateControlForSettings(), mPrefsMap.getBoolean("system_framework_volume_separate_control") && !isMoreHyperOSVersion(1f)); initHook(UnlockMaxFps.INSTANCE, mPrefsMap.getBoolean("system_settings_develop_max_fps")); initHook(new AntiQues(), mPrefsMap.getBoolean("system_settings_anti_ques")); initHook(new UnlockSuperResolution(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_sr")); initHook(new UnlockAi(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_ai")); initHook(new UnlockMemc(), mPrefsMap.getBoolean("system_settings_ai_image_unlock_memc")); - initHook(UnLockAreaScreenshot.INSTANCE, mPrefsMap.getBoolean("system_settings_area_screenshot")); initHook(NoveltyHaptic.INSTANCE, mPrefsMap.getBoolean("system_settings_novelty_haptic")); initHook(new MoreNotificationSettings(), mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiT.java deleted file mode 100644 index 73792cec6..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiT.java +++ /dev/null @@ -1,384 +0,0 @@ -/* - * This file is part of HyperCeiler. - * - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ - -package com.sevtinge.hyperceiler.module.app.SystemUI.Pad; - -import static com.sevtinge.hyperceiler.utils.api.OldFunApisKt.isNewNetworkStyle; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; -import com.sevtinge.hyperceiler.module.hook.systemui.AllowManageAllNotifications; -import com.sevtinge.hyperceiler.module.hook.systemui.AutoCollapse; -import com.sevtinge.hyperceiler.module.hook.systemui.BluetoothRestrict; -import com.sevtinge.hyperceiler.module.hook.systemui.BrightnessPct; -import com.sevtinge.hyperceiler.module.hook.systemui.ChargeAnimationStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableBottomBar; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableInfinitymodeGesture; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableMiuiMultiWinSwitch; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableTransparent; -import com.sevtinge.hyperceiler.module.hook.systemui.MonetThemeOverlay; -import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFix; -import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFreeform; -import com.sevtinge.hyperceiler.module.hook.systemui.QSDetailBackGround; -import com.sevtinge.hyperceiler.module.hook.systemui.RemoveMiuiMultiWinSwitch; -import com.sevtinge.hyperceiler.module.hook.systemui.SquigglyProgress; -import com.sevtinge.hyperceiler.module.hook.systemui.StatusBarActions; -import com.sevtinge.hyperceiler.module.hook.systemui.StickyFloatingWindowsForSystemUI; -import com.sevtinge.hyperceiler.module.hook.systemui.UiLockApp; -import com.sevtinge.hyperceiler.module.hook.systemui.UnimportantNotification; -import com.sevtinge.hyperceiler.module.hook.systemui.UnlockClipboard; -import com.sevtinge.hyperceiler.module.hook.systemui.UnlockCustomActions; -import com.sevtinge.hyperceiler.module.hook.systemui.VolumeTimerValuesHook; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AddBlurEffectToNotificationView; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AllowAllThemesNotificationBlur; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CompactNotificationsHook; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ControlCenterStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.DisableDeviceManaged; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ExpandNotification; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.FiveGTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.FixTilesList; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.FlashLight; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.GmsTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.HideDelimiter; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaButton; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaControlPanelBackgroundMix; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaControlPanelTimeViewTextSize; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaSeekBar; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaSeekBarColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MuteVisibleNotifications; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationImportanceHyperOSFix; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationRowMenu; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeather; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherOld; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QQSGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSControlDetailBackgroundAlpha; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGridLabels; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RedirectToNotificationChannelSetting; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ReduceBrightColorsTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RemoveNotifNumLimit; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SnowLeopardModeTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SunlightMode; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SunlightModeHigh; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SwitchCCAndNotification; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.TaplusTile; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AddBlurEffectToLockScreen; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AllowThirdLockScreenUseFace; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlockEditor; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlurButton; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ChargingCVP; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ClockDisplaySeconds; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.DisableUnlockByBleToast; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ForceClockUseSystemFontsHook; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenHint; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenStatusBar; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockscreenZenMode; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.LinkageAnimCustomer; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.LockScreenDoubleTapToSleep; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.NoPassword; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.RemoveCamera; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.RemoveSmartScreen; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ScramblePIN; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.HandleLineCustom; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.HideNavigationBar; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.NavigationCustom; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.RotationButton; -import com.sevtinge.hyperceiler.module.hook.systemui.plugin.PluginHelper; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.BlurEnable; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.DoubleTapToSleep; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.HideStatusBarBeforeScreenshot; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.NotificationIconColumns; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.SelectiveHideIconForAlarmClock; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.WifiStandard; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.DisableAnim; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.FixColor; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.StatusBarClockNew; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeCustomization; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.device.DisplayHardwareDetail; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BatteryStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BluetoothIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.DataSaverIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideBatteryIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideVoWiFiIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.IconsFromSystemManager; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIconPositionAdjust; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarSimIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.WifiNetworkIndicator; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.t.UseNewHD; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.layout.StatusBarLayout; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.DualRowSignalHook; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileNetwork; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobilePublicHook; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileTypeSingleHook; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileTypeTextCustom; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.NetworkSpeedSec; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.NetworkSpeedSpacing; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeed; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeed; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.StatusBarNoNetSpeedSep; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.s.NetworkSpeedWidth; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.strongtoast.HideStrongToast; - -import java.util.Objects; - -@HookBase(targetPackage = "com.android.systemui", isPad = 1, targetSdk = 33) -public class SystemUiT extends BaseModule { - @Override - public void handleLoadPackage() { - // PluginHelper - initHook(new PluginHelper(), true);// 充电动画 - // initHook(Island.INSTANCE, true); // 灵动岛 - initHook(new ChargeAnimationStyle(), mPrefsMap.getStringAsInt("system_ui_charge_animation_style", 0) > 0); - // initHook(DisableChargeAnimation.INSTANCE); - - // 小窗 - initHook(new NotificationFreeform(), mPrefsMap.getBoolean("system_ui_notification_freeform")); - - // 禁用蓝牙临时关闭 - initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("system_ui_disable_bluetooth_restrict")); - - // Monet - initHook(new MonetThemeOverlay(), mPrefsMap.getBoolean("system_ui_monet_overlay_custom")); - - // 状态栏图标 - boolean isHideSim = (mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") || - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2")) && - !mPrefsMap.getBoolean("system_ui_statusbar_network_icon_enable") && !isMoreHyperOSVersion(1f); - - initHook(new StatusBarIcon(), true); - initHook(new IconsFromSystemManager(), true); - initHook(new UnlockCustomActions(), mPrefsMap.getBoolean("system_ui_control_center_media_control_unlock_custom_actions")); - initHook(new BluetoothIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth", 0) != 0 && !isMoreHyperOSVersion(1f)); - initHook(new WifiStandard(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_standard", 0) > 0); - initHook(new SelectiveHideIconForAlarmClock(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_alarm_clock", 0) == 3 && mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0) > 0); - initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_dots_maximum_enable") || mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); - initHook(new HideStatusBarBeforeScreenshot(), mPrefsMap.getBoolean("system_ui_status_bar_hide_icon")); - initHook(new DataSaverIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_data_saver", 0) != 0); - initHook(WifiNetworkIndicator.INSTANCE, mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_network_indicator", 0) > 0); - initHook(StatusBarSimIcon.INSTANCE, isHideSim); - initHook(HideVoWiFiIcon.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_icon_vowifi") || mPrefsMap.getBoolean("system_ui_status_bar_icon_volte")); - initHook(UseNewHD.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_use_new_hd")); - initHook(new StickyFloatingWindowsForSystemUI(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); - - // 移动网络图标 - boolean isEnableMobilePublic = mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") || - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2") || - mPrefsMap.getStringAsInt("system_ui_status_bar_icon_show_mobile_network_type", 0) != 0 || - mPrefsMap.getBoolean("system_ui_status_bar_mobile_hide_roaming_icon") || - mPrefsMap.getBoolean("system_ui_statusbar_mobile_type_enable") || - mPrefsMap.getBoolean("system_ui_status_bar_mobile_indicator"); - boolean isEnableMobileNetwork = mPrefsMap.getStringAsInt("system_ui_status_bar_icon_small_hd", 0) != 0 || - mPrefsMap.getStringAsInt("system_ui_status_bar_icon_big_hd", 0) != 0 || - mPrefsMap.getStringAsInt("system_ui_status_bar_icon_new_hd", 0) != 0; - - initHook(MobilePublicHook.INSTANCE, isEnableMobilePublic); - initHook(new MobileNetwork(), isEnableMobileNetwork); - initHook(new DualRowSignalHook(), mPrefsMap.getBoolean("system_ui_statusbar_network_icon_enable")); - initHook(MobileTypeSingleHook.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_mobile_type_enable")); - initHook(MobileTypeTextCustom.INSTANCE, !Objects.equals(mPrefsMap.getString("system_ui_status_bar_mobile_type_custom", ""), "")); - - // 电池相关 - boolean isHideBatteryIcon = mPrefsMap.getBoolean("system_ui_status_bar_battery_icon") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_percent") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_percent_mark") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_charging"); - initHook(HideBatteryIcon.INSTANCE, isHideBatteryIcon); - initHook(BatteryStyle.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_battery_style_enable_custom") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_style_change_location")); - // initHook(new BatteryIndicator(), mPrefsMap.getBoolean("system_ui_status_bar_battery_indicator_enable")); - - // 网速指示器 - if (mPrefsMap.getBoolean("system_ui_statusbar_network_speed_all_status_enable")) { - if (!isNewNetworkStyle()) { - initHook(NetworkSpeed.INSTANCE, true); - initHook(NetworkSpeedWidth.INSTANCE, mPrefsMap.getInt("system_ui_statusbar_network_speed_fixedcontent_width", 10) > 10); - initHook(NetworkSpeedStyle.INSTANCE, true); - initHook(StatusBarNoNetSpeedSep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_no_netspeed_separator")); - } else { - initHook(NewNetworkSpeed.INSTANCE, true); - initHook(NewNetworkSpeedStyle.INSTANCE, true); - } - initHook(new NetworkSpeedSpacing(), mPrefsMap.getInt("system_ui_statusbar_network_speed_update_spacing", 3) != 3); - initHook(new NetworkSpeedSec(), mPrefsMap.getBoolean("system_ui_statusbar_network_speed_sec_unit")); - } - - // 时钟指示器 - boolean isEnableTime = mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_left_margin", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_right_margin", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_vertical_offset", 12) != 12 || - mPrefsMap.getBoolean("system_ui_statusbar_clock_bold"); - - if (isMoreHyperOSVersion(1f)) { - initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); - initHook(new DisableAnim(), mPrefsMap.getBoolean("system_ui_disable_clock_anim")); - initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); - } else { - initHook(TimeStyle.INSTANCE, isEnableTime); - initHook(TimeCustomization.INSTANCE, mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0); - } - - // 硬件指示器 - initHook(new DisplayHardwareDetail(), mPrefsMap.getBoolean("system_ui_statusbar_battery_enable") || - mPrefsMap.getBoolean("system_ui_statusbar_temp_enable")); - - // initHook(new DisplayHardwareDetailForHyper(), true); - - // 灵动舞台 - initHook(HideStrongToast.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_hide_smart_strong_toast")); - - // 居右显示 - boolean isWiFiAtLeft = mPrefsMap.getBoolean("system_ui_status_bar_wifi_at_left"); - boolean isMobileNetworkAtLeft = mPrefsMap.getBoolean("system_ui_status_bar_mobile_network_at_left"); - - boolean isNetworkSpeedAtRight = mPrefsMap.getBoolean("system_ui_status_bar_network_speed_at_right"); - boolean isAlarmClockAtRight = mPrefsMap.getBoolean("system_ui_status_bar_alarm_clock_at_right"); - boolean isNFCAtRight = mPrefsMap.getBoolean("system_ui_status_bar_nfc_at_right"); - boolean isVolumeAtRight = mPrefsMap.getBoolean("system_ui_status_bar_volume_at_right"); - boolean isZenAtRight = mPrefsMap.getBoolean("system_ui_status_bar_zen_at_right"); - - boolean isSwapWiFiAndMobileNetwork = mPrefsMap.getBoolean("system_ui_status_bar_swap_wifi_and_mobile_network"); - - boolean isStatusBarIconAtRightEnable = isWiFiAtLeft || isMobileNetworkAtLeft || isSwapWiFiAndMobileNetwork || isNetworkSpeedAtRight || isAlarmClockAtRight || isNFCAtRight || isVolumeAtRight || isZenAtRight; - - initHook(new StatusBarIconPositionAdjust(), isStatusBarIconAtRightEnable); - - // 导航栏 - initHook(new HandleLineCustom(), mPrefsMap.getBoolean("system_ui_navigation_handle_custom")); - initHook(new NavigationCustom(), mPrefsMap.getBoolean("system_ui_navigation_custom")); - initHook(new HideNavigationBar(), mPrefsMap.getBoolean("system_ui_hide_navigation_bar")); - initHook(new RotationButton(), mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) != 0); - // 状态栏布局 - initHook(StatusBarLayout.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_layout_compatibility_mode") || - mPrefsMap.getStringAsInt("system_ui_statusbar_layout_mode", 0) != 0); - - initHook(new FlagSecure(), mPrefsMap.getBoolean("system_other_flag_secure")); - // 实验性功能 - // initHook(new SwitchControlPanel(), false); - // initHook(new MiuiGxzwSize(), false); - - // 控制中心 - // initHook(new SmartHome(), false); - initHook(new QSColor(), mPrefsMap.getBoolean("system_ui_control_center_qs_open_color") || mPrefsMap.getBoolean("system_ui_control_center_qs_big_open_color")); - initHook(new UnimportantNotification(), mPrefsMap.getBoolean("system_ui_control_center_unimportant_notification")); - initHook(new BlurEnable(), mPrefsMap.getBoolean("system_ui_control_center_statusbar_blur")); - initHook(new ExpandNotification(), !mPrefsMap.getStringSet("system_ui_control_center_expand_notification").isEmpty()); - initHook(new HideDelimiter(), mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) != 0); - initHook(new QSDetailBackGround(), mPrefsMap.getInt("system_control_center_qs_detail_bg", 0) > 0); - initHook(new GmsTile(), mPrefsMap.getBoolean("security_center_gms_open")); - initHook(new TaplusTile(), mPrefsMap.getBoolean("security_center_taplus")); - initHook(new ReduceBrightColorsTile(), mPrefsMap.getBoolean("security_center_reduce_bright_colors_tile")); - initHook(new FiveGTile(), mPrefsMap.getStringAsInt("system_control_center_5g_new_tile", 0) != 0); - initHook(new SnowLeopardModeTile(), mPrefsMap.getBoolean("system_ui_control_center_snow_leopard_mode")); - initHook(new FlashLight(), mPrefsMap.getStringAsInt("security_flash_light_switch", 0) != 0); - if (mPrefsMap.getStringAsInt("system_control_center_sunshine_new_mode_high", 0) != 0) { - initHook(new SunlightModeHigh()); - } else { - initHook(new SunlightMode(), mPrefsMap.getStringAsInt("system_control_center_sunshine_new_mode", 0) != 0); - } - initHook(new QSGridLabels(), mPrefsMap.getInt("system_control_center_old_qs_row", 1) > 1 || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")); - initHook(new MuteVisibleNotifications(), mPrefsMap.getBoolean("system_ui_control_center_mute_visible_notice")); - initHook(new SwitchCCAndNotification(), mPrefsMap.getBoolean("system_ui_control_center_switch_cc_and_notification")); - initHook(QSControlDetailBackgroundAlpha.INSTANCE, mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) != 255); - initHook(NotificationWeather.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); - initHook(NotificationWeatherOld.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); - initHook(NotificationWeatherNew.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); - initHook(CompactNotificationsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_compact_notice")); - /*initHook(CCGridOld.INSTANCE, mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - (mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") && !isMoreHyperOSVersion(1f)) || - mPrefsMap.getBoolean("system_control_center_qs_tile_label"));*/ - initHook(new CCGrid(), (mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)); - initHook(new QSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); - initHook(new QQSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); - initHook(new AutoCollapse(), mPrefsMap.getBoolean("system_ui_control_auto_close")); - initHook(RedirectToNotificationChannelSetting.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_redirect_notice")); - initHook(ControlCenterStyle.INSTANCE, mPrefsMap.getBoolean("system_control_center_unlock_old")); - initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings") && isMoreHyperOSVersion(1f)); - initHook(new NotificationRowMenu(), mPrefsMap.getBoolean("system_ui_control_center_notifrowmenu")); - initHook(new FixTilesList(), mPrefsMap.getBoolean("system_ui_control_center_fix_tiles_list")); - initHook(new AllowAllThemesNotificationBlur(), mPrefsMap.getBoolean("system_ui_control_center_unlock_blur_supported")); - initHook(new DisableTransparent(), mPrefsMap.getBoolean("system_ui_control_center_notification_disable_transparent")); - initHook(new DisableDeviceManaged(), mPrefsMap.getBoolean("system_ui_control_center_disable_device_managed")); - initHook(new RemoveNotifNumLimit(), mPrefsMap.getBoolean("system_ui_control_center_remove_notif_num_limit")); - - // Media Card - initHook(new MediaControlPanelBackgroundMix(), mPrefsMap.getBoolean("system_ui_control_center_media_control_panel_background_mix")); - initHook(new MediaButton(), mPrefsMap.getInt("system_ui_control_center_media_control_media_button", 140) != 140 - || mPrefsMap.getInt("system_ui_control_center_media_control_media_button_custom", 140) != 140); - initHook(new MediaSeekBarColor(), mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_color", -1) != -1 - || mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_thumb_color", -1) != -1); - initHook(new SquigglyProgress(), mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) == 1); - initHook(new MediaControlPanelTimeViewTextSize(), mPrefsMap.getInt("system_ui_control_center_media_control_time_view_text_size", 13) != 13); - initHook(MediaSeekBar.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_remove_media_control_panel_background") || - mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) == 2); - - // Actions - initHook(new StatusBarActions(), true); - - // Other - initHook(new UiLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix") && isMoreHyperOSVersion(1f)); - initHook(new BrightnessPct(), mPrefsMap.getBoolean("system_showpct_title")); - initHook(DisableMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_miui_multi_win_switch")); - initHook(RemoveMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_remove_miui_multi_win_switch")); - initHook(DisableInfinitymodeGesture.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_infinitymode_gesture")); - initHook(DisableBottomBar.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_bottombar")); - initHook(UnlockClipboard.INSTANCE, mPrefsMap.getBoolean("system_ui_unlock_clipboard")); - initHook(new VolumeTimerValuesHook(), mPrefsMap.getBoolean("system_ui_volume_timer")); - - // 锁屏 - initHook(new ScramblePIN(), mPrefsMap.getBoolean("system_ui_lock_screen_scramble_pin")); - initHook(ClockDisplaySeconds.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_second")); - initHook(ChargingCVP.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_charging_cv")); - initHook(RemoveCamera.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_camera")); - initHook(RemoveSmartScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_smart_screen")); - initHook(NoPassword.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_password_free")); - initHook(LockScreenDoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_double_lock")); - initHook(ForceClockUseSystemFontsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_force_system_fonts")); - initHook(HideLockscreenZenMode.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_not_disturb_mode")); - initHook(HideLockScreenHint.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_tip")); - initHook(HideLockScreenStatusBar.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_status_bar")); - initHook(new BlockEditor(), mPrefsMap.getBoolean("system_ui_lock_screen_block_editor")); - initHook(AllowThirdLockScreenUseFace.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_allow_third_face")); - initHook(new DisableUnlockByBleToast(), mPrefsMap.getBoolean("system_ui_lock_screen_disable_unlock_by_ble_toast")); - initHook(new LinkageAnimCustomer(), mPrefsMap.getBoolean("system_ui_lock_screen_linkage_anim")); - - initHook(AddBlurEffectToLockScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); - initHook(AddBlurEffectToNotificationView.INSTANCE, mPrefsMap.getBoolean("n_enable")); - initHook(BlurButton.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); - - initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep")); - - initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiU.java index c2e2bdbf1..606d3cc31 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiU.java @@ -18,15 +18,10 @@ */ package com.sevtinge.hyperceiler.module.app.SystemUI.Pad; -import static com.sevtinge.hyperceiler.utils.api.OldFunApisKt.isNewNetworkStyle; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; import com.sevtinge.hyperceiler.module.hook.systemui.AllowManageAllNotifications; import com.sevtinge.hyperceiler.module.hook.systemui.AutoCollapse; -import com.sevtinge.hyperceiler.module.hook.systemui.BluetoothRestrict; import com.sevtinge.hyperceiler.module.hook.systemui.BrightnessPct; import com.sevtinge.hyperceiler.module.hook.systemui.ChargeAnimationStyle; import com.sevtinge.hyperceiler.module.hook.systemui.DisableBottomBar; @@ -36,7 +31,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.MonetThemeOverlay; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFix; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFreeform; -import com.sevtinge.hyperceiler.module.hook.systemui.QSDetailBackGround; import com.sevtinge.hyperceiler.module.hook.systemui.RemoveMiuiMultiWinSwitch; import com.sevtinge.hyperceiler.module.hook.systemui.SquigglyProgress; import com.sevtinge.hyperceiler.module.hook.systemui.StatusBarActions; @@ -46,9 +40,7 @@ import com.sevtinge.hyperceiler.module.hook.systemui.UnlockClipboard; import com.sevtinge.hyperceiler.module.hook.systemui.UnlockCustomActions; import com.sevtinge.hyperceiler.module.hook.systemui.VolumeTimerValuesHook; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AddBlurEffectToNotificationView; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AllowAllThemesNotificationBlur; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CompactNotificationsHook; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ControlCenterStyle; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.DisableDeviceManaged; @@ -67,11 +59,8 @@ import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationImportanceHyperOSFix; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationRowMenu; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeather; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherOld; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QQSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSControlDetailBackgroundAlpha; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGridLabels; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RedirectToNotificationChannelSetting; @@ -82,14 +71,11 @@ import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SunlightModeHigh; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SwitchCCAndNotification; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.TaplusTile; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AddBlurEffectToLockScreen; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AllowThirdLockScreenUseFace; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlockEditor; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlurButton; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ChargingCVP; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ClockDisplaySeconds; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.DisableUnlockByBleToast; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ForceClockUseSystemFontsHook; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenHint; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenStatusBar; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockscreenZenMode; @@ -113,20 +99,14 @@ import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.DisableAnim; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.FixColor; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.StatusBarClockNew; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeCustomization; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.device.DisplayHardwareDetail; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BatteryStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BluetoothIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.DataSaverIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideBatteryIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideVoWiFiIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.IconsFromSystemManager; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIconPositionAdjust; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarSimIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.WifiNetworkIndicator; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.layout.StatusBarLayout; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.DualRowSignalHook; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileNetwork; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobilePublicHook; @@ -136,10 +116,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.NetworkSpeedSpacing; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeed; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeed; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.StatusBarNoNetSpeedSep; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.s.NetworkSpeedWidth; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.strongtoast.HideStrongToast; import java.util.Objects; @@ -163,21 +139,15 @@ public void handleLoadPackage() { initHook(new MonetThemeOverlay(), mPrefsMap.getBoolean("system_ui_monet_overlay_custom")); // 状态栏图标 - boolean isHideSim = (mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") || - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2")) && - !mPrefsMap.getBoolean("system_ui_statusbar_network_icon_enable") && !isMoreHyperOSVersion(1f); - initHook(new StatusBarIcon(), true); initHook(new IconsFromSystemManager(), true); initHook(new UnlockCustomActions(), mPrefsMap.getBoolean("system_ui_control_center_media_control_unlock_custom_actions")); - initHook(new BluetoothIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth", 0) != 0 && !isMoreHyperOSVersion(1f)); initHook(new WifiStandard(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_standard", 0) > 0); initHook(new SelectiveHideIconForAlarmClock(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_alarm_clock", 0) == 3 && mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0) > 0); - initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_dots_maximum_enable") || mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); + initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); initHook(new HideStatusBarBeforeScreenshot(), mPrefsMap.getBoolean("system_ui_status_bar_hide_icon")); initHook(new DataSaverIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_data_saver", 0) != 0); initHook(WifiNetworkIndicator.INSTANCE, mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_network_indicator", 0) > 0); - initHook(StatusBarSimIcon.INSTANCE, isHideSim); initHook(HideVoWiFiIcon.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_icon_vowifi") || mPrefsMap.getBoolean("system_ui_status_bar_icon_volte")); initHook(new StickyFloatingWindowsForSystemUI(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); @@ -210,15 +180,8 @@ public void handleLoadPackage() { // 网速指示器 if (mPrefsMap.getBoolean("system_ui_statusbar_network_speed_all_status_enable")) { - if (!isNewNetworkStyle()) { - initHook(NetworkSpeed.INSTANCE, true); - initHook(NetworkSpeedWidth.INSTANCE, mPrefsMap.getInt("system_ui_statusbar_network_speed_fixedcontent_width", 10) > 10); - initHook(NetworkSpeedStyle.INSTANCE, true); - initHook(StatusBarNoNetSpeedSep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_no_netspeed_separator")); - } else { - initHook(NewNetworkSpeed.INSTANCE, true); - initHook(NewNetworkSpeedStyle.INSTANCE, true); - } + initHook(NewNetworkSpeed.INSTANCE, true); + initHook(NewNetworkSpeedStyle.INSTANCE, true); initHook(new NetworkSpeedSpacing(), mPrefsMap.getInt("system_ui_statusbar_network_speed_update_spacing", 3) != 3); initHook(new NetworkSpeedSec(), mPrefsMap.getBoolean("system_ui_statusbar_network_speed_sec_unit")); } @@ -230,18 +193,9 @@ public void handleLoadPackage() { mPrefsMap.getInt("system_ui_statusbar_clock_vertical_offset", 12) != 12 || mPrefsMap.getBoolean("system_ui_statusbar_clock_bold"); - if (isMoreHyperOSVersion(1f)) { - initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); - initHook(new DisableAnim(), mPrefsMap.getBoolean("system_ui_disable_clock_anim")); - initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); - } else { - initHook(TimeStyle.INSTANCE, isEnableTime); - initHook(TimeCustomization.INSTANCE, mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0); - } - - // 硬件指示器 - initHook(new DisplayHardwareDetail(), mPrefsMap.getBoolean("system_ui_statusbar_battery_enable") || - mPrefsMap.getBoolean("system_ui_statusbar_temp_enable")); + initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); + initHook(new DisableAnim(), mPrefsMap.getBoolean("system_ui_disable_clock_anim")); + initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); // initHook(new DisplayHardwareDetailForHyper(), true); @@ -269,9 +223,6 @@ public void handleLoadPackage() { initHook(new NavigationCustom(), mPrefsMap.getBoolean("system_ui_navigation_custom")); initHook(new HideNavigationBar(), mPrefsMap.getBoolean("system_ui_hide_navigation_bar")); initHook(new RotationButton(), mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) != 0); - // 状态栏布局 - initHook(StatusBarLayout.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_layout_compatibility_mode") || - mPrefsMap.getStringAsInt("system_ui_statusbar_layout_mode", 0) != 0); // 实验性功能 // initHook(new SwitchControlPanel(), false); @@ -284,7 +235,6 @@ public void handleLoadPackage() { initHook(new BlurEnable(), mPrefsMap.getBoolean("system_ui_control_center_statusbar_blur")); initHook(new ExpandNotification(), !mPrefsMap.getStringSet("system_ui_control_center_expand_notification").isEmpty()); initHook(new HideDelimiter(), mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) != 0); - initHook(new QSDetailBackGround(), mPrefsMap.getInt("system_control_center_qs_detail_bg", 0) > 0); initHook(new GmsTile(), mPrefsMap.getBoolean("security_center_gms_open")); initHook(new TaplusTile(), mPrefsMap.getBoolean("security_center_taplus")); initHook(new ReduceBrightColorsTile(), mPrefsMap.getBoolean("security_center_reduce_bright_colors_tile")); @@ -300,23 +250,18 @@ public void handleLoadPackage() { mPrefsMap.getBoolean("system_control_center_qs_tile_label")); initHook(new MuteVisibleNotifications(), mPrefsMap.getBoolean("system_ui_control_center_mute_visible_notice")); initHook(new SwitchCCAndNotification(), mPrefsMap.getBoolean("system_ui_control_center_switch_cc_and_notification")); - initHook(QSControlDetailBackgroundAlpha.INSTANCE, mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) != 255); initHook(NotificationWeather.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); initHook(CompactNotificationsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_compact_notice")); /*initHook(CCGridOld.INSTANCE, mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || (mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") && !isMoreHyperOSVersion(1f)) || mPrefsMap.getBoolean("system_control_center_qs_tile_label"));*/ - initHook(new CCGrid(), (mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)); initHook(new QSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new QQSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new AutoCollapse(), mPrefsMap.getBoolean("system_ui_control_auto_close")); initHook(RedirectToNotificationChannelSetting.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_redirect_notice")); initHook(ControlCenterStyle.INSTANCE, mPrefsMap.getBoolean("system_control_center_unlock_old")); - initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings") && isMoreHyperOSVersion(1f)); + initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new NotificationRowMenu(), mPrefsMap.getBoolean("system_ui_control_center_notifrowmenu")); initHook(new FixTilesList(), mPrefsMap.getBoolean("system_ui_control_center_fix_tiles_list")); initHook(new AllowAllThemesNotificationBlur(), mPrefsMap.getBoolean("system_ui_control_center_unlock_blur_supported")); @@ -340,7 +285,7 @@ public void handleLoadPackage() { // Other initHook(new UiLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix") && isMoreHyperOSVersion(1f)); + initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix")); initHook(new BrightnessPct(), mPrefsMap.getBoolean("system_showpct_title")); initHook(DisableMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_miui_multi_win_switch")); initHook(RemoveMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_remove_miui_multi_win_switch")); @@ -351,13 +296,11 @@ public void handleLoadPackage() { // 锁屏 initHook(new ScramblePIN(), mPrefsMap.getBoolean("system_ui_lock_screen_scramble_pin")); - initHook(ClockDisplaySeconds.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_second")); initHook(ChargingCVP.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_charging_cv")); initHook(RemoveCamera.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_camera")); initHook(RemoveSmartScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_smart_screen")); initHook(NoPassword.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_password_free")); initHook(LockScreenDoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_double_lock")); - initHook(ForceClockUseSystemFontsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_force_system_fonts")); initHook(HideLockscreenZenMode.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_not_disturb_mode")); initHook(HideLockScreenHint.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_tip")); initHook(HideLockScreenStatusBar.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_status_bar")); @@ -366,8 +309,6 @@ public void handleLoadPackage() { initHook(new DisableUnlockByBleToast(), mPrefsMap.getBoolean("system_ui_lock_screen_disable_unlock_by_ble_toast")); initHook(new LinkageAnimCustomer(), mPrefsMap.getBoolean("system_ui_lock_screen_linkage_anim")); - initHook(AddBlurEffectToLockScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); - initHook(AddBlurEffectToNotificationView.INSTANCE, mPrefsMap.getBoolean("n_enable")); initHook(BlurButton.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiV.java index a84ae7e57..7647a87e2 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Pad/SystemUiV.java @@ -23,11 +23,9 @@ import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; import com.sevtinge.hyperceiler.module.hook.systemui.AllowManageAllNotifications; import com.sevtinge.hyperceiler.module.hook.systemui.AutoCollapse; import com.sevtinge.hyperceiler.module.hook.systemui.BrightnessPct; -import com.sevtinge.hyperceiler.module.hook.systemui.ChargeAnimationStyle; import com.sevtinge.hyperceiler.module.hook.systemui.DisableBottomBar; import com.sevtinge.hyperceiler.module.hook.systemui.DisableInfinitymodeGesture; import com.sevtinge.hyperceiler.module.hook.systemui.DisableMiuiMultiWinSwitch; @@ -35,7 +33,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.MonetThemeOverlay; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFix; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFreeform; -import com.sevtinge.hyperceiler.module.hook.systemui.QSDetailBackGround; import com.sevtinge.hyperceiler.module.hook.systemui.RemoveMiuiMultiWinSwitch; import com.sevtinge.hyperceiler.module.hook.systemui.SquigglyProgress; import com.sevtinge.hyperceiler.module.hook.systemui.StatusBarActions; @@ -44,7 +41,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.UnimportantNotification; import com.sevtinge.hyperceiler.module.hook.systemui.UnlockClipboard; import com.sevtinge.hyperceiler.module.hook.systemui.UnlockCustomActions; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AddBlurEffectToNotificationView; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AllowAllThemesNotificationBlur; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CompactNotificationsHook; @@ -66,11 +62,8 @@ import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationImportanceHyperOSFix; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationRowMenu; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeather; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherOld; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QQSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSControlDetailBackgroundAlpha; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGridLabels; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ReduceBrightColorsTile; @@ -84,9 +77,7 @@ import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AllowThirdLockScreenUseFace; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlurButton; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ChargingCVP; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ClockDisplaySeconds; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.DisableUnlockByBleToast; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ForceClockUseSystemFontsHook; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenHint; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenStatusBar; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockscreenZenMode; @@ -109,9 +100,7 @@ import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.WifiStandard; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.FixColor; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.StatusBarClockNew; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.device.DisplayHardwareDetail; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BatteryStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BluetoothIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.DataSaverIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideBatteryIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideVoWiFiIcon; @@ -146,10 +135,9 @@ public void handleLoadPackage() { initHook(new StatusBarIcon(), true); initHook(new IconsFromSystemManager(), true); initHook(new UnlockCustomActions(), mPrefsMap.getBoolean("system_ui_control_center_media_control_unlock_custom_actions")); - initHook(new BluetoothIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth", 0) != 0 && !isMoreHyperOSVersion(1f)); initHook(new WifiStandard(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_standard", 0) > 0); initHook(new SelectiveHideIconForAlarmClock(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_alarm_clock", 0) == 3 && mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0) > 0); - initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_dots_maximum_enable") || mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); + initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); initHook(new HideStatusBarBeforeScreenshot(), mPrefsMap.getBoolean("system_ui_status_bar_hide_icon")); initHook(new DataSaverIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_data_saver", 0) != 0); initHook(WifiNetworkIndicator.INSTANCE, mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_network_indicator", 0) > 0); @@ -178,10 +166,6 @@ public void handleLoadPackage() { initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); - // 硬件指示器 - initHook(new DisplayHardwareDetail(), mPrefsMap.getBoolean("system_ui_statusbar_battery_enable") || - mPrefsMap.getBoolean("system_ui_statusbar_temp_enable")); - // initHook(new DisplayHardwareDetailForHyper(), true); // 焦点歌词 @@ -208,7 +192,6 @@ public void handleLoadPackage() { initHook(new BlurEnable(), mPrefsMap.getBoolean("system_ui_control_center_statusbar_blur")); initHook(new ExpandNotification(), !mPrefsMap.getStringSet("system_ui_control_center_expand_notification").isEmpty()); initHook(new HideDelimiter(), mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) != 0); - initHook(new QSDetailBackGround(), mPrefsMap.getInt("system_control_center_qs_detail_bg", 0) > 0); initHook(new GmsTile(), mPrefsMap.getBoolean("security_center_gms_open")); initHook(new TaplusTile(), mPrefsMap.getBoolean("security_center_taplus")); initHook(new ReduceBrightColorsTile(), mPrefsMap.getBoolean("security_center_reduce_bright_colors_tile")); @@ -224,23 +207,18 @@ public void handleLoadPackage() { mPrefsMap.getBoolean("system_control_center_qs_tile_label")); initHook(new MuteVisibleNotifications(), mPrefsMap.getBoolean("system_ui_control_center_mute_visible_notice")); initHook(new SwitchCCAndNotification(), mPrefsMap.getBoolean("system_ui_control_center_switch_cc_and_notification")); - initHook(QSControlDetailBackgroundAlpha.INSTANCE, mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) != 255); initHook(NotificationWeather.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); initHook(CompactNotificationsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_compact_notice")); /*initHook(CCGridOld.INSTANCE, mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || (mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") && !isMoreHyperOSVersion(1f)) || mPrefsMap.getBoolean("system_control_center_qs_tile_label"));*/ - initHook(new CCGrid(), (mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)); initHook(new QSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new QQSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new AutoCollapse(), mPrefsMap.getBoolean("system_ui_control_auto_close")); // initHook(RedirectToNotificationChannelSetting.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_redirect_notice")); initHook(ControlCenterStyle.INSTANCE, mPrefsMap.getBoolean("system_control_center_unlock_old")); - initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings") && isMoreHyperOSVersion(1f)); + initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new NotificationRowMenu(), mPrefsMap.getBoolean("system_ui_control_center_notifrowmenu")); initHook(new FixTilesList(), mPrefsMap.getBoolean("system_ui_control_center_fix_tiles_list")); initHook(new AllowAllThemesNotificationBlur(), mPrefsMap.getBoolean("system_ui_control_center_unlock_blur_supported")); @@ -265,7 +243,7 @@ public void handleLoadPackage() { // Other initHook(new UiLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix") && isMoreHyperOSVersion(1f)); + initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix")); initHook(new BrightnessPct(), mPrefsMap.getBoolean("system_showpct_title")); initHook(DisableMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_miui_multi_win_switch")); initHook(RemoveMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_remove_miui_multi_win_switch")); @@ -275,13 +253,11 @@ public void handleLoadPackage() { // 锁屏 initHook(new ScramblePIN(), mPrefsMap.getBoolean("system_ui_lock_screen_scramble_pin")); - initHook(ClockDisplaySeconds.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_second")); initHook(ChargingCVP.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_charging_cv")); initHook(RemoveCamera.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_camera")); initHook(RemoveSmartScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_smart_screen")); initHook(NoPassword.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_password_free")); initHook(LockScreenDoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_double_lock")); - initHook(ForceClockUseSystemFontsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_force_system_fonts")); initHook(HideLockscreenZenMode.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_not_disturb_mode")); initHook(HideLockScreenHint.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_tip")); initHook(HideLockScreenStatusBar.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_status_bar")); @@ -289,7 +265,6 @@ public void handleLoadPackage() { initHook(AllowThirdLockScreenUseFace.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_allow_third_face")); initHook(new DisableUnlockByBleToast(), mPrefsMap.getBoolean("system_ui_lock_screen_disable_unlock_by_ble_toast")); initHook(new LinkageAnimCustomer(), mPrefsMap.getBoolean("system_ui_lock_screen_linkage_anim")); - initHook(AddBlurEffectToNotificationView.INSTANCE, mPrefsMap.getBoolean("n_enable")); initHook(BlurButton.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiT.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiT.java deleted file mode 100644 index dd79b43bc..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiT.java +++ /dev/null @@ -1,384 +0,0 @@ -/* - * This file is part of HyperCeiler. - * - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ - -package com.sevtinge.hyperceiler.module.app.SystemUI.Phone; - -import static com.sevtinge.hyperceiler.utils.api.OldFunApisKt.isNewNetworkStyle; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import com.hchen.database.HookBase; -import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; -import com.sevtinge.hyperceiler.module.hook.systemui.AllowManageAllNotifications; -import com.sevtinge.hyperceiler.module.hook.systemui.AutoCollapse; -import com.sevtinge.hyperceiler.module.hook.systemui.BluetoothRestrict; -import com.sevtinge.hyperceiler.module.hook.systemui.BrightnessPct; -import com.sevtinge.hyperceiler.module.hook.systemui.ChargeAnimationStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableBottomBar; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableInfinitymodeGesture; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableMiuiMultiWinSwitch; -import com.sevtinge.hyperceiler.module.hook.systemui.DisableTransparent; -import com.sevtinge.hyperceiler.module.hook.systemui.MonetThemeOverlay; -import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFix; -import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFreeform; -import com.sevtinge.hyperceiler.module.hook.systemui.QSDetailBackGround; -import com.sevtinge.hyperceiler.module.hook.systemui.RemoveMiuiMultiWinSwitch; -import com.sevtinge.hyperceiler.module.hook.systemui.SquigglyProgress; -import com.sevtinge.hyperceiler.module.hook.systemui.StatusBarActions; -import com.sevtinge.hyperceiler.module.hook.systemui.StickyFloatingWindowsForSystemUI; -import com.sevtinge.hyperceiler.module.hook.systemui.UiLockApp; -import com.sevtinge.hyperceiler.module.hook.systemui.UnimportantNotification; -import com.sevtinge.hyperceiler.module.hook.systemui.UnlockClipboard; -import com.sevtinge.hyperceiler.module.hook.systemui.UnlockCustomActions; -import com.sevtinge.hyperceiler.module.hook.systemui.VolumeTimerValuesHook; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AddBlurEffectToNotificationView; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AllowAllThemesNotificationBlur; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CompactNotificationsHook; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ControlCenterStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.DisableDeviceManaged; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ExpandNotification; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.FiveGTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.FixTilesList; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.FlashLight; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.GmsTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.HideDelimiter; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaButton; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaControlPanelBackgroundMix; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaControlPanelTimeViewTextSize; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaSeekBar; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MediaSeekBarColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.MuteVisibleNotifications; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationImportanceHyperOSFix; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationRowMenu; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeather; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherOld; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QQSGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSControlDetailBackgroundAlpha; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGridLabels; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RedirectToNotificationChannelSetting; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ReduceBrightColorsTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RemoveNotifNumLimit; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SnowLeopardModeTile; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SunlightMode; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SunlightModeHigh; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SwitchCCAndNotification; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.TaplusTile; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AddBlurEffectToLockScreen; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AllowThirdLockScreenUseFace; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlockEditor; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlurButton; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ChargingCVP; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ClockDisplaySeconds; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.DisableUnlockByBleToast; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ForceClockUseSystemFontsHook; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenHint; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenStatusBar; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockscreenZenMode; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.LinkageAnimCustomer; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.LockScreenDoubleTapToSleep; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.NoPassword; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.RemoveCamera; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.RemoveSmartScreen; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ScramblePIN; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.HandleLineCustom; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.HideNavigationBar; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.NavigationCustom; -import com.sevtinge.hyperceiler.module.hook.systemui.navigation.RotationButton; -import com.sevtinge.hyperceiler.module.hook.systemui.plugin.PluginHelper; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.BlurEnable; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.DoubleTapToSleep; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.HideStatusBarBeforeScreenshot; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.NotificationIconColumns; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.SelectiveHideIconForAlarmClock; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.WifiStandard; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.DisableAnim; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.FixColor; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.StatusBarClockNew; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeCustomization; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.device.DisplayHardwareDetail; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BatteryStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BluetoothIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.DataSaverIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideBatteryIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideVoWiFiIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.IconsFromSystemManager; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIconPositionAdjust; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarSimIcon; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.WifiNetworkIndicator; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.t.UseNewHD; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.layout.StatusBarLayout; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.DualRowSignalHook; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileNetwork; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobilePublicHook; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileTypeSingleHook; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileTypeTextCustom; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.NetworkSpeedSec; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.NetworkSpeedSpacing; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeed; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeed; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.StatusBarNoNetSpeedSep; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.s.NetworkSpeedWidth; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.strongtoast.HideStrongToast; - -import java.util.Objects; - -@HookBase(targetPackage = "com.android.systemui", isPad = 2, targetSdk = 33) -public class SystemUiT extends BaseModule { - @Override - public void handleLoadPackage() { - // PluginHelper - initHook(new PluginHelper(), true);// 充电动画 - // initHook(Island.INSTANCE, true); // 灵动岛 - initHook(new ChargeAnimationStyle(), mPrefsMap.getStringAsInt("system_ui_charge_animation_style", 0) > 0); - // initHook(DisableChargeAnimation.INSTANCE); - - // 小窗 - initHook(new NotificationFreeform(), mPrefsMap.getBoolean("system_ui_notification_freeform")); - - // 禁用蓝牙临时关闭 - initHook(new BluetoothRestrict(), mPrefsMap.getBoolean("system_ui_disable_bluetooth_restrict")); - - // Monet - initHook(new MonetThemeOverlay(), mPrefsMap.getBoolean("system_ui_monet_overlay_custom")); - - // 状态栏图标 - boolean isHideSim = (mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") || - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2")) && - !mPrefsMap.getBoolean("system_ui_statusbar_network_icon_enable") && !isMoreHyperOSVersion(1f); - - initHook(new StatusBarIcon(), true); - initHook(new IconsFromSystemManager(), true); - initHook(new UnlockCustomActions(), mPrefsMap.getBoolean("system_ui_control_center_media_control_unlock_custom_actions")); - initHook(new BluetoothIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth", 0) != 0 && !isMoreHyperOSVersion(1f)); - initHook(new WifiStandard(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_standard", 0) > 0); - initHook(new SelectiveHideIconForAlarmClock(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_alarm_clock", 0) == 3 && mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0) > 0); - initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_dots_maximum_enable") || mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); - initHook(new HideStatusBarBeforeScreenshot(), mPrefsMap.getBoolean("system_ui_status_bar_hide_icon")); - initHook(new DataSaverIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_data_saver", 0) != 0); - initHook(WifiNetworkIndicator.INSTANCE, mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_network_indicator", 0) > 0); - initHook(StatusBarSimIcon.INSTANCE, isHideSim); - initHook(HideVoWiFiIcon.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_icon_vowifi") || mPrefsMap.getBoolean("system_ui_status_bar_icon_volte")); - initHook(UseNewHD.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_use_new_hd")); - initHook(new StickyFloatingWindowsForSystemUI(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); - - // 移动网络图标 - boolean isEnableMobilePublic = mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") || - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2") || - mPrefsMap.getStringAsInt("system_ui_status_bar_icon_show_mobile_network_type", 0) != 0 || - mPrefsMap.getBoolean("system_ui_status_bar_mobile_hide_roaming_icon") || - mPrefsMap.getBoolean("system_ui_statusbar_mobile_type_enable") || - mPrefsMap.getBoolean("system_ui_status_bar_mobile_indicator"); - boolean isEnableMobileNetwork = mPrefsMap.getStringAsInt("system_ui_status_bar_icon_small_hd", 0) != 0 || - mPrefsMap.getStringAsInt("system_ui_status_bar_icon_big_hd", 0) != 0 || - mPrefsMap.getStringAsInt("system_ui_status_bar_icon_new_hd", 0) != 0; - - initHook(MobilePublicHook.INSTANCE, isEnableMobilePublic); - initHook(new MobileNetwork(), isEnableMobileNetwork); - initHook(new DualRowSignalHook(), mPrefsMap.getBoolean("system_ui_statusbar_network_icon_enable")); - initHook(MobileTypeSingleHook.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_mobile_type_enable")); - initHook(MobileTypeTextCustom.INSTANCE, !Objects.equals(mPrefsMap.getString("system_ui_status_bar_mobile_type_custom", ""), "")); - - // 电池相关 - boolean isHideBatteryIcon = mPrefsMap.getBoolean("system_ui_status_bar_battery_icon") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_percent") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_percent_mark") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_charging"); - initHook(HideBatteryIcon.INSTANCE, isHideBatteryIcon); - initHook(BatteryStyle.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_battery_style_enable_custom") || - mPrefsMap.getBoolean("system_ui_status_bar_battery_style_change_location")); - // initHook(new BatteryIndicator(), mPrefsMap.getBoolean("system_ui_status_bar_battery_indicator_enable")); - - // 网速指示器 - if (mPrefsMap.getBoolean("system_ui_statusbar_network_speed_all_status_enable")) { - if (!isNewNetworkStyle()) { - initHook(NetworkSpeed.INSTANCE, true); - initHook(NetworkSpeedWidth.INSTANCE, mPrefsMap.getInt("system_ui_statusbar_network_speed_fixedcontent_width", 10) > 10); - initHook(NetworkSpeedStyle.INSTANCE, true); - initHook(StatusBarNoNetSpeedSep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_no_netspeed_separator")); - } else { - initHook(NewNetworkSpeed.INSTANCE, true); - initHook(NewNetworkSpeedStyle.INSTANCE, true); - } - initHook(new NetworkSpeedSpacing(), mPrefsMap.getInt("system_ui_statusbar_network_speed_update_spacing", 3) != 3); - initHook(new NetworkSpeedSec(), mPrefsMap.getBoolean("system_ui_statusbar_network_speed_sec_unit")); - } - - // 时钟指示器 - boolean isEnableTime = mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_left_margin", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_right_margin", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_vertical_offset", 12) != 12 || - mPrefsMap.getBoolean("system_ui_statusbar_clock_bold"); - - if (isMoreHyperOSVersion(1f)) { - initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); - initHook(new DisableAnim(), mPrefsMap.getBoolean("system_ui_disable_clock_anim")); - initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); - } else { - initHook(TimeStyle.INSTANCE, isEnableTime); - initHook(TimeCustomization.INSTANCE, mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0); - } - - // 硬件指示器 - initHook(new DisplayHardwareDetail(), mPrefsMap.getBoolean("system_ui_statusbar_battery_enable") || - mPrefsMap.getBoolean("system_ui_statusbar_temp_enable")); - - // initHook(new DisplayHardwareDetailForHyper(), true); - - // 灵动舞台 - initHook(HideStrongToast.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_hide_smart_strong_toast")); - - // 居右显示 - boolean isWiFiAtLeft = mPrefsMap.getBoolean("system_ui_status_bar_wifi_at_left"); - boolean isMobileNetworkAtLeft = mPrefsMap.getBoolean("system_ui_status_bar_mobile_network_at_left"); - - boolean isNetworkSpeedAtRight = mPrefsMap.getBoolean("system_ui_status_bar_network_speed_at_right"); - boolean isAlarmClockAtRight = mPrefsMap.getBoolean("system_ui_status_bar_alarm_clock_at_right"); - boolean isNFCAtRight = mPrefsMap.getBoolean("system_ui_status_bar_nfc_at_right"); - boolean isVolumeAtRight = mPrefsMap.getBoolean("system_ui_status_bar_volume_at_right"); - boolean isZenAtRight = mPrefsMap.getBoolean("system_ui_status_bar_zen_at_right"); - - boolean isSwapWiFiAndMobileNetwork = mPrefsMap.getBoolean("system_ui_status_bar_swap_wifi_and_mobile_network"); - - boolean isStatusBarIconAtRightEnable = isWiFiAtLeft || isMobileNetworkAtLeft || isSwapWiFiAndMobileNetwork || isNetworkSpeedAtRight || isAlarmClockAtRight || isNFCAtRight || isVolumeAtRight || isZenAtRight; - - initHook(new StatusBarIconPositionAdjust(), isStatusBarIconAtRightEnable); - - // 导航栏 - initHook(new HandleLineCustom(), mPrefsMap.getBoolean("system_ui_navigation_handle_custom")); - initHook(new NavigationCustom(), mPrefsMap.getBoolean("system_ui_navigation_custom")); - initHook(new HideNavigationBar(), mPrefsMap.getBoolean("system_ui_hide_navigation_bar")); - initHook(new RotationButton(), mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) != 0); - // 状态栏布局 - initHook(StatusBarLayout.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_layout_compatibility_mode") || - mPrefsMap.getStringAsInt("system_ui_statusbar_layout_mode", 0) != 0); - - initHook(new FlagSecure(), mPrefsMap.getBoolean("system_other_flag_secure")); - // 实验性功能 - // initHook(new SwitchControlPanel(), false); - // initHook(new MiuiGxzwSize(), false); - - // 控制中心 - // initHook(new SmartHome(), false); - initHook(new QSColor(), mPrefsMap.getBoolean("system_ui_control_center_qs_open_color") || mPrefsMap.getBoolean("system_ui_control_center_qs_big_open_color")); - initHook(new UnimportantNotification(), mPrefsMap.getBoolean("system_ui_control_center_unimportant_notification")); - initHook(new BlurEnable(), mPrefsMap.getBoolean("system_ui_control_center_statusbar_blur")); - initHook(new ExpandNotification(), !mPrefsMap.getStringSet("system_ui_control_center_expand_notification").isEmpty()); - initHook(new HideDelimiter(), mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) != 0); - initHook(new QSDetailBackGround(), mPrefsMap.getInt("system_control_center_qs_detail_bg", 0) > 0); - initHook(new GmsTile(), mPrefsMap.getBoolean("security_center_gms_open")); - initHook(new TaplusTile(), mPrefsMap.getBoolean("security_center_taplus")); - initHook(new ReduceBrightColorsTile(), mPrefsMap.getBoolean("security_center_reduce_bright_colors_tile")); - initHook(new FiveGTile(), mPrefsMap.getStringAsInt("system_control_center_5g_new_tile", 0) != 0); - initHook(new SnowLeopardModeTile(), mPrefsMap.getBoolean("system_ui_control_center_snow_leopard_mode")); - initHook(new FlashLight(), mPrefsMap.getStringAsInt("security_flash_light_switch", 0) != 0); - if (mPrefsMap.getStringAsInt("system_control_center_sunshine_new_mode_high", 0) != 0) { - initHook(new SunlightModeHigh()); - } else { - initHook(new SunlightMode(), mPrefsMap.getStringAsInt("system_control_center_sunshine_new_mode", 0) != 0); - } - initHook(new QSGridLabels(), mPrefsMap.getInt("system_control_center_old_qs_row", 1) > 1 || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")); - initHook(new MuteVisibleNotifications(), mPrefsMap.getBoolean("system_ui_control_center_mute_visible_notice")); - initHook(new SwitchCCAndNotification(), mPrefsMap.getBoolean("system_ui_control_center_switch_cc_and_notification")); - initHook(QSControlDetailBackgroundAlpha.INSTANCE, mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) != 255); - initHook(NotificationWeather.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); - initHook(NotificationWeatherOld.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); - initHook(NotificationWeatherNew.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); - initHook(CompactNotificationsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_compact_notice")); - /*initHook(CCGridOld.INSTANCE, mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - (mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") && !isMoreHyperOSVersion(1f)) || - mPrefsMap.getBoolean("system_control_center_qs_tile_label"));*/ - initHook(new CCGrid(), (mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)); - initHook(new QSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); - initHook(new QQSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); - initHook(new AutoCollapse(), mPrefsMap.getBoolean("system_ui_control_auto_close")); - initHook(RedirectToNotificationChannelSetting.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_redirect_notice")); - initHook(ControlCenterStyle.INSTANCE, mPrefsMap.getBoolean("system_control_center_unlock_old")); - initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings") && isMoreHyperOSVersion(1f)); - initHook(new NotificationRowMenu(), mPrefsMap.getBoolean("system_ui_control_center_notifrowmenu")); - initHook(new FixTilesList(), mPrefsMap.getBoolean("system_ui_control_center_fix_tiles_list")); - initHook(new AllowAllThemesNotificationBlur(), mPrefsMap.getBoolean("system_ui_control_center_unlock_blur_supported")); - initHook(new DisableTransparent(), mPrefsMap.getBoolean("system_ui_control_center_notification_disable_transparent")); - initHook(new DisableDeviceManaged(), mPrefsMap.getBoolean("system_ui_control_center_disable_device_managed")); - initHook(new RemoveNotifNumLimit(), mPrefsMap.getBoolean("system_ui_control_center_remove_notif_num_limit")); - - // Media Card - initHook(new MediaControlPanelBackgroundMix(), mPrefsMap.getBoolean("system_ui_control_center_media_control_panel_background_mix")); - initHook(new MediaButton(), mPrefsMap.getInt("system_ui_control_center_media_control_media_button", 140) != 140 - || mPrefsMap.getInt("system_ui_control_center_media_control_media_button_custom", 140) != 140); - initHook(new MediaSeekBarColor(), mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_color", -1) != -1 - || mPrefsMap.getInt("system_ui_control_center_media_control_seekbar_thumb_color", -1) != -1); - initHook(new SquigglyProgress(), mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) == 1); - initHook(new MediaControlPanelTimeViewTextSize(), mPrefsMap.getInt("system_ui_control_center_media_control_time_view_text_size", 13) != 13); - initHook(MediaSeekBar.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_remove_media_control_panel_background") || - mPrefsMap.getStringAsInt("system_ui_control_center_media_control_progress_mode", 0) == 2); - - // Actions - initHook(new StatusBarActions(), true); - - // Other - initHook(new UiLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix") && isMoreHyperOSVersion(1f)); - initHook(new BrightnessPct(), mPrefsMap.getBoolean("system_showpct_title")); - initHook(DisableMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_miui_multi_win_switch")); - initHook(RemoveMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_remove_miui_multi_win_switch")); - initHook(DisableInfinitymodeGesture.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_infinitymode_gesture")); - initHook(DisableBottomBar.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_bottombar")); - initHook(UnlockClipboard.INSTANCE, mPrefsMap.getBoolean("system_ui_unlock_clipboard")); - initHook(new VolumeTimerValuesHook(), mPrefsMap.getBoolean("system_ui_volume_timer")); - - // 锁屏 - initHook(new ScramblePIN(), mPrefsMap.getBoolean("system_ui_lock_screen_scramble_pin")); - initHook(ClockDisplaySeconds.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_second")); - initHook(ChargingCVP.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_charging_cv")); - initHook(RemoveCamera.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_camera")); - initHook(RemoveSmartScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_smart_screen")); - initHook(NoPassword.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_password_free")); - initHook(LockScreenDoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_double_lock")); - initHook(ForceClockUseSystemFontsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_force_system_fonts")); - initHook(HideLockscreenZenMode.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_not_disturb_mode")); - initHook(HideLockScreenHint.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_tip")); - initHook(HideLockScreenStatusBar.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_status_bar")); - initHook(new BlockEditor(), mPrefsMap.getBoolean("system_ui_lock_screen_block_editor")); - initHook(AllowThirdLockScreenUseFace.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_allow_third_face")); - initHook(new DisableUnlockByBleToast(), mPrefsMap.getBoolean("system_ui_lock_screen_disable_unlock_by_ble_toast")); - initHook(new LinkageAnimCustomer(), mPrefsMap.getBoolean("system_ui_lock_screen_linkage_anim")); - - initHook(AddBlurEffectToLockScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); - initHook(AddBlurEffectToNotificationView.INSTANCE, mPrefsMap.getBoolean("n_enable")); - initHook(BlurButton.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); - - initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep")); - - initHook(new AllowManageAllNotifications(), mPrefsMap.getBoolean("system_framework_allow_manage_all_notifications")); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiU.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiU.java index a4ff84267..1130cea74 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiU.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiU.java @@ -18,15 +18,10 @@ */ package com.sevtinge.hyperceiler.module.app.SystemUI.Phone; -import static com.sevtinge.hyperceiler.utils.api.OldFunApisKt.isNewNetworkStyle; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; import com.sevtinge.hyperceiler.module.hook.systemui.AllowManageAllNotifications; import com.sevtinge.hyperceiler.module.hook.systemui.AutoCollapse; -import com.sevtinge.hyperceiler.module.hook.systemui.BluetoothRestrict; import com.sevtinge.hyperceiler.module.hook.systemui.BrightnessPct; import com.sevtinge.hyperceiler.module.hook.systemui.ChargeAnimationStyle; import com.sevtinge.hyperceiler.module.hook.systemui.DisableBottomBar; @@ -36,7 +31,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.MonetThemeOverlay; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFix; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFreeform; -import com.sevtinge.hyperceiler.module.hook.systemui.QSDetailBackGround; import com.sevtinge.hyperceiler.module.hook.systemui.RemoveMiuiMultiWinSwitch; import com.sevtinge.hyperceiler.module.hook.systemui.SquigglyProgress; import com.sevtinge.hyperceiler.module.hook.systemui.StatusBarActions; @@ -46,9 +40,7 @@ import com.sevtinge.hyperceiler.module.hook.systemui.UnlockClipboard; import com.sevtinge.hyperceiler.module.hook.systemui.UnlockCustomActions; import com.sevtinge.hyperceiler.module.hook.systemui.VolumeTimerValuesHook; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AddBlurEffectToNotificationView; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AllowAllThemesNotificationBlur; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CompactNotificationsHook; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ControlCenterStyle; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.DisableDeviceManaged; @@ -67,11 +59,8 @@ import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationImportanceHyperOSFix; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationRowMenu; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeather; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherOld; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QQSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSControlDetailBackgroundAlpha; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGridLabels; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RedirectToNotificationChannelSetting; @@ -82,14 +71,11 @@ import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SunlightModeHigh; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.SwitchCCAndNotification; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.TaplusTile; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AddBlurEffectToLockScreen; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AllowThirdLockScreenUseFace; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlockEditor; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlurButton; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ChargingCVP; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ClockDisplaySeconds; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.DisableUnlockByBleToast; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ForceClockUseSystemFontsHook; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenHint; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenStatusBar; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockscreenZenMode; @@ -113,20 +99,14 @@ import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.DisableAnim; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.FixColor; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.StatusBarClockNew; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeCustomization; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock.TimeStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.device.DisplayHardwareDetail; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BatteryStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.BluetoothIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.DataSaverIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideBatteryIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.HideVoWiFiIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.IconsFromSystemManager; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarIconPositionAdjust; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.StatusBarSimIcon; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all.WifiNetworkIndicator; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.layout.StatusBarLayout; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.DualRowSignalHook; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobileNetwork; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.model.MobilePublicHook; @@ -136,10 +116,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.NetworkSpeedSpacing; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeed; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.news.NewNetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeed; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.NetworkSpeedStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old.StatusBarNoNetSpeedSep; -import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.s.NetworkSpeedWidth; import com.sevtinge.hyperceiler.module.hook.systemui.statusbar.strongtoast.HideStrongToast; import java.util.Objects; @@ -160,21 +136,15 @@ public void handleLoadPackage() { initHook(new MonetThemeOverlay(), mPrefsMap.getBoolean("system_ui_monet_overlay_custom")); // 状态栏图标 - boolean isHideSim = (mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") || - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2")) && - !mPrefsMap.getBoolean("system_ui_statusbar_network_icon_enable") && !isMoreHyperOSVersion(1f); - initHook(new StatusBarIcon(), true); initHook(new IconsFromSystemManager(), true); initHook(new UnlockCustomActions(), mPrefsMap.getBoolean("system_ui_control_center_media_control_unlock_custom_actions")); - initHook(new BluetoothIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth", 0) != 0 && !isMoreHyperOSVersion(1f)); initHook(new WifiStandard(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_standard", 0) > 0); initHook(new SelectiveHideIconForAlarmClock(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_alarm_clock", 0) == 3 && mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0) > 0); - initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_dots_maximum_enable") || mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); + initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); initHook(new HideStatusBarBeforeScreenshot(), mPrefsMap.getBoolean("system_ui_status_bar_hide_icon")); initHook(new DataSaverIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_data_saver", 0) != 0); initHook(WifiNetworkIndicator.INSTANCE, mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_network_indicator", 0) > 0); - initHook(StatusBarSimIcon.INSTANCE, isHideSim); initHook(HideVoWiFiIcon.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_icon_vowifi") || mPrefsMap.getBoolean("system_ui_status_bar_icon_volte")); initHook(new StickyFloatingWindowsForSystemUI(), mPrefsMap.getBoolean("system_framework_freeform_sticky")); @@ -207,38 +177,16 @@ public void handleLoadPackage() { // 网速指示器 if (mPrefsMap.getBoolean("system_ui_statusbar_network_speed_all_status_enable")) { - if (!isNewNetworkStyle()) { - initHook(NetworkSpeed.INSTANCE, true); - initHook(NetworkSpeedWidth.INSTANCE, mPrefsMap.getInt("system_ui_statusbar_network_speed_fixedcontent_width", 10) > 10); - initHook(NetworkSpeedStyle.INSTANCE, true); - initHook(StatusBarNoNetSpeedSep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_no_netspeed_separator")); - } else { - initHook(NewNetworkSpeed.INSTANCE, true); - initHook(NewNetworkSpeedStyle.INSTANCE, true); - } + initHook(NewNetworkSpeed.INSTANCE, true); + initHook(NewNetworkSpeedStyle.INSTANCE, true); initHook(new NetworkSpeedSpacing(), mPrefsMap.getInt("system_ui_statusbar_network_speed_update_spacing", 3) != 3); initHook(new NetworkSpeedSec(), mPrefsMap.getBoolean("system_ui_statusbar_network_speed_sec_unit")); } // 时钟指示器 - boolean isEnableTime = mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_left_margin", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_right_margin", 0) != 0 || - mPrefsMap.getInt("system_ui_statusbar_clock_vertical_offset", 12) != 12 || - mPrefsMap.getBoolean("system_ui_statusbar_clock_bold"); - - if (isMoreHyperOSVersion(1f)) { - initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); - initHook(new DisableAnim(), mPrefsMap.getBoolean("system_ui_disable_clock_anim")); - initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); - } else { - initHook(TimeStyle.INSTANCE, isEnableTime); - initHook(TimeCustomization.INSTANCE, mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) != 0); - } - - // 硬件指示器 - initHook(new DisplayHardwareDetail(), mPrefsMap.getBoolean("system_ui_statusbar_battery_enable") || - mPrefsMap.getBoolean("system_ui_statusbar_temp_enable")); + initHook(StatusBarClockNew.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_clock_all_status_enable")); + initHook(new DisableAnim(), mPrefsMap.getBoolean("system_ui_disable_clock_anim")); + initHook(new FixColor(), mPrefsMap.getBoolean("system_ui_statusbar_clock_fix_color")); // initHook(new DisplayHardwareDetailForHyper(), true); @@ -266,9 +214,6 @@ public void handleLoadPackage() { initHook(new NavigationCustom(), mPrefsMap.getBoolean("system_ui_navigation_custom")); initHook(new HideNavigationBar(), mPrefsMap.getBoolean("system_ui_hide_navigation_bar")); initHook(new RotationButton(), mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) != 0); - // 状态栏布局 - initHook(StatusBarLayout.INSTANCE, mPrefsMap.getBoolean("system_ui_statusbar_layout_compatibility_mode") || - mPrefsMap.getStringAsInt("system_ui_statusbar_layout_mode", 0) != 0); // 实验性功能 // initHook(new SwitchControlPanel(), false); @@ -281,7 +226,6 @@ public void handleLoadPackage() { initHook(new BlurEnable(), mPrefsMap.getBoolean("system_ui_control_center_statusbar_blur")); initHook(new ExpandNotification(), !mPrefsMap.getStringSet("system_ui_control_center_expand_notification").isEmpty()); initHook(new HideDelimiter(), mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) != 0); - initHook(new QSDetailBackGround(), mPrefsMap.getInt("system_control_center_qs_detail_bg", 0) > 0); initHook(new GmsTile(), mPrefsMap.getBoolean("security_center_gms_open")); initHook(new TaplusTile(), mPrefsMap.getBoolean("security_center_taplus")); initHook(new ReduceBrightColorsTile(), mPrefsMap.getBoolean("security_center_reduce_bright_colors_tile")); @@ -297,23 +241,18 @@ public void handleLoadPackage() { mPrefsMap.getBoolean("system_control_center_qs_tile_label")); initHook(new MuteVisibleNotifications(), mPrefsMap.getBoolean("system_ui_control_center_mute_visible_notice")); initHook(new SwitchCCAndNotification(), mPrefsMap.getBoolean("system_ui_control_center_switch_cc_and_notification")); - initHook(QSControlDetailBackgroundAlpha.INSTANCE, mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) != 255); initHook(NotificationWeather.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); initHook(CompactNotificationsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_compact_notice")); /*initHook(CCGridOld.INSTANCE, mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || (mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") && !isMoreHyperOSVersion(1f)) || mPrefsMap.getBoolean("system_control_center_qs_tile_label"));*/ - initHook(new CCGrid(), (mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)); initHook(new QSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new QQSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new AutoCollapse(), mPrefsMap.getBoolean("system_ui_control_auto_close")); initHook(RedirectToNotificationChannelSetting.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_redirect_notice")); initHook(ControlCenterStyle.INSTANCE, mPrefsMap.getBoolean("system_control_center_unlock_old")); - initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings") && isMoreHyperOSVersion(1f)); + initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new NotificationRowMenu(), mPrefsMap.getBoolean("system_ui_control_center_notifrowmenu")); initHook(new FixTilesList(), mPrefsMap.getBoolean("system_ui_control_center_fix_tiles_list")); initHook(new AllowAllThemesNotificationBlur(), mPrefsMap.getBoolean("system_ui_control_center_unlock_blur_supported")); @@ -338,7 +277,7 @@ public void handleLoadPackage() { // Other initHook(new UiLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix") && isMoreHyperOSVersion(1f)); + initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix")); initHook(new BrightnessPct(), mPrefsMap.getBoolean("system_showpct_title")); initHook(DisableMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_miui_multi_win_switch")); initHook(RemoveMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_remove_miui_multi_win_switch")); @@ -349,13 +288,11 @@ public void handleLoadPackage() { // 锁屏 initHook(new ScramblePIN(), mPrefsMap.getBoolean("system_ui_lock_screen_scramble_pin")); - initHook(ClockDisplaySeconds.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_second")); initHook(ChargingCVP.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_charging_cv")); initHook(RemoveCamera.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_camera")); initHook(RemoveSmartScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_smart_screen")); initHook(NoPassword.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_password_free")); initHook(LockScreenDoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_double_lock")); - initHook(ForceClockUseSystemFontsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_force_system_fonts")); initHook(HideLockscreenZenMode.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_not_disturb_mode")); initHook(HideLockScreenHint.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_tip")); initHook(HideLockScreenStatusBar.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_status_bar")); @@ -364,8 +301,6 @@ public void handleLoadPackage() { initHook(new DisableUnlockByBleToast(), mPrefsMap.getBoolean("system_ui_lock_screen_disable_unlock_by_ble_toast")); initHook(new LinkageAnimCustomer(), mPrefsMap.getBoolean("system_ui_lock_screen_linkage_anim")); - initHook(AddBlurEffectToLockScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); - initHook(AddBlurEffectToNotificationView.INSTANCE, mPrefsMap.getBoolean("n_enable")); initHook(BlurButton.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiV.java b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiV.java index 1a6a5d19c..0db446931 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiV.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/app/SystemUI/Phone/SystemUiV.java @@ -23,7 +23,6 @@ import com.hchen.database.HookBase; import com.sevtinge.hyperceiler.module.base.BaseModule; -import com.sevtinge.hyperceiler.module.hook.systemframework.FlagSecure; import com.sevtinge.hyperceiler.module.hook.systemui.AllowManageAllNotifications; import com.sevtinge.hyperceiler.module.hook.systemui.AutoCollapse; import com.sevtinge.hyperceiler.module.hook.systemui.BrightnessPct; @@ -35,7 +34,6 @@ import com.sevtinge.hyperceiler.module.hook.systemui.MonetThemeOverlay; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFix; import com.sevtinge.hyperceiler.module.hook.systemui.NotificationFreeform; -import com.sevtinge.hyperceiler.module.hook.systemui.QSDetailBackGround; import com.sevtinge.hyperceiler.module.hook.systemui.RemoveMiuiMultiWinSwitch; import com.sevtinge.hyperceiler.module.hook.systemui.SquigglyProgress; import com.sevtinge.hyperceiler.module.hook.systemui.StatusBarActions; @@ -44,9 +42,7 @@ import com.sevtinge.hyperceiler.module.hook.systemui.UnimportantNotification; import com.sevtinge.hyperceiler.module.hook.systemui.UnlockClipboard; import com.sevtinge.hyperceiler.module.hook.systemui.UnlockCustomActions; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AddBlurEffectToNotificationView; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.AllowAllThemesNotificationBlur; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CompactNotificationsHook; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ControlCenterStyle; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.DisableDeviceManaged; @@ -66,11 +62,8 @@ import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationImportanceHyperOSFix; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationRowMenu; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeather; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherOld; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QQSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSControlDetailBackgroundAlpha; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSGrid; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.ReduceBrightColorsTile; import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.RemoveNotifNumLimit; @@ -83,9 +76,7 @@ import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.AllowThirdLockScreenUseFace; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.BlurButton; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ChargingCVP; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ClockDisplaySeconds; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.DisableUnlockByBleToast; -import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.ForceClockUseSystemFontsHook; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenHint; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockScreenStatusBar; import com.sevtinge.hyperceiler.module.hook.systemui.lockscreen.HideLockscreenZenMode; @@ -151,7 +142,7 @@ public void handleLoadPackage() { initHook(new UnlockCustomActions(), mPrefsMap.getBoolean("system_ui_control_center_media_control_unlock_custom_actions")); initHook(new WifiStandard(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_standard", 0) > 0); initHook(new SelectiveHideIconForAlarmClock(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_alarm_clock", 0) == 3 && mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0) > 0); - initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_dots_maximum_enable") || mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); + initHook(new NotificationIconColumns(), mPrefsMap.getBoolean("system_ui_status_bar_notification_icon_maximum_enable")); initHook(new HideStatusBarBeforeScreenshot(), mPrefsMap.getBoolean("system_ui_status_bar_hide_icon")); initHook(new DataSaverIcon(), mPrefsMap.getStringAsInt("system_ui_status_bar_icon_data_saver", 0) != 0); initHook(WifiNetworkIndicator.INSTANCE, mPrefsMap.getStringAsInt("system_ui_status_bar_icon_wifi_network_indicator", 0) > 0); @@ -227,7 +218,6 @@ public void handleLoadPackage() { initHook(new BlurEnable(), mPrefsMap.getBoolean("system_ui_control_center_statusbar_blur")); initHook(new ExpandNotification(), !mPrefsMap.getStringSet("system_ui_control_center_expand_notification").isEmpty()); initHook(new HideDelimiter(), mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) != 0); - initHook(new QSDetailBackGround(), mPrefsMap.getInt("system_control_center_qs_detail_bg", 0) > 0); initHook(new GmsTile(), mPrefsMap.getBoolean("security_center_gms_open")); initHook(new TaplusTile(), mPrefsMap.getBoolean("security_center_taplus")); initHook(new ReduceBrightColorsTile(), mPrefsMap.getBoolean("security_center_reduce_bright_colors_tile")); @@ -243,19 +233,14 @@ public void handleLoadPackage() { // mPrefsMap.getBoolean("system_control_center_qs_tile_label")); initHook(new MuteVisibleNotifications(), mPrefsMap.getBoolean("system_ui_control_center_mute_visible_notice")); initHook(new SwitchCCAndNotification(), mPrefsMap.getBoolean("system_ui_control_center_switch_cc_and_notification")); - initHook(QSControlDetailBackgroundAlpha.INSTANCE, mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) != 255); initHook(NotificationWeather.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_show_weather")); initHook(CompactNotificationsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_compact_notice")); - initHook(new CCGrid(), (mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)); initHook(new QSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new QQSGrid(), mPrefsMap.getBoolean("system_control_center_old_enable")); initHook(new AutoCollapse(), mPrefsMap.getBoolean("system_ui_control_auto_close")); // initHook(RedirectToNotificationChannelSetting.INSTANCE, mPrefsMap.getBoolean("system_ui_control_center_redirect_notice")); initHook(ControlCenterStyle.INSTANCE, mPrefsMap.getBoolean("system_control_center_unlock_old")); - initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings") && isMoreHyperOSVersion(1f)); + initHook(NotificationImportanceHyperOSFix.INSTANCE, mPrefsMap.getBoolean("system_settings_more_notification_settings")); initHook(new NotificationRowMenu(), mPrefsMap.getBoolean("system_ui_control_center_notifrowmenu")); initHook(new FixTilesList(), mPrefsMap.getBoolean("system_ui_control_center_fix_tiles_list")); initHook(new AllowAllThemesNotificationBlur(), mPrefsMap.getBoolean("system_ui_control_center_unlock_blur_supported")); @@ -280,7 +265,7 @@ public void handleLoadPackage() { // Other initHook(new UiLockApp(), mPrefsMap.getBoolean("system_framework_guided_access")); - initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix") && isMoreHyperOSVersion(1f)); + initHook(new NotificationFix(), mPrefsMap.getBoolean("system_ui_other_notification_fix")); initHook(new BrightnessPct(), mPrefsMap.getBoolean("system_showpct_title")); initHook(DisableMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_disable_miui_multi_win_switch")); initHook(RemoveMiuiMultiWinSwitch.INSTANCE, mPrefsMap.getBoolean("system_ui_remove_miui_multi_win_switch")); @@ -290,13 +275,11 @@ public void handleLoadPackage() { // 锁屏 initHook(new ScramblePIN(), mPrefsMap.getBoolean("system_ui_lock_screen_scramble_pin")); - initHook(ClockDisplaySeconds.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_second")); initHook(ChargingCVP.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_show_charging_cv")); initHook(RemoveCamera.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_camera")); initHook(RemoveSmartScreen.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_hide_smart_screen")); initHook(NoPassword.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_password_free")); initHook(LockScreenDoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_double_lock")); - initHook(ForceClockUseSystemFontsHook.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_force_system_fonts")); initHook(NotificationShowOnKeyguard.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_notification_restrict")); initHook(HideLockscreenZenMode.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_not_disturb_mode")); initHook(HideLockScreenHint.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_unlock_tip")); @@ -305,7 +288,6 @@ public void handleLoadPackage() { initHook(AllowThirdLockScreenUseFace.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_allow_third_face")); initHook(new DisableUnlockByBleToast(), mPrefsMap.getBoolean("system_ui_lock_screen_disable_unlock_by_ble_toast")); initHook(new LinkageAnimCustomer(), mPrefsMap.getBoolean("system_ui_lock_screen_linkage_anim")); - initHook(AddBlurEffectToNotificationView.INSTANCE, mPrefsMap.getBoolean("n_enable")); initHook(BlurButton.INSTANCE, mPrefsMap.getBoolean("system_ui_lock_screen_blur_button")); initHook(DoubleTapToSleep.INSTANCE, mPrefsMap.getBoolean("system_ui_status_bar_double_tap_to_sleep")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/Unlock120Fps.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/Unlock120Fps.java deleted file mode 100644 index f8790b38e..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/Unlock120Fps.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class Unlock120Fps extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupported4K120Fps", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/Unlock60Fps.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/Unlock60Fps.java deleted file mode 100644 index dc0731609..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/Unlock60Fps.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class Unlock60Fps extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.data.data.config.ComponentConfigVideoQuality", "isSupport60FPS", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiEnhance.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiEnhance.java deleted file mode 100644 index e8c39d4e6..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiEnhance.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockAiEnhance extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "supportAiEnhancedVideo", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "supportAiEnhancedVideo", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiShutter.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiShutter.java deleted file mode 100644 index f4fa18a65..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiShutter.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockAiShutter extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportAiShutter", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportAiShutter", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera.CameraSettings", "isSupportAiShutter", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiWatermark.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiWatermark.java deleted file mode 100644 index 89e636f77..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAiWatermark.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockAiWatermark extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.aiwatermark.AIWaterModuleEntry", "support", new MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAmbilight.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAmbilight.java deleted file mode 100644 index ecc192024..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAmbilight.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockAmbilight extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.ambilight.AmbilightModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAudioZoom.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAudioZoom.java deleted file mode 100644 index d38f9c666..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockAudioZoom.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockAudioZoom extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.aiaudio.AiAudioParameterManager", "isSupportAiAudioNew", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockClone.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockClone.java deleted file mode 100644 index 164db297e..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockClone.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockClone extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.clone.CloneModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera.features.mode.more.clone.MoreCloneModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockColorEnhance.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockColorEnhance.java deleted file mode 100644 index 959b188eb..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockColorEnhance.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockColorEnhance extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportedColorEnhance", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportedColorEnhance", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCosmeticMirror.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCosmeticMirror.java deleted file mode 100644 index 8704a9282..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCosmeticMirror.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockCosmeticMirror extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.cosmeticmirror.CosmeticMirrorModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCvlens.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCvlens.java deleted file mode 100644 index 0e5a4ebbd..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCvlens.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - - -public class UnlockCvlens extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.CameraSettings", "isSupportCvLensDevice", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - param.setResult(true); - } - }); - try { - hookAllMethods("com.android.camera.CameraSettings", "getCvLensVersion", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - param.setResult(2); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilities", "getCvLensVersion", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - param.setResult(2); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "getCvLensVersion", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - param.setResult(2); - } - }); - } catch (Exception e) { - logE(TAG, this.lpparam.packageName, "try to hook CvLensVersion failed" + e); - throw new RuntimeException(e); - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCyberFocusVersion2.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCyberFocusVersion2.java deleted file mode 100644 index 22ff3a2e5..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockCyberFocusVersion2.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockCyberFocusVersion2 extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isCyberFocusVersion2", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isCyberFocusVersion2", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDoc.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDoc.java deleted file mode 100644 index 084ab45cf..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDoc.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockDoc extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.doc.DocModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDualcam.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDualcam.java deleted file mode 100644 index fb34ba63d..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDualcam.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockDualcam extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.dualcam.DualCamModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDuration.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDuration.java deleted file mode 100644 index 805de7294..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockDuration.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockDuration extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.fast.FastMotionModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilm.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilm.java deleted file mode 100644 index 755e59b39..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilm.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilm extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.more.film.MoreFilmModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDelay.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDelay.java deleted file mode 100644 index 2dc9e8573..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDelay.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilmDelay extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.film.delay.LongExpModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDollyZoom.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDollyZoom.java deleted file mode 100644 index 8bd96d2b6..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDollyZoom.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilmDollyZoom extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.film.dollyzoom.DollyZoomModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDream.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDream.java deleted file mode 100644 index 9b7c79345..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmDream.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilmDream extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.film.dream.DreamModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmSlowShutter.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmSlowShutter.java deleted file mode 100644 index ac647dc2f..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmSlowShutter.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilmSlowShutter extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.film.slowshutter.SlowShutterModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmTimeBackflow.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmTimeBackflow.java deleted file mode 100644 index 7a176d713..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmTimeBackflow.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilmTimeBackflow extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.film.timebackflow.TimeBackflowModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmTimeFreeze.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmTimeFreeze.java deleted file mode 100644 index 1cb7628a6..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockFilmTimeFreeze.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockFilmTimeFreeze extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.film.timefreeze.TimeFreezeModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHandGesture.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHandGesture.java deleted file mode 100644 index 493754adb..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHandGesture.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockHandGesture extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.data.data.runing.DataItemRunning", "supportHandGesture", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHdr.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHdr.java deleted file mode 100644 index a13558e2c..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHdr.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockHdr extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportVideoHdr", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportVideoHdr", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportQcomVideoHdr", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportQcomVideoHdr", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHeic.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHeic.java deleted file mode 100644 index 4d0a0e7b4..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockHeic.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockHeic extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isHeicSupported", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isHeicSupported", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockIdcard.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockIdcard.java deleted file mode 100644 index 57327c3b3..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockIdcard.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockIdcard extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.idcard.IDCardModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockLog.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockLog.java deleted file mode 100644 index bbcfcbb62..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockLog.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockLog extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportedVideoLogFormat", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportedVideoLogFormat", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMakeup.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMakeup.java deleted file mode 100644 index 98d0d2394..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMakeup.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockMakeup extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportMakeups", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportMakeups2", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportMakeups", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportMakeups2", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMenMakeup.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMenMakeup.java deleted file mode 100644 index 482fce479..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMenMakeup.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockMenMakeup extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportMaleMakeupSwitch", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportMaleMakeupSwitch", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMilive.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMilive.java deleted file mode 100644 index 9fa51954f..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMilive.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockMilive extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.milive.MiLiveModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMoon.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMoon.java deleted file mode 100644 index 9b487b668..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockMoon.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockMoon extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.moon.MoonModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockNevus.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockNevus.java deleted file mode 100644 index 9185dd801..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockNevus.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockNevus extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportNevusWipeSwitch", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportNevusSupported", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportNevusWipeSwitch", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockNewBeauty.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockNewBeauty.java deleted file mode 100644 index 0fce07ced..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockNewBeauty.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockNewBeauty extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportPortraitBeautyItem", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportPortraitBeautyItem", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPano.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPano.java deleted file mode 100644 index 5b133758d..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPano.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockPano extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.pano.pano3.PanoModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPixel.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPixel.java deleted file mode 100644 index 4f86b3ffa..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPixel.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockPixel extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.pixel.PixelModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPortrait.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPortrait.java deleted file mode 100644 index 08300d354..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockPortrait.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockPortrait extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.portrait.PortraitModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockRaw.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockRaw.java deleted file mode 100644 index d9794ea47..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockRaw.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockRaw extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportRaw", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportRaw", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockSlow.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockSlow.java deleted file mode 100644 index ecd9e6bca..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockSlow.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockSlow extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.slow.SlowMotionModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockTrackFeature.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockTrackFeature.java deleted file mode 100644 index 67b0dae69..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockTrackFeature.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockTrackFeature extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportTrackFeatureEnable", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportTrackFeatureEnable", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockTrackFocus.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockTrackFocus.java deleted file mode 100644 index 809495269..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockTrackFocus.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockTrackFocus extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera2.CameraCapabilities", "isSupportTrackFocus", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilities", "isTrackFocusDefined", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupportTrackFocus", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVideosky.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVideosky.java deleted file mode 100644 index dcda3ca6e..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVideosky.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockVideosky extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.videosky.VideoSkyModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVlog.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVlog.java deleted file mode 100644 index a813b1dfc..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVlog.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockVlog extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.vlog.VlogModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera.features.mode.more.vlog.MoreVVModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVlogPro.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVlogPro.java deleted file mode 100644 index f8690742b..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/camera/UnlockVlogPro.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.camera; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -public class UnlockVlogPro extends BaseHook { - @Override - public void init() { - hookAllMethods("com.android.camera.features.mode.vlogpro.VlogProModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - hookAllMethods("com.android.camera.features.mode.more.vlogpro.MoreVlogProModuleEntry", "support", new BaseHook.MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/recent/DisableRecentViewWallpaperDarken.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/recent/DisableRecentViewWallpaperDarken.kt deleted file mode 100644 index d3c111ad7..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/recent/DisableRecentViewWallpaperDarken.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.home.recent - -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.setObjectField - -object DisableRecentViewWallpaperDarken : BaseHook() { - override fun init() { - loadClass("com.miui.home.recents.DimLayer").methodFinder() - .filterByName("dim") - .filterByParamCount(3) - .single().createHook { - before { - it.args[0] = 0.0f - it.thisObject.setObjectField("mCurrentAlpha", 0.0f) - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/title/AnimParamCustom.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/title/AnimParamCustom.java index 4c6473163..9cae3cc19 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/title/AnimParamCustom.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/home/title/AnimParamCustom.java @@ -18,7 +18,6 @@ */ package com.sevtinge.hyperceiler.module.hook.home.title; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; import static de.robv.android.xposed.XposedHelpers.callMethod; import static de.robv.android.xposed.XposedHelpers.setObjectField; @@ -32,172 +31,92 @@ public class AnimParamCustom extends BaseHook { @Override public void init() { - if (isMoreHyperOSVersion(1f)) { - AndroidLogUtils.logI(TAG, "HyperOS"); - findAndHookMethod("com.miui.home.recents.util.RectFSpringAnim", "setAnimParamByType", "com.miui.home.recents.util.RectFSpringAnim$AnimType", new XC_MethodReplacement() { - @Override - protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable { - Class clazzRectFSpringAnimRectAnimType = findClassIfExists("com.miui.home.recents.util.RectFSpringAnim$RectAnimType"); - Object RECT_CENTERX = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_CENTER_X"); - Object RECT_CENTERY = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_CENTER_Y"); - Object RECT_WIDTH = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_WIDTH"); - Object RECT_RATIO = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_RATIO"); - Object RADIUS = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RADIUS"); - Object ALPHA = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "ALPHA"); - Enum animType = (Enum) param.args[0]; - AndroidLogUtils.logI(TAG, "setAnimParamByType = " + animType); - setObjectField(param.thisObject, "mLastAminType", param.args[0]); - switch (animType.name()) { - case "BREAK_OPEN": // 1/1 - - case "CLOSE_TO_DRAG":// 2/9 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_9", 200) / 1000));// 0.9 0.2 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_9", 200) / 1000));// 0.9 0.2 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_9", 200) / 1000));// 0.9 0.2 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_9", 200) / 1000));// 0.9 0.2 - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_9", 200) / 1000));// 0.9 0.2 - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_9", 200) / 1000));// 0.9 0.2 - return null; - - case "OPEN_FROM_HOME":// 3/2 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_2", 330) / 1000));// 1 0.33 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_2", 330) / 1000));// 1 0.33 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_2", 330) / 1000));// 1 0.33 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_2", 330) / 1000));// 1 0.33 - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_2", 330) / 1000));// 1 0.33 - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_2", 200) / 1000));// 1 0.2 - return null; - - case "OPEN_FROM_RECENTS":// 4/3 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_3", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_3", 270) / 1000));// 0.9 0.27 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_3", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_3", 270) / 1000));// 0.9 0.27 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_3", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_3", 360) / 1000));// 0.99 0.36 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_3", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_3", 360) / 1000));// 0.99 0.36 - return null; - - case "CLOSE_TO_RECENTS":// 5/4 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_4", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_4", 400) / 1000));// 0.9 0.4 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_4", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_4", 400) / 1000));// 0.9 0.4 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_4", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_4", 400) / 1000));// 0.9 0.4 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_4", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_4", 350) / 1000));// 0.97 0.35 - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_4", 990) / 900), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_4", 400) / 1000));// 0.9 0.4 - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_4", 990) / 900), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_4", 400) / 1000));// 0.9 0.4 - return null; - - case "CLOSE_TO_HOME":// 6/5 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_5", 880) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_5", 460) / 1000));// 0.88 0.46 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_5", 880) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_5", 460) / 1000));// 0.88 0.46 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_5", 850) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_5", 460) / 1000));// 0.85 0.46 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_5", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_5", 350) / 1000));// 1 0.35 - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_5", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_5", 350) / 1000));// 1 0.35 - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_5", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_5", 400) / 1000));// 1 0.4 - return null; - - case "CLOSE_FROM_FEED":// 7/6 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_6", 378) / 1000));// 0.95 0.378 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_6", 378) / 1000));// 0.95 0.378 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_6", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_6", 405) / 1000));// 0.9 0.405 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_6", 333) / 1000));// 0.95 0.333 - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_6", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_6", 180) / 1000));// 0.99 0.18 - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_6", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_6", 378) / 1000));// 0.99 0.378 - return null; - - case "APP_TO_APP":// 8/7 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_7", 315) / 1000));// 0.99 0.315 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_7", 315) / 1000));// 0.99 0.315 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_7", 315) / 1000));// 0.99 0.315 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_7", 315) / 1000));// 0.99 0.315 - return null; - - case "START_FIRST_TASK":// 9/8 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_8", 180) / 1000));// 0.99 0.18 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_8", 180) / 1000));// 0.99 0.18 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_8", 180) / 1000));// 0.99 0.18 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_8", 180) / 1000));// 0.99 0.18 - return null; - - default: - return null; - } + findAndHookMethod("com.miui.home.recents.util.RectFSpringAnim", "setAnimParamByType", "com.miui.home.recents.util.RectFSpringAnim$AnimType", new XC_MethodReplacement() { + @Override + protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable { + Class clazzRectFSpringAnimRectAnimType = findClassIfExists("com.miui.home.recents.util.RectFSpringAnim$RectAnimType"); + Object RECT_CENTERX = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_CENTER_X"); + Object RECT_CENTERY = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_CENTER_Y"); + Object RECT_WIDTH = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_WIDTH"); + Object RECT_RATIO = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RECT_RATIO"); + Object RADIUS = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "RADIUS"); + Object ALPHA = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnimRectAnimType, "ALPHA"); + Enum animType = (Enum) param.args[0]; + AndroidLogUtils.logI(TAG, "setAnimParamByType = " + animType); + setObjectField(param.thisObject, "mLastAminType", param.args[0]); + switch (animType.name()) { + case "BREAK_OPEN": // 1/1 + + case "CLOSE_TO_DRAG":// 2/9 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_9", 200) / 1000));// 0.9 0.2 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_9", 200) / 1000));// 0.9 0.2 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_9", 200) / 1000));// 0.9 0.2 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_9", 200) / 1000));// 0.9 0.2 + callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_9", 200) / 1000));// 0.9 0.2 + callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_9", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_9", 200) / 1000));// 0.9 0.2 + return null; + + case "OPEN_FROM_HOME":// 3/2 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_2", 330) / 1000));// 1 0.33 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_2", 330) / 1000));// 1 0.33 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_2", 330) / 1000));// 1 0.33 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_2", 330) / 1000));// 1 0.33 + callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_2", 330) / 1000));// 1 0.33 + callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_2", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_2", 200) / 1000));// 1 0.2 + return null; + + case "OPEN_FROM_RECENTS":// 4/3 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_3", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_3", 270) / 1000));// 0.9 0.27 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_3", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_3", 270) / 1000));// 0.9 0.27 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_3", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_3", 360) / 1000));// 0.99 0.36 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_3", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_3", 360) / 1000));// 0.99 0.36 + return null; + + case "CLOSE_TO_RECENTS":// 5/4 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_4", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_4", 400) / 1000));// 0.9 0.4 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_4", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_4", 400) / 1000));// 0.9 0.4 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_4", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_4", 400) / 1000));// 0.9 0.4 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_4", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_4", 350) / 1000));// 0.97 0.35 + callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_4", 990) / 900), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_4", 400) / 1000));// 0.9 0.4 + callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_4", 990) / 900), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_4", 400) / 1000));// 0.9 0.4 + return null; + + case "CLOSE_TO_HOME":// 6/5 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_5", 880) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_5", 460) / 1000));// 0.88 0.46 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_5", 880) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_5", 460) / 1000));// 0.88 0.46 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_5", 850) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_5", 460) / 1000));// 0.85 0.46 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_5", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_5", 350) / 1000));// 1 0.35 + callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_5", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_5", 350) / 1000));// 1 0.35 + callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_5", 1000) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_5", 400) / 1000));// 1 0.4 + return null; + + case "CLOSE_FROM_FEED":// 7/6 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_6", 378) / 1000));// 0.95 0.378 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_6", 378) / 1000));// 0.95 0.378 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_6", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_6", 405) / 1000));// 0.9 0.405 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_6", 333) / 1000));// 0.95 0.333 + callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_6", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_6", 180) / 1000));// 0.99 0.18 + callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_6", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_6", 378) / 1000));// 0.99 0.378 + return null; + + case "APP_TO_APP":// 8/7 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_7", 315) / 1000));// 0.99 0.315 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_7", 315) / 1000));// 0.99 0.315 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_7", 315) / 1000));// 0.99 0.315 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_7", 315) / 1000));// 0.99 0.315 + return null; + + case "START_FIRST_TASK":// 9/8 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_8", 180) / 1000));// 0.99 0.18 + callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_8", 180) / 1000));// 0.99 0.18 + callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_8", 180) / 1000));// 0.99 0.18 + callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_8", 180) / 1000));// 0.99 0.18 + return null; + + default: + return null; } - }); - } else { - hookAllMethods("com.miui.home.recents.util.RectFSpringAnim", "setAnimParamByType", new MethodHook() { - @Override - protected void before(MethodHookParam param) throws NoSuchFieldException, ClassNotFoundException { - Class clazzRectFSpringAnim = ClassUtils.loadClass("com.miui.home.recents.util.RectFSpringAnim", null); - Object RECT_CENTERX = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnim, "RECT_CENTERX"); - Object RECT_CENTERY = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnim, "RECT_CENTERY"); - Object RECT_WIDTH = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnim, "RECT_WIDTH"); - Object RECT_RATIO = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnim, "RECT_RATIO"); - Object RADIUS = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnim, "RADIUS"); - Object ALPHA = ClassUtils.getStaticObjectOrNull(clazzRectFSpringAnim, "ALPHA"); - Enum animType = (Enum) param.args[0]; - switch (animType.name()) { - case "BREAK_OPEN" -> {// 1 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_1", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_1", 135) / 1000));// 0.99 0.135 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_1", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_1", 135) / 1000));// 0.99 0.135 - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_1", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_1", 135) / 1000));// 0.99 0.135 - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_1", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_1", 135) / 1000));// 0.99 0.135 - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_1", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_1", 135) / 1000));// 0.99 0.135 - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_1", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_1", 135) / 1000));// 0.99 0.135 - } - case "OPEN_FROM_HOME" -> {// 2 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_2", 960) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_2", 300) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_2", 960) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_2", 300) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_2", 960) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_2", 410) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_2", 960) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_2", 340) / 1000)); - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_2", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_2", 225) / 1000)); - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_2", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_2", 135) / 1000)); - } - case "OPEN_FROM_RECENTS" -> {// 3 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_3", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_3", 270) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_3", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_3", 270) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_3", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_3", 360) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_3", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_3", 360) / 1000)); - } - case "CLOSE_TO_RECENTS" -> {// 4 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_4", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_4", 315) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_4", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_4", 315) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_4", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_4", 315) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_4", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_4", 270) / 1000)); - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_4", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_4", 270) / 1000)); - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_4", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_4", 270) / 1000)); - } - case "CLOSE_TO_HOME" -> {// 5 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_5", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_5", 450) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_5", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_5", 450) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_5", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_5", 450) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_5", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_5", 370) / 1000)); - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_5", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_5", 150) / 1000)); - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_5", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_5", 420) / 1000)); - } - case "CLOSE_FROM_FEED" -> {// 6 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_6", 378) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_6", 378) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_6", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_6", 405) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_6", 950) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_6", 333) / 1000)); - callMethod(param.thisObject, "setAnimParam", RADIUS, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RADIUS_6", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RADIUS_6", 180) / 1000)); - callMethod(param.thisObject, "setAnimParam", ALPHA, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_ALPHA_6", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_ALPHA_6", 378) / 1000)); - } - case "APP_TO_APP" -> {// 7 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_7", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_7", 315) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_7", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_7", 315) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_7", 315) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_7", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_7", 315) / 1000)); - } - case "START_FIRST_TASK" -> {// 8 - callMethod(param.thisObject, "setAnimParam", RECT_CENTERX, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERX_8", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERX_8", 180) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_CENTERY, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_CENTERY_8", 900) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_CENTERY_8", 180) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_WIDTH, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_WIDTH_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_WIDTH_8", 180) / 1000)); - callMethod(param.thisObject, "setAnimParam", RECT_RATIO, ((float) mPrefsMap.getInt("home_title_custom_anim_param_damping_RECT_RATIO_8", 990) / 1000), ((float) mPrefsMap.getInt("home_title_custom_anim_param_stiffness_RECT_RATIO_8", 180) / 1000)); - } - default -> { - } - } - param.setResult(null); - } - }); - } + } + }); } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/lbe/DisableClipboardTip.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/lbe/DisableClipboardTip.kt deleted file mode 100644 index 6db07dd33..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/lbe/DisableClipboardTip.kt +++ /dev/null @@ -1,112 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.lbe - -import android.content.* -import android.content.pm.* -import android.os.* -import android.widget.* -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.sevtinge.hyperceiler.* -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.module.base.tool.OtherTool.* -import de.robv.android.xposed.* -import de.robv.android.xposed.callbacks.* - - -object DisableClipboardTip : BaseHook() { - private val mDisableClipboardTip by lazy { - mPrefsMap.getBoolean("lbe_disable_clipboard_tip") - } - - private val permissionRequestClass by lazy { - loadClass("com.lbe.security.sdk.PermissionRequest", lpparam.classLoader) - } - - override fun init() { - XposedHelpers.findAndHookMethod( - "com.lbe.security.ui.SecurityPromptHandler", - lpparam.classLoader, - "handleNewRequest", - permissionRequestClass, - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val permissionRequest = param.args[0] - val permission: Long = - XposedHelpers.callMethod(permissionRequest, "getPermission") as Long - - // PermissionManager.PERM_ID_READ_CLIPBOARD - if (permission == 274877906944L) { - val packageName = - XposedHelpers.callMethod(permissionRequest, "getPackage") as String - val context = - XposedHelpers.getObjectField(param.thisObject, "mContext") as Context - val appName = getAppName(context, packageName) - val modRes = getModuleRes(context) - - if (!mDisableClipboardTip) { - Toast.makeText(context, "$appName ${modRes.getString(R.string.lbe_clipboard_tip)}", Toast.LENGTH_SHORT).show() - } - hideDialog(lpparam, packageName, param) - - logI( - TAG, - this@DisableClipboardTip.lpparam.packageName, - " $packageName -> $appName read clipboard." - ) - } - } - }) - } - - fun getAppName(context: Context, packageName: String): String { - val pm: PackageManager = context.applicationContext.packageManager - val ai: ApplicationInfo = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - pm.getApplicationInfo(packageName, PackageManager.ApplicationInfoFlags.of(0)) - } else { - pm.getApplicationInfo(packageName, 0) - } - return (pm.getApplicationLabel(ai)) as String - } - - private fun hideDialog( - lpparam: XC_LoadPackage.LoadPackageParam, - packageName: String, - param: XC_MethodHook.MethodHookParam - ) { - val clipData = XposedHelpers.findClass( - "com.lbe.security.utility.AnalyticsHelper", - lpparam.classLoader - ) - val hashMap = HashMap() - hashMap["pkgName"] = packageName - hashMap["count"] = "click" - XposedHelpers.callStaticMethod( - clipData, - "recordCountEvent", - "clip", - "ask_allow", - hashMap - ) - - XposedHelpers.callMethod(param.thisObject, "gotChoice", 3, true, true) - XposedHelpers.callMethod(param.thisObject, "onStop") - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/mtb/BypassAuthentication.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/mtb/BypassAuthentication.kt index d86f03bc3..f343dcd07 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/mtb/BypassAuthentication.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/mtb/BypassAuthentication.kt @@ -31,15 +31,13 @@ object BypassAuthentication : BaseHook() { // 在HyperOS上 runCatching { - if (isMoreHyperOSVersion(1f)) { - loadClass("com.xiaomi.mtb.XiaoMiServerPermissionCheck").methodFinder() - .filterByName("getClassErrorString") - .single().createHook { - after { - it.result = null - } + loadClass("com.xiaomi.mtb.XiaoMiServerPermissionCheck").methodFinder() + .filterByName("getClassErrorString") + .single().createHook { + after { + it.result = null } - } + } } runCatching { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/AiClipboardEnable.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/AiClipboardEnable.kt deleted file mode 100644 index 646bc21d0..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/AiClipboardEnable.kt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.securitycenter.lab - -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.LabUtilsClass.labUtilClass - - -object AiClipboardEnable : BaseHook() { - private var labUtils: Class<*>? = null - override fun init() { - labUtilClass.forEach { - labUtils = it - logI(TAG, this.lpparam.packageName, "labUtils class is $labUtils") - findAndHookMethod( - "com.miui.permcenter.settings.PrivacyLabActivity", - "onCreateFragment", - object : MethodHook() { - override fun before(param: MethodHookParam) { - val fm = getStaticObjectFieldSilently(labUtils, "b") - if (fm != null) { - try { - val featMap = fm as MutableMap - featMap["mi_lab_ai_clipboard_enable"] = 0 - // featMap.put("mi_lab_blur_location_enable", 0); - } catch (ignore: Throwable) { - } - } - } - }) - } - - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/BlurLocationEnable.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/BlurLocationEnable.kt deleted file mode 100644 index 220779ea6..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/BlurLocationEnable.kt +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.securitycenter.lab - -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.LabUtilsClass.labUtilClass - - -object BlurLocationEnable : BaseHook() { - private var labUtils: Class<*>? = null - - override fun init() { - labUtilClass.forEach { - labUtils = it - logI(TAG, this.lpparam.packageName, "labUtils class is $labUtils") - findAndHookMethod( - "com.miui.permcenter.settings.PrivacyLabActivity", - "onCreateFragment", - object : MethodHook() { - @Throws(Throwable::class) - override fun before(param: MethodHookParam) { - val fm = getStaticObjectFieldSilently(labUtils, "b") - if (fm != null) { - try { - val featMap = fm as MutableMap - featMap["mi_lab_blur_location_enable"] = 0 - // featMap.put("mi_lab_blur_location_enable", 0); - } catch (_: Throwable) { - } - } - } - }) - } - - /*try { - val result: List = Objects.requireNonNull>( - SecurityCenterDexKit.mSecurityCenterResultClassMap.get("LabUtils") - ) - for (descriptor in result) { - labUtils = descriptor.getClassInstance(lpparam.classLoader) - log("labUtils class is $labUtils") - findAndHookMethod( - "com.miui.permcenter.settings.PrivacyLabActivity", - "onCreateFragment", - object : BaseHook.MethodHook() { - @Throws(Throwable::class) - protected override fun before(param: MethodHookParam) { - val fm = Helpers.getStaticObjectFieldSilently(labUtils, "b") - if (fm != null) { - try { - val featMap = fm as MutableMap - featMap["mi_lab_blur_location_enable"] = 0 - // featMap.put("mi_lab_blur_location_enable", 0); - } catch (ignore: Throwable) { - } - } - } - }) - } - } catch (e: Throwable) { - e.printStackTrace() - }*/ - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/GetNumberEnable.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/GetNumberEnable.kt deleted file mode 100644 index af3cefa91..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/GetNumberEnable.kt +++ /dev/null @@ -1,78 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.securitycenter.lab - -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.module.hook.securitycenter.lab.LabUtilsClass.labUtilClass - - -object GetNumberEnable : BaseHook() { - private var labUtils: Class<*>? = null - override fun init() { - labUtilClass.forEach { - labUtils = it - logI(TAG, this.lpparam.packageName, "labUtils class is $labUtils") - findAndHookMethod( - "com.miui.permcenter.settings.PrivacyLabActivity", - "onCreateFragment", - object : MethodHook() { - @Throws(Throwable::class) - override fun before(param: MethodHookParam) { - val fm = getStaticObjectFieldSilently(labUtils, "b") - if (fm != null) { - try { - val featMap = fm as MutableMap - featMap["mi_lab_operator_get_number_enable"] = 0 - // featMap.put("mi_lab_blur_location_enable", 0); - } catch (_: Throwable) { - } - } - } - }) - } - - /* val result: List = Objects.requireNonNull>( - SecurityCenterDexKit.mSecurityCenterResultClassMap.get("LabUtils") - ) - for (descriptor in result) { - labUtils = descriptor.getClassInstance(lpparam.classLoader) - log("labUtils class is $labUtils") - findAndHookMethod( - "com.miui.permcenter.settings.PrivacyLabActivity", - "onCreateFragment", - object : BaseHook.MethodHook() { - @Throws(Throwable::class) - protected override fun before(param: MethodHookParam) { - val fm = Helpers.getStaticObjectFieldSilently(labUtils, "b") - if (fm != null) { - try { - val featMap = fm as MutableMap - featMap["mi_lab_operator_get_number_enable"] = 0 - // featMap.put("mi_lab_blur_location_enable", 0); - } catch (ignore: Throwable) { - } - } - } - }) - } - } catch (e: Throwable) { - e.printStackTrace() - }*/ - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/LabUtilsClass.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/LabUtilsClass.kt deleted file mode 100644 index 52ed161a4..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/securitycenter/lab/LabUtilsClass.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.securitycenter.lab - -import com.sevtinge.hyperceiler.module.base.dexkit.* - -object LabUtilsClass { - val labUtilClass by lazy>> { - DexKit.findMemberList("labUtilClass") { - it.findClass { - matcher { - usingEqStrings("mi_lab_ai_clipboard_enable", "mi_lab_blur_location_enable") - } - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/RotationButton.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/RotationButton.java deleted file mode 100644 index 5b763d620..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/RotationButton.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.hook.systemframework; - -import android.content.Context; -import android.provider.Settings; - -import com.sevtinge.hyperceiler.module.base.BaseHook; -import com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt; - -import de.robv.android.xposed.XposedHelpers; - -public class RotationButton extends BaseHook { - Context context; - - boolean isHyper = false; - - @Override - public void init() throws NoSuchMethodException { - isHyper = SystemSDKKt.isMoreHyperOSVersion(1f); - if (isHyper) return; - hookAllConstructors("com.android.server.wm.DisplayRotation$OrientationListener", - new MethodHook() { - @Override - protected void after(MethodHookParam param) { - Object arg = param.args[1]; - if (arg instanceof Context) { - context = (Context) param.args[1]; - } - } - } - ); - - findAndHookMethod("com.android.server.wm.DisplayRotation$OrientationListener", - "onProposedRotationChanged", int.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - int rotation = (int) param.args[0]; - Object displayRotation = XposedHelpers.getObjectField(param.thisObject, "this$0"); - int mCurrentAppOrientation = XposedHelpers.getIntField(displayRotation, "mCurrentAppOrientation"); - boolean result = (boolean) XposedHelpers.callMethod(displayRotation, "isRotationChoicePossible", - mCurrentAppOrientation); - if (result) { - if (context == null) { - context = (Context) XposedHelpers.getObjectField(displayRotation, "mContext"); - if (context == null) { - logE(TAG, "context can't is null!!!"); - return; - } - } - boolean isValid = (boolean) XposedHelpers.callMethod(displayRotation, "isValidRotationChoice", rotation); - setData(context, rotation + "," + isValid); - } - } - } - ); - - - /*findAndHookMethod("com.android.server.wm.DisplayRotation", - "isRotationChoicePossible", int.class, - new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - super.after(param); - // int orientation = (int) param.args[0]; - // boolean result = (boolean) param.getResult(); - // if (!result && (orientation == 1 || orientation == -1)) { - // param.setResult(true); - // } - } - } - );*/ - } - - private void setData(Context context, String value) { - Settings.System.putString(context.getContentResolver(), "rotation_button_data", value); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeDisableSafe.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeDisableSafe.java index 6d83999bd..4aef131cc 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeDisableSafe.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeDisableSafe.java @@ -36,64 +36,51 @@ public class VolumeDisableSafe extends BaseHook { @Override public void init() { - if (isMoreAndroidVersion(34)) { - Class SoundDoseHelperStub; - Class SoundDoseHelper = findClass("com.android.server.audio.SoundDoseHelper", lpparam.classLoader); - try { - SoundDoseHelperStub = findClass("com.android.server.audio.SoundDoseHelperStub", lpparam.classLoader); - } catch (Throwable t) { - SoundDoseHelperStub = findClass("com.android.server.audio.SoundDoseHelperStubImpl", lpparam.classLoader); - } + Class SoundDoseHelperStub; + Class SoundDoseHelper = findClass("com.android.server.audio.SoundDoseHelper", lpparam.classLoader); + try { + SoundDoseHelperStub = findClass("com.android.server.audio.SoundDoseHelperStub", lpparam.classLoader); + } catch (Throwable t) { + SoundDoseHelperStub = findClass("com.android.server.audio.SoundDoseHelperStubImpl", lpparam.classLoader); + } - findAndHookMethod(SoundDoseHelperStub, "updateSafeMediaVolumeIndex", int.class, new MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - if (mode == 1) { - param.setResult(2147483646); - return; - } - if (isHeadsetOn) param.setResult(2147483646); + findAndHookMethod(SoundDoseHelperStub, "updateSafeMediaVolumeIndex", int.class, new MethodHook() { + @Override + protected void before(MethodHookParam param) throws Throwable { + if (mode == 1) { + param.setResult(2147483646); + return; } - }); - - findAndHookMethod(SoundDoseHelper, "safeMediaVolumeIndex", int.class, new MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - if (mode == 1) { - param.setResult(2147483646); - return; - } - if (isHeadsetOn) param.setResult(2147483646); + if (isHeadsetOn) param.setResult(2147483646); + } + }); + + findAndHookMethod(SoundDoseHelper, "safeMediaVolumeIndex", int.class, new MethodHook() { + @Override + protected void before(MethodHookParam param) throws Throwable { + if (mode == 1) { + param.setResult(2147483646); + return; } - }); + if (isHeadsetOn) param.setResult(2147483646); + } + }); - hookAllConstructors(SoundDoseHelper, new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - if (mode == 1) { - return; - } - Context context = (Context) param.args[1]; - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); - intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); - intentFilter.addAction(AudioManager.ACTION_HEADSET_PLUG); - context.registerReceiver(new Listener(), intentFilter); - } - }); - - } else { - findAndHookMethod("com.android.server.audio.AudioService", "safeMediaVolumeIndex", new MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - if (mode == 1) { - param.setResult(2147483646); - return; - } - if (isHeadsetOn) param.setResult(2147483646); + hookAllConstructors(SoundDoseHelper, new MethodHook() { + @Override + protected void after(MethodHookParam param) throws Throwable { + if (mode == 1) { + return; } - }); - } + Context context = (Context) param.args[1]; + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); + intentFilter.addAction(AudioManager.ACTION_HEADSET_PLUG); + context.registerReceiver(new Listener(), intentFilter); + } + }); + } private static class Listener extends BroadcastReceiver { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeSeparateControl.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeSeparateControl.java deleted file mode 100644 index c753949c5..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/VolumeSeparateControl.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemframework; - -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; - -import android.os.Build; -import android.provider.Settings; -import android.util.SparseIntArray; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -import java.util.Set; - -import de.robv.android.xposed.XposedHelpers; - -public class VolumeSeparateControl extends BaseHook { - - Class mAudioService; - - @Override - public void init() { - - mAudioService = findClassIfExists("com.android.server.audio.AudioService"); - - findAndHookMethod(mAudioService, "updateStreamVolumeAlias", boolean.class, String.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - int[] mStreamVolumeAlias = - (int[]) (isMoreAndroidVersion(Build.VERSION_CODES.TIRAMISU) ? - XposedHelpers.getStaticObjectField(mAudioService, "mStreamVolumeAlias") : - XposedHelpers.getObjectField(param.thisObject, "mStreamVolumeAlias")); - mStreamVolumeAlias[1] = 1; - mStreamVolumeAlias[5] = 5; - - if (isAndroidVersion(33)) { - XposedHelpers.setStaticObjectField(mAudioService, "mStreamVolumeAlias", mStreamVolumeAlias); - } else { - XposedHelpers.setObjectField(param.thisObject, "mStreamVolumeAlias", mStreamVolumeAlias); - } - } - }); - - findAndHookMethod("com.android.server.audio.AudioService$VolumeStreamState", "readSettings", new MethodHook() { - @Override - protected void before(MethodHookParam param) throws Throwable { - - int mStreamType = XposedHelpers.getIntField(param.thisObject, "mStreamType"); - if (mStreamType != 1) return; - - synchronized (param.method.getDeclaringClass()) { - Class audioSystem = XposedHelpers.findClassIfExists("android.media.AudioSystem", lpparam.classLoader); - Set DEVICE_OUT_ALL = (Set) XposedHelpers.getStaticObjectField(audioSystem, "DEVICE_OUT_ALL_SET"); - int DEVICE_OUT_DEFAULT = XposedHelpers.getStaticIntField(audioSystem, "DEVICE_OUT_DEFAULT"); - int[] DEFAULT_STREAM_VOLUME = (int[]) XposedHelpers.getStaticObjectField(audioSystem, "DEFAULT_STREAM_VOLUME"); - Object mContentResolver = XposedHelpers.getObjectField(XposedHelpers.getSurroundingThis(param.thisObject), "mContentResolver"); - SparseIntArray mIndexMap = (SparseIntArray) XposedHelpers.getObjectField(param.thisObject, "mIndexMap"); - - for (Integer deviceType : DEVICE_OUT_ALL) { - int device = deviceType; - String name = (String) XposedHelpers.callMethod(param.thisObject, "getSettingNameForDevice", device); - int index = (int) XposedHelpers.callStaticMethod(Settings.System.class, "getIntForUser", mContentResolver, name, device == DEVICE_OUT_DEFAULT ? DEFAULT_STREAM_VOLUME[mStreamType] : -1, -2); - if (index != -1) { - mIndexMap.put(device, (int) XposedHelpers.callMethod(param.thisObject, "getValidIndex", 10 * index, true)); - } - } - XposedHelpers.setObjectField(param.thisObject, "mIndexMap", mIndexMap); - } - param.setResult(null); - } - }); - - findAndHookMethodSilently(mAudioService, "shouldZenMuteStream", int.class, new MethodHook() { - protected void after(MethodHookParam param) throws Throwable { - int mStreamType = (int) param.args[0]; - if (mStreamType == 5 && !(boolean) param.getResult()) { - int mZenMode = (int) XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "mNm"), "getZenMode"); - if (mZenMode == 1) param.setResult(true); - } - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/freeform/FreeFormCount.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/freeform/FreeFormCount.kt index 228bae720..1a4df31e9 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/freeform/FreeFormCount.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemframework/freeform/FreeFormCount.kt @@ -19,11 +19,9 @@ package com.sevtinge.hyperceiler.module.hook.systemframework.freeform import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHooks import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.devicesdk.* class FreeFormCount : BaseHook() { override fun init() { @@ -38,14 +36,5 @@ class FreeFormCount : BaseHook() { }.toList().createHooks { returnConstant(256) } - - // ShouldStopStartFreeform - if (isAndroidVersion(33)) { - clazzMiuiFreeFormStackDisplayStrategy.methodFinder() - .filterByName("shouldStopStartFreeform") - .single().createHook { - returnConstant(false) - } - } } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemsettings/VolumeSeparateControlForSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemsettings/VolumeSeparateControlForSettings.java deleted file mode 100644 index 9c17068db..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemsettings/VolumeSeparateControlForSettings.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.hook.systemsettings; - -import static com.sevtinge.hyperceiler.module.base.tool.OtherTool.getModuleRes; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.os.Bundle; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.module.base.BaseHook; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; - -import de.robv.android.xposed.XposedHelpers; - -public class VolumeSeparateControlForSettings extends BaseHook { - - Class mVsbCls; - Class mPreferenceGroupCls; - Class mPreferenceCls; - - public static int mSystemResId; - public static int mCallsResId; - public static int mNotificationVolumeResId; - - @Override - public void init() { - - mVsbCls = findClassIfExists("com.android.settings.sound.VolumeSeekBarPreference"); - mPreferenceGroupCls = findClassIfExists("androidx.preference.PreferenceGroup"); - mPreferenceCls = findClassIfExists("androidx.preference.Preference"); - - findAndHookMethod("com.android.settings.MiuiSoundSettings", "onCreate", Bundle.class, new MethodHook() { - @SuppressLint("DiscouragedApi") - @Override - protected void after(MethodHookParam param) throws Throwable { - Object fragment = param.thisObject; - Context context = (Context) XposedHelpers.callMethod(fragment, "getActivity"); - Resources modRes = getModuleRes(context); - int order = 6; - - Method[] initSeekBar; - String addPreference = "addPreference"; - - try { - initSeekBar = XposedHelpers.findMethodsByExactParameters(fragment.getClass(), void.class, String.class, int.class, int.class); - if (mVsbCls == null || initSeekBar.length == 0) { - logE(TAG, VolumeSeparateControlForSettings.this.lpparam.packageName, "Unable to find class/method in Settings to hook"); - return; - } else { - initSeekBar[0].setAccessible(true); - } - - Method[] methods = XposedHelpers.findMethodsByExactParameters(mPreferenceGroupCls, void.class, mPreferenceCls); - for (Method method : methods) { - if (Modifier.isPublic(method.getModifiers())) { - addPreference = method.getName(); - break; - } - } - } catch (Throwable t) { - logE(TAG, VolumeSeparateControlForSettings.this.lpparam.packageName, "Unable to find class/method in Settings to hook", t); - return; - } - - Object media = XposedHelpers.callMethod(fragment, "findPreference", "media_volume"); - if (media != null) order = (int) XposedHelpers.callMethod(media, "getOrder"); - - Object prefScreen = XposedHelpers.callMethod(fragment, "getPreferenceScreen"); - Object pref = XposedHelpers.newInstance(mVsbCls, context); - - XposedHelpers.callMethod(pref, "setKey", "system_volume"); - XposedHelpers.callMethod(pref, "setTitle", modRes.getString(R.string.system_volume)); - XposedHelpers.callMethod(pref, "setPersistent", true); - XposedHelpers.callMethod(prefScreen, addPreference, pref); - initSeekBar[0].invoke(fragment, "system_volume", 1, context.getResources().getIdentifier("ic_audio_vol", "drawable", context.getPackageName())); - XposedHelpers.callMethod(pref, "setOrder", order); - - pref = XposedHelpers.newInstance(mVsbCls, context); - XposedHelpers.callMethod(pref, "setKey", "notification_volume"); - XposedHelpers.callMethod(pref, "setTitle", modRes.getString(R.string.notification_volume)); - XposedHelpers.callMethod(pref, "setPersistent", true); - XposedHelpers.callMethod(prefScreen, addPreference, pref); - initSeekBar[0].invoke(fragment, "notification_volume", 5, context.getResources().getIdentifier("ic_audio_ring_notif", "drawable", context.getPackageName())); - XposedHelpers.callMethod(pref, "setOrder", order); - - Object mRingVolume = XposedHelpers.callMethod(param.thisObject, "findPreference", "ring_volume"); - XposedHelpers.callMethod(mRingVolume, "setTitle", mCallsResId); - } - }); - } - - - public static void initRes() { - mSystemResId = R.drawable.ic_audio_system; - mNotificationVolumeResId = R.drawable.ic_miui_volume_notification; - /*mCallsResId = XposedInit.mResHook.addResource("ring_volume_option_newtitle", R.string.calls);*/ - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/BrightnessPct.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/BrightnessPct.java index bacc68dc1..f5dcd244c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/BrightnessPct.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/BrightnessPct.java @@ -18,60 +18,19 @@ */ package com.sevtinge.hyperceiler.module.hook.systemui; -import static com.sevtinge.hyperceiler.module.base.tool.OtherTool.initPct; import static com.sevtinge.hyperceiler.module.base.tool.OtherTool.mPct; import static com.sevtinge.hyperceiler.module.base.tool.OtherTool.removePct; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; import android.annotation.SuppressLint; -import android.view.View; -import android.view.ViewGroup; import com.sevtinge.hyperceiler.module.base.BaseHook; -import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedHelpers; public class BrightnessPct extends BaseHook { @Override @SuppressLint("SetTextI18n") public void init() throws NoSuchMethodException { - if (!isMoreHyperOSVersion(1f)) { - findAndHookMethod("com.android.systemui.statusbar.policy.BrightnessMirrorController", "showMirror", new MethodHook() { - @Override - protected void after(MethodHookParam param) { - ViewGroup mStatusBarWindow = (ViewGroup) XposedHelpers.getObjectField(param.thisObject, "mStatusBarWindow"); - if (mStatusBarWindow == null) { - logE(TAG, lpparam.packageName, "mStatusBarWindow is null"); - return; - } - initPct(mStatusBarWindow, 1); - mPct.setVisibility(View.VISIBLE); - } - }); - - findAndHookMethod("com.android.systemui.statusbar.policy.BrightnessMirrorController", "hideMirror", new MethodHook() { - @Override - protected void after(MethodHookParam param) { - removePct(mPct); - } - } - ); - - hookAllMethods("com.android.systemui.controlcenter.policy.MiuiBrightnessController", "onStart", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - Object windowView = getObject(param); - if (windowView == null) { - logE(TAG, lpparam.packageName, "mControlPanelContentView is null"); - return; - } - initPct((ViewGroup) windowView, 2); - mPct.setVisibility(View.VISIBLE); - } - }); - } - hookAllMethods("com.android.systemui.controlcenter.policy.MiuiBrightnessController", "onStop", new MethodHook() { @Override protected void after(MethodHookParam param) { @@ -96,14 +55,4 @@ protected void after(MethodHookParam param) { } }); } - - private static Object getObject(XC_MethodHook.MethodHookParam param) { - Object mMirror = XposedHelpers.getObjectField(param.thisObject, "mControl"); - Object controlCenterWindowViewController = XposedHelpers.getObjectField(mMirror, "controlCenterWindowViewController"); - String clsName = controlCenterWindowViewController.getClass().getName(); - if (!clsName.equals("ControlCenterWindowViewController")) { - controlCenterWindowViewController = XposedHelpers.callMethod(controlCenterWindowViewController, "get"); - } - return XposedHelpers.callMethod(controlCenterWindowViewController, "getView"); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/DisableTransparent.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/DisableTransparent.java index ed49910ef..faa3ab73a 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/DisableTransparent.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/DisableTransparent.java @@ -18,18 +18,13 @@ */ package com.sevtinge.hyperceiler.module.hook.systemui; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import com.sevtinge.hyperceiler.module.base.BaseHook; public class DisableTransparent extends BaseHook { @Override public void init() throws NoSuchMethodException { // from https://www.coolapk.com/feed/52893204?shareKey=YTA3MTRkZGJmYTJmNjVlNmI4MTY~&shareUid=1499664&shareFrom=com.coolapk.app_5.3 - String methodName; - if (isMoreHyperOSVersion(1f)) methodName = "isTransparent"; - else methodName = "isTransparentMode"; - findAndHookMethod("com.android.systemui.statusbar.notification.row.NotificationContentInflaterInjector", methodName, new MethodHook() { + findAndHookMethod("com.android.systemui.statusbar.notification.row.NotificationContentInflaterInjector", "isTransparent", new MethodHook() { @Override protected void before(MethodHookParam param) throws Throwable { param.setResult(false); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/MonetThemeOverlay.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/MonetThemeOverlay.java index 8a95d0d88..f8ceb4308 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/MonetThemeOverlay.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/MonetThemeOverlay.java @@ -37,9 +37,6 @@ public class MonetThemeOverlay extends BaseHook { @Override public void init() { THEME_CLASS_AOSP = findClassIfExists("com.android.systemui.theme.ThemeOverlayController"); - String mMethodName; - if (isMoreAndroidVersion(34)) mMethodName = "createOverlays"; - else mMethodName = "getOverlay"; hookAllConstructors(THEME_CLASS_AOSP, new MethodHook() { @Override @@ -49,7 +46,7 @@ protected void before(MethodHookParam param) throws Throwable { } }); - hookAllMethods(THEME_CLASS_AOSP, mMethodName, new MethodHook() { + hookAllMethods(THEME_CLASS_AOSP, "createOverlays", new MethodHook() { @Override protected void before(MethodHookParam param) throws Throwable { mHandler = new Handler(mContext.getMainLooper()); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/NotificationFreeform.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/NotificationFreeform.java index 1ba14b0d3..a933bdc16 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/NotificationFreeform.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/NotificationFreeform.java @@ -1,46 +1,39 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.module.hook.systemui; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; import com.sevtinge.hyperceiler.module.base.BaseHook; + import de.robv.android.xposed.XposedHelpers; public class NotificationFreeform extends BaseHook { @Override public void init() { - if (isMoreAndroidVersion(34)) { - findAndHookMethod(findClassIfExists("com.android.systemui.statusbar.notification.row.MiuiExpandableNotificationRow"), "updateMiniWindowBar", new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - super.after(param); - XposedHelpers.setObjectField(param.thisObject, "mCanSlide", true); - } - }); - } else { - findAndHookMethod(findClassIfExists("com.android.systemui.statusbar.notification.NotificationSettingsManager"), "canSlide", String.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - param.setResult(true); - } - }); - } + findAndHookMethod(findClassIfExists("com.android.systemui.statusbar.notification.row.MiuiExpandableNotificationRow"), "updateMiniWindowBar", new MethodHook() { + @Override + protected void after(MethodHookParam param) throws Throwable { + super.after(param); + XposedHelpers.setObjectField(param.thisObject, "mCanSlide", true); + } + }); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/QSDetailBackGround.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/QSDetailBackGround.java deleted file mode 100644 index c7d068291..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/QSDetailBackGround.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui; - -import android.content.pm.ApplicationInfo; -import android.graphics.Paint; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -import de.robv.android.xposed.XposedHelpers; - -public class QSDetailBackGround extends BaseHook { - - private ClassLoader mPluginLoader = null; - - @Override - public void init() { - findAndHookMethod("com.android.systemui.shared.plugins.PluginManagerImpl", "getClassLoader", ApplicationInfo.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - ApplicationInfo appInfo = (ApplicationInfo) param.args[0]; - if ("miui.systemui.plugin".equals(appInfo.packageName)) { - if (mPluginLoader == null) { - mPluginLoader = (ClassLoader) param.getResult(); - } - - hookAllMethods("miui.systemui.widget.SmoothRoundDrawable", mPluginLoader, "inflate", new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - Paint mPaint = (Paint) XposedHelpers.getObjectField(param.thisObject, "mPaint"); - mPaint.setAlpha(mPrefsMap.getInt("system_control_center_qs_detail_bg", 0)); - } - }); - } - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/AddBlurEffectToNotificationView.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/AddBlurEffectToNotificationView.kt deleted file mode 100644 index 95fc66b78..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/AddBlurEffectToNotificationView.kt +++ /dev/null @@ -1,790 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter - -import android.annotation.SuppressLint -import android.graphics.drawable.Drawable -import android.graphics.drawable.GradientDrawable -import android.view.View -import android.view.ViewGroup -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.EzXHelper.appContext -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.blur.BlurUtils.createBlurDrawable -import com.sevtinge.hyperceiler.utils.blur.BlurUtils.isBlurDrawable -import com.sevtinge.hyperceiler.utils.callStaticMethod -import com.sevtinge.hyperceiler.utils.devicesdk.isAndroidVersion -import com.sevtinge.hyperceiler.utils.devicesdk.isMoreAndroidVersion -import com.sevtinge.hyperceiler.utils.getObjectField -import com.sevtinge.hyperceiler.utils.getValueByField -import com.sevtinge.hyperceiler.utils.hookAfterMethod -import com.sevtinge.hyperceiler.utils.replaceMethod -import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.XposedHelpers - -@SuppressLint("NewApi") -object AddBlurEffectToNotificationView : BaseHook() { - var blurBackgroundAlpha: Int = - mPrefsMap.getInt("system_ui_control_center_blur_background_alpha", 100) - var cornerRadius: Int = mPrefsMap.getInt("system_ui_control_center_corner_radius", 48) - var blurRadius: Int = mPrefsMap.getInt("system_ui_control_center_blur_radius", 99) - var defaultBackgroundAlpha: Int = - mPrefsMap.getInt("system_ui_control_center_default_background_alpha", 200) - - fun setDrawableAlpha(thiz: Any?, alpha: Int) { - if (isAndroidVersion(34)) { - XposedHelpers.setObjectField(thiz, "mDrawableAlpha", alpha) - } else { - XposedHelpers.callMethod( - thiz, - "setDrawableAlpha", - arrayOf>(Integer.TYPE), - alpha - ) - } - } - - override fun init() { - val miuiExpandableNotificationRowClass = - findClassIfExists("com.android.systemui.statusbar.notification.row.MiuiExpandableNotificationRow") - ?: return - - val notificationBackgroundViewClass = - findClassIfExists("com.android.systemui.statusbar.notification.row.NotificationBackgroundView") - ?: return - - val appMiniWindowRowTouchHelperClass = - findClassIfExists("com.android.systemui.statusbar.notification.policy.AppMiniWindowRowTouchHelper") - ?: return - - val miuiNotificationPanelViewControllerClass = - findClassIfExists( - if (isAndroidVersion(34)) - "com.android.systemui.shade.MiuiNotificationPanelViewController" - else - "com.android.systemui.statusbar.phone.MiuiNotificationPanelViewController" - ) ?: return - - val notificationStackScrollLayoutClass = - findClassIfExists("com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout") - ?: return - - val lockScreenMagazineControllerClass = - findClassIfExists("com.android.keyguard.magazine.LockScreenMagazineController") - ?: return - - val blurRatioChangedListener = - findClassIfExists( - if (isAndroidVersion(34)) - "com.android.systemui.shade.MiuiNotificationPanelViewController\$mBlurRatioChangedListener\$1" - else - "com.android.systemui.statusbar.phone.MiuiNotificationPanelViewController\$mBlurRatioChangedListener\$1" - ) ?: return - - // 通知模糊额外修正项,增加一个开关避免使用过程中暴毙 - if (isAndroidVersion(33) && mPrefsMap.getBoolean("n_enable_fix")) { - val mediaDataFilterClass = - findClassIfExists("com.android.systemui.media.MediaDataFilter") ?: return - - val expandableNotificationRowClass = - findClassIfExists("com.android.systemui.statusbar.notification.row.ExpandableNotificationRow") - ?: return - - // 增加一个锁屏页面判断 - var onKeyguard = false - - expandableNotificationRowClass.hookAfterMethod("isOnKeyguard") { - onKeyguard = it.result as Boolean - } - - // 增加一个控制中心音乐播放器判断 - var hasActiveMediaOrRecommendation = false - - mediaDataFilterClass.hookAfterMethod("hasActiveMediaOrRecommendation") { - hasActiveMediaOrRecommendation = it.result as Boolean - } - - - // 换个方式修改通知上划极限值 - try { - "com.android.systemui.statusbar.notification.stack.AmbientState".replaceMethod("getOverExpansion") { - val getScreenHeight = - loadClass("com.android.systemui.fsgesture.AppQuickSwitchActivity") - .callStaticMethod("getScreenHeight", appContext) as Int - val mOverExpansion = it.thisObject.getObjectField("mOverExpansion") as Float - val isNCSwitching = it.thisObject.getObjectField("isNCSwitching") as Boolean - val isSwipingUp = it.thisObject.getObjectField("mIsSwipingUp") as Boolean - val isFlinging = it.thisObject.getObjectField("mIsFlinging") as Boolean - val isAppearing = it.thisObject.getObjectField("mAppearing") as Boolean - val isScreenLandscape = - loadClass("com.android.systemui.statusbar.notification.NotificationUtil") - .callStaticMethod("isScreenLandscape") as Boolean - - if (isAppearing && (isSwipingUp || isFlinging) && !isNCSwitching) { - if (hasActiveMediaOrRecommendation) { - if (isScreenLandscape) - return@replaceMethod -getScreenHeight.toFloat() - else - return@replaceMethod -getScreenHeight.toFloat() * 6.0f - } else { - if (isScreenLandscape) - return@replaceMethod -getScreenHeight.toFloat() / 3.0f - else - return@replaceMethod -getScreenHeight.toFloat() / 1.2f - } - } else { - return@replaceMethod mOverExpansion - } - } - } catch (t: Throwable) { - logE(TAG, this.lpparam.packageName, t) - } - try { - "com.android.systemui.statusbar.notification.stack.AmbientState".replaceMethod("getAppearFraction") { - val isNCSwitching = it.thisObject.getObjectField("isNCSwitching") as Boolean - val isSwipingUp = it.thisObject.getObjectField("mIsSwipingUp") as Boolean - val isFlinging = it.thisObject.getObjectField("mIsFlinging") as Boolean - val mAppearFraction = it.thisObject.getObjectField("mAppearFraction") as Float - val isAppearing = it.thisObject.getObjectField("mAppearing") as Boolean - val isScreenLandscape = - loadClass("com.android.systemui.statusbar.notification.NotificationUtil") - .callStaticMethod("isScreenLandscape") as Boolean - - if (isAppearing && (isSwipingUp || isFlinging) && !isNCSwitching && hasActiveMediaOrRecommendation && isScreenLandscape) { - return@replaceMethod mAppearFraction * 6.0f - } else { - return@replaceMethod mAppearFraction - } - } - } catch (t: Throwable) { - logE(TAG, this.lpparam.packageName, t) - } - } - - // 每次设置背景的时候都同时改透明度 - XposedBridge.hookAllMethods( - notificationBackgroundViewClass, - "setCustomBackground", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val notificationBackgroundView = param.thisObject - val mDrawableAlphaField = - notificationBackgroundViewClass.getDeclaredField("mDrawableAlpha") - mDrawableAlphaField.isAccessible = true - val isHandsUp = - XposedHelpers.callMethod(notificationBackgroundView, "headsUp") as Boolean - if (isHandsUp) { - mDrawableAlphaField.set(notificationBackgroundView, blurBackgroundAlpha) - setDrawableAlpha( - notificationBackgroundView, - blurBackgroundAlpha - ) - } else { - mDrawableAlphaField.set(notificationBackgroundView, defaultBackgroundAlpha) - setDrawableAlpha( - notificationBackgroundView, - defaultBackgroundAlpha - ) - } - } - }) - - // 背景bounds改动同步到模糊 - XposedBridge.hookAllMethods( - notificationBackgroundViewClass, - "draw", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val notificationBackground = param.thisObject as View - val backgroundDrawable = notificationBackground.background ?: return - if (isBlurDrawable(backgroundDrawable)) { - val drawable = param.args[1] as Drawable - backgroundDrawable.bounds = drawable.bounds - } - } - }) - - // 进入小窗模式的时候把模糊去掉 - XposedBridge.hookAllMethods( - appMiniWindowRowTouchHelperClass, - "onMiniWindowTrackingStart", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - val mPickedMiniWindowChild = - getValueByField(param.thisObject, "mPickedMiniWindowChild") - ?: return - - val mBackgroundNormal = - getValueByField(mPickedMiniWindowChild, "mBackgroundNormal") - ?: return - mBackgroundNormal as View - - if (isBlurDrawable(mBackgroundNormal.background)) { - XposedHelpers.callMethod( - mBackgroundNormal.background, "setVisible", - false, false - ) - setDrawableAlpha( - mBackgroundNormal, - defaultBackgroundAlpha + 30 - ) - } - } - }) - - XposedBridge.hookAllMethods( - appMiniWindowRowTouchHelperClass, - "onMiniWindowReset", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - val mPickedMiniWindowChild = - getValueByField(param.thisObject, "mPickedMiniWindowChild") - ?: return - - val mBackgroundNormal = - getValueByField(mPickedMiniWindowChild, "mBackgroundNormal") - ?: return - mBackgroundNormal as View - - if (isBlurDrawable(mBackgroundNormal.background)) { - XposedHelpers.callMethod( - mBackgroundNormal.background, - "setVisible", - true, - false - ) - setDrawableAlpha( - mBackgroundNormal, - blurBackgroundAlpha - ) - } - } - }) - - // 悬浮的时候把模糊加上 - XposedBridge.hookAllMethods( - miuiExpandableNotificationRowClass, - "setHeadsUp", - object : XC_MethodHook() { - @SuppressLint("NewApi") - override fun beforeHookedMethod(param: MethodHookParam) { - val isHeadsUp = param.args[0] as Boolean - val miuiNotificationBackgroundView = param.thisObject as View - val mBackgroundNormal = getValueByField( - miuiNotificationBackgroundView, - "mBackgroundNormal" - ) as View - if (!mBackgroundNormal.isAttachedToWindow) { - return - } - if (isHeadsUp) { - if (mBackgroundNormal.background != null) { - if (isBlurDrawable(mBackgroundNormal.background)) { - return - } - } - mBackgroundNormal.background = - createBlurDrawable( - mBackgroundNormal, - blurRadius, - cornerRadius - ) - - setDrawableAlpha( - mBackgroundNormal, - blurBackgroundAlpha - ) - } /*else { - if (isBlurDrawable(mBackgroundNormal.background)) { - mBackgroundNormal.background = null - } - try { - XposedHelpers.callMethod( - mBackgroundNormal, - "setDrawableAlpha", - defaultBackgroundAlpha - ) - } catch (e: Throwable) { - logE("BlurNotificationView -> defaultBackgroundAlpha", e) - } - }*/ - } - }) - - // 进入不同状态,处理一下模糊 - XposedBridge.hookAllMethods( - miuiNotificationPanelViewControllerClass, - "onStateChanged", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - // status 1 锁屏 2 锁屏下拉 0 其他 - val status = param.args[0] as Int - val mNotificationStackScroller = - getValueByField( - param.thisObject, - "mNotificationStackScroller" - ) as ViewGroup - if (status == 1) { - if (!isDefaultLockScreenTheme()) { - return - } - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - showBlurEffectForNotificationRow(childAt) - } - } else { - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - try { - val isHeadsUp = - XposedHelpers.callMethod(childAt, "isHeadsUpState") as Boolean - val isPinned = XposedHelpers.callMethod( - childAt, - "isPinned" - ) as Boolean - if (isHeadsUp && isPinned) { - showBlurEffectForNotificationRow(childAt) - } else { - hideBlurEffectForNotificationRow(childAt) - } - } catch (e: Throwable) { - hideBlurEffectForNotificationRow(childAt) - } - } - } - } - }) - - // 下拉完成处理模糊 - /* - XposedBridge.hookAllMethods( - NotificationPanelViewControllerClass, - "onExpandingFinished", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val isOnKeyguard = - XposedHelpers.callMethod(param.thisObject, "isOnKeyguard") as Boolean - if (isOnKeyguard) { - return - } - val mNotificationStackScroller = - Hook.getValueByField( - param.thisObject, - "mNotificationStackScroller" - ) ?: return - mNotificationStackScroller as ViewGroup - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - hideBlurEffectForNotificationRow(childAt) - } - } - }) - */ - - // 通知添加进视图的时候增加模糊 - XposedBridge.hookAllMethods( - notificationStackScrollLayoutClass, - "onViewAddedInternal", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val expandableView = param.args[0] as View - val mController = getValueByField(param.thisObject, "mController") - ?: return - val mPanelViewController = - getValueByField(mController, "mPanelViewController") - ?: return - val isExpanding = - XposedHelpers.callMethod( - mPanelViewController, - if (isAndroidVersion(34)) "isExpandingOrCollapsing" else "isExpanding" - ) as Boolean - if (isExpanding) return - - val isOnKeyguard = - XposedHelpers.callMethod(mPanelViewController, "isOnKeyguard") as Boolean - if (isOnKeyguard) { - if (!isDefaultLockScreenTheme()) { - return - } - showBlurEffectForNotificationRow(expandableView) - } else { - // ZenModeView 没有 isHeadsUpState 方法 - try { - val isHeadsUp = - XposedHelpers.callMethod( - expandableView, - "isHeadsUpState" - ) as Boolean - if (isHeadsUp) { - showBlurEffectForNotificationRow(expandableView) - } - } catch (e: Throwable) { - return - } - } - } - }) - - // 锁屏状态透明度修改的时候同步修改模糊透明度 - if (isAndroidVersion(31)) { - XposedBridge.hookAllMethods(miuiNotificationPanelViewControllerClass, - "updateKeyguardElementAlpha", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) return - val mNotificationStackScroller = - getValueByField( - param.thisObject, - "mNotificationStackScroller" - ) ?: return - mNotificationStackScroller as ViewGroup - - val keyguardContentsAlpha = - XposedHelpers.callMethod( - param.thisObject, - "getKeyguardContentsAlpha" - ) as Float - val drawableAlpha = keyguardContentsAlpha * 255 - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - setBlurEffectAlphaForNotificationRow(childAt, drawableAlpha.toInt()) - } - } - }) - } - - XposedBridge.hookAllMethods( - miuiNotificationPanelViewControllerClass, - "onBouncerShowingChanged", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - val isBouncerShowing = param.args[0] as Boolean - val mNotificationStackScroller = - getValueByField(param.thisObject, "mNotificationStackScroller") - ?: return - mNotificationStackScroller as ViewGroup - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - if (isBouncerShowing) { - hideBlurEffectForNotificationRow(childAt) - } else { - showBlurEffectForNotificationRow(childAt) - } - } - } - }) - - if (isMoreAndroidVersion(33)) { - // 锁屏画报 隐藏模糊 - // 修复 Android 13 锁屏画报模糊残留 - XposedBridge.hookAllMethods( - lockScreenMagazineControllerClass, - "setPanelViewAlpha", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) return - val alpha = param.args[0] as Float - val drawableAlpha = alpha * 255 - - val mNotificationStackScrollLayoutController = - getValueByField( - param.thisObject, - "mNotificationStackScrollLayoutController" - ) - ?: return - val mView = - getValueByField( - mNotificationStackScrollLayoutController, - "mView" - ) ?: return - - mView as ViewGroup - - for (i in 0..mView.childCount) { - val childAt = mView.getChildAt(i) ?: continue - setBlurEffectAlphaForNotificationRow(childAt, drawableAlpha.toInt()) - } - } - }) - } else { - // 锁屏画报 隐藏模糊 - XposedBridge.hookAllMethods( - lockScreenMagazineControllerClass, - "setViewsAlpha", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) return - val alpha = param.args[0] as Float - val drawableAlpha = alpha * 255 - val mNotificationStackScrollLayout = getValueByField( - param.thisObject, - "mNotificationStackScrollLayout" - ) as ViewGroup - for (i in 0..mNotificationStackScrollLayout.childCount) { - val childAt = - mNotificationStackScrollLayout.getChildAt(i) ?: continue - setBlurEffectAlphaForNotificationRow(childAt, drawableAlpha.toInt()) - } - } - }) - - } - - XposedBridge.hookAllMethods( - notificationStackScrollLayoutClass, - "setDozing", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val isDozing = param.args[0] as Boolean - val mNotificationStackScrollLayout = param.thisObject as ViewGroup - for (i in 0..mNotificationStackScrollLayout.childCount) { - val childAt = - mNotificationStackScrollLayout.getChildAt(i) ?: continue - if (isDozing) { - hideBlurEffectForNotificationRow(childAt) - } else { - showBlurEffectForNotificationRow(childAt) - } - } - } - }) - - /* - XposedBridge.hookAllMethods( - KeyguardPanelViewInjectorClass, - "onKeyguardVisibilityChanged", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val isVisible = param.args[0] as Boolean - val mPanelViewController = - Hook.getValueByField(param.thisObject, "mPanelViewController") ?: return - - val mNotificationStackScroller = - Hook.getValueByField( - mPanelViewController, - "mNotificationStackScroller" - ) ?: return - mNotificationStackScroller as ViewGroup - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - if (isVisible) { - showBlurEffectForNotificationRow(childAt) - } else { - try { - val isHeadsUp = - XposedHelpers.callMethod( - childAt, - "isHeadsUpState" - ) as Boolean - val isPinned = XposedHelpers.callMethod( - childAt, - "isPinned" - ) as Boolean - if (isHeadsUp && isPinned) { - showBlurEffectForNotificationRow(childAt) - } else { - hideBlurEffectForNotificationRow(childAt) - } - } catch (e: Throwable) { - hideBlurEffectForNotificationRow(childAt) - } - } - } - } - }) - */ - - XposedBridge.hookAllConstructors(miuiNotificationPanelViewControllerClass, - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val mNotificationStackScroller = - getValueByField( - param.thisObject, - "mNotificationStackScroller" - ) ?: return - mNotificationStackScroller as ViewGroup - XposedBridge.hookAllMethods(blurRatioChangedListener, - "onBlurRadiusChanged", - object : XC_MethodHook() { - override fun afterHookedMethod(params: MethodHookParam) { - val radius = params.args[0] as Int - val isOnKeyguard = XposedHelpers.callMethod( - param.thisObject, - "isOnKeyguard" - ) as Boolean - for (i in 0..mNotificationStackScroller.childCount) { - val childAt = - mNotificationStackScroller.getChildAt(i) ?: continue - if (radius > 30 && !isOnKeyguard) { - hideBlurEffectForNotificationRow(childAt) - } /*else { - // 锁屏状态显示模糊(不能留,点击通知进入密码页面模糊残留) - if (isOnKeyguard) showBlurEffectForNotificationRow(childAt) - }*/ - } - } - }) - } - }) - } - - fun isDefaultLockScreenTheme(): Boolean { - val miuiKeyguardUtilsClass = findClassIfExists( - if (isAndroidVersion(34)) - "com.miui.systemui.util.CommonUtil" - else - "com.android.keyguard.utils.MiuiKeyguardUtils" - ) ?: return true - return XposedHelpers.callStaticMethod( - miuiKeyguardUtilsClass, - "isDefaultLockScreenTheme" - ) as Boolean - } - - - fun hideBlurEffectForNotificationRow(notificationRow: View) { - if (notificationRow.javaClass.name.contains("ZenModeView")) { - val zenModeContentContainer = - XposedHelpers.callMethod(notificationRow, "getContentView") ?: return - zenModeContentContainer as ViewGroup - val zenModeContent = - zenModeContentContainer.getChildAt(0) ?: return - val contentBackground = - zenModeContent.background as GradientDrawable - contentBackground.alpha = defaultBackgroundAlpha - contentBackground.invalidateSelf() - if (isBlurDrawable(zenModeContentContainer.background)) { - zenModeContentContainer.background = null - } - } else { - val mBackgroundNormal = - getValueByField(notificationRow, "mBackgroundNormal") - ?: return - mBackgroundNormal as View - if (isBlurDrawable(mBackgroundNormal.background)) { - mBackgroundNormal.background = null - } - runCatching { - setDrawableAlpha( - mBackgroundNormal, - defaultBackgroundAlpha - ) - } - - runCatching { - val childList = - XposedHelpers.callMethod(notificationRow, "getAttachedChildren") ?: return - childList as List<*> - if (childList.size > 0) { - childList.forEach { child -> - if (child != null) { - hideBlurEffectForNotificationRow(child as View) - } - } - } - } - } - } - - fun setBlurEffectAlphaForNotificationRow(notificationRow: View, alpha: Int) { - if (alpha < 0 || alpha > 255) { - return - } - if (notificationRow.javaClass.name.contains("ZenModeView")) { - val zenModeContentContainer = - XposedHelpers.callMethod(notificationRow, "getContentView") ?: return - zenModeContentContainer as ViewGroup - if (isBlurDrawable(zenModeContentContainer.background)) { - XposedHelpers.callMethod(zenModeContentContainer.background, "setAlpha", alpha) - } - } else { - val mBackgroundNormal = - getValueByField(notificationRow, "mBackgroundNormal") - ?: return - mBackgroundNormal as View - if (isBlurDrawable(mBackgroundNormal.background)) { - XposedHelpers.callMethod(mBackgroundNormal.background, "setAlpha", alpha) - } - runCatching { - val childList = - XposedHelpers.callMethod(notificationRow, "getAttachedChildren") ?: return - childList as List<*> - if (childList.size > 0) { - childList.forEach { child -> - if (child != null) { - setBlurEffectAlphaForNotificationRow(child as View, alpha) - } - } - } - } - } - } - - @SuppressLint("NewApi") - fun showBlurEffectForNotificationRow(notificationRow: View) { - if (notificationRow.javaClass.name.contains("ZenModeView")) { - val zenModeContentContainer = - XposedHelpers.callMethod(notificationRow, "getContentView") ?: return - zenModeContentContainer as ViewGroup - val zenModeContent = - zenModeContentContainer.getChildAt(0) ?: return - val contentBackground = - zenModeContent.background as GradientDrawable - contentBackground.alpha = blurBackgroundAlpha - contentBackground.invalidateSelf() - if (!isBlurDrawable(zenModeContentContainer.background)) { - zenModeContentContainer.background = - createBlurDrawable(notificationRow, blurRadius, cornerRadius) - } - } else { - val mBackgroundNormal = - getValueByField(notificationRow, "mBackgroundNormal") ?: return - mBackgroundNormal as View - if (!isBlurDrawable(mBackgroundNormal.background)) { - mBackgroundNormal.background = - createBlurDrawable(mBackgroundNormal, blurRadius, cornerRadius) - runCatching { - setDrawableAlpha( - mBackgroundNormal, - blurBackgroundAlpha - ) - } - } - runCatching { - val childList = - XposedHelpers.callMethod(notificationRow, "getAttachedChildren") ?: return - childList as List<*> - if (childList.size > 0) { - childList.forEach { child -> - if (child != null) { - showBlurEffectForNotificationRow(child as View) - } - } - } - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/BluetoothTileStyle.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/BluetoothTileStyle.java deleted file mode 100644 index 5cf1e4f71..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/BluetoothTileStyle.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter; - -import static com.sevtinge.hyperceiler.module.base.tool.HookTool.mPrefsMap; -import static com.sevtinge.hyperceiler.utils.devicesdk.DisplayUtils.dp2px; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; - -import com.sevtinge.hyperceiler.module.base.tool.HookTool; -import com.sevtinge.hyperceiler.module.base.tool.ResourcesTool; - -import java.util.ArrayList; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XposedHelpers; - -public class BluetoothTileStyle { - public static void initHideDeviceControlEntry(ClassLoader pluginLoader) { - int styleId = mPrefsMap.getStringAsInt("system_ui_control_center_cc_bluetooth_tile_style", 1); - if (styleId == 1) return; - - final int[] tileResIds = {0}; - HookTool.findAndHookMethod("miui.systemui.dagger.PluginComponentFactory", pluginLoader, "create", Context.class, Context.class, new HookTool.MethodHook() { - @SuppressLint("DiscouragedApi") - @Override - protected void after(XC_MethodHook.MethodHookParam param) { - Context pluginContext = (Context) param.args[1]; - tileResIds[0] = pluginContext.getResources().getIdentifier("big_tile", "layout", "miui.systemui.plugin"); - } - }); - HookTool.hookAllMethods("miui.systemui.controlcenter.dagger.ControlCenterViewModule", pluginLoader, "createBigTileGroup", new HookTool.MethodHook() { - @Override - protected void after(XC_MethodHook.MethodHookParam param) { - ViewGroup mView = (ViewGroup) param.getResult(); - LayoutInflater li = (LayoutInflater) XposedHelpers.callMethod(param.args[0], "injectable", param.args[1]); - View btTileView = li.inflate(tileResIds[0], null); - mView.addView(btTileView, 2); - btTileView.setTag("big_tile_bt"); - } - }); - HookTool.MethodHook updateStyleHook = new HookTool.MethodHook() { - boolean United = false; - - @Override - @SuppressLint("DiscouragedApi") - protected void after(XC_MethodHook.MethodHookParam param) throws Throwable { - ViewGroup mView = (ViewGroup) XposedHelpers.callMethod(param.thisObject, "getView"); - View bigTileB = (View) XposedHelpers.getObjectField(param.thisObject, "bigTileB"); - if (!United) { - United = true; - Object factory = XposedHelpers.getObjectField(param.thisObject, "tileViewFactory"); - View btTileView = mView.findViewWithTag("big_tile_bt"); - int btTileId = ResourcesTool.getFakeResId("bt_big_tile"); - btTileView.setId(btTileId); - Object btController = XposedHelpers.callMethod(factory, "create", btTileView, "bt"); - XposedHelpers.setAdditionalInstanceField(param.thisObject, "btTileView", btTileView); - XposedHelpers.setAdditionalInstanceField(param.thisObject, "btController", btController); - - Class mConstraintSetClass = pluginLoader.loadClass("androidx.constraintlayout.widget.ConstraintSet"); - Object constraintSet = XposedHelpers.newInstance(mConstraintSetClass); - XposedHelpers.callMethod(constraintSet, "clone", mView); - View bigTileA = (View) XposedHelpers.getObjectField(param.thisObject, "bigTileA"); - if (styleId == 2) { - XposedHelpers.callMethod(constraintSet, "connect", bigTileB.getId(), 7, btTileId, 6); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 6, bigTileB.getId(), 7); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 7, bigTileA.getId(), 7); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 3, bigTileB.getId(), 3); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 4, 0, 4); - XposedHelpers.callMethod(constraintSet, "setMargin", btTileId, 6, dp2px(10)); - int labelResId = mView.getResources().getIdentifier("label_container", "id", "miui.systemui.plugin"); - bigTileB.findViewById(labelResId).setVisibility(View.GONE); - btTileView.findViewById(labelResId).setVisibility(View.GONE); - int iconResId = mView.getResources().getIdentifier("status_icon", "id", "miui.systemui.plugin"); - LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) bigTileB.findViewById(iconResId).getLayoutParams(); - layoutParams.leftMargin = dp2px(3); - layoutParams = (LinearLayout.LayoutParams) btTileView.findViewById(iconResId).getLayoutParams(); - layoutParams.leftMargin = dp2px(3); - } else { - XposedHelpers.callMethod(constraintSet, "connect", bigTileB.getId(), 4, btTileId, 3); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 6, bigTileA.getId(), 6); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 7, bigTileA.getId(), 7); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 3, bigTileB.getId(), 4); - XposedHelpers.callMethod(constraintSet, "connect", btTileId, 4, 0, 4); - } - XposedHelpers.callMethod(constraintSet, "constrainWidth", btTileId, 0); - XposedHelpers.callMethod(constraintSet, "constrainHeight", btTileId, 0); - XposedHelpers.callMethod(constraintSet, "applyTo", mView); - } - if (styleId == 3) { - ViewGroup.LayoutParams layoutParams = bigTileB.getLayoutParams(); - int verticalMargin = dp2px(4); - ((ViewGroup.MarginLayoutParams) layoutParams).topMargin = verticalMargin; - ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin = verticalMargin; - } - } - }; - HookTool.findAndHookMethod("miui.systemui.controlcenter.qs.tileview.BigTileGroupController", pluginLoader, "updateResources", updateStyleHook); - HookTool.findAndHookMethod("miui.systemui.controlcenter.qs.tileview.BigTileGroupController", pluginLoader, "setListening", boolean.class, new HookTool.MethodHook() { - @Override - protected void after(XC_MethodHook.MethodHookParam param) { - Object btController = XposedHelpers.getAdditionalInstanceField(param.thisObject, "btController"); - if (btController != null) { - XposedHelpers.callMethod(btController, "setListening", param.args[0]); - } - } - }); - HookTool.findAndHookMethod("miui.systemui.controlcenter.qs.tileview.BigTileGroupController", pluginLoader, "getRowViews", int.class, new HookTool.MethodHook() { - @Override - - protected void after(XC_MethodHook.MethodHookParam param) { - int row = (int) param.args[0]; - Object btTileView; - if (row == 1 && (btTileView = XposedHelpers.getAdditionalInstanceField(param.thisObject, "btTileView")) != null) { - ((ArrayList) param.getResult()).add(btTileView); - } - } - }); - HookTool.findAndHookMethod("miui.systemui.controlcenter.qs.tileview.BigTileGroupController", pluginLoader, "getChildControllers", new HookTool.MethodHook() { - @Override - protected void after(XC_MethodHook.MethodHookParam param) { - Object btController = XposedHelpers.getAdditionalInstanceField(param.thisObject, "btController"); - if (btController != null) { - ((ArrayList) param.getResult()).add(btController); - } - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/CCGridOld.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/CCGridOld.kt deleted file mode 100644 index cc8d6edcd..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/CCGridOld.kt +++ /dev/null @@ -1,442 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter - -import android.annotation.* -import android.content.* -import android.content.pm.* -import android.text.* -import android.util.* -import android.view.* -import android.widget.* -import com.github.kyuubiran.ezxhelper.* -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.* -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.module.base.tool.OtherTool.* -import com.sevtinge.hyperceiler.utils.devicesdk.* -import de.robv.android.xposed.* - -object CCGridOld : BaseHook() { - private val cols by lazy { - mPrefsMap.getInt("system_control_center_cc_columns", 4) // 列数 - } - private val rows by lazy { - mPrefsMap.getInt("system_control_center_cc_rows", 4) // 行数 - } - private val label by lazy { - mPrefsMap.getBoolean("system_control_center_qs_tile_label") // 移除标题 - } - private var scaledTileWidthDim = -1f - - @SuppressLint("DiscouragedApi") - override fun init() { - if (cols > 4) { - mResHook.setObjectReplacement( - lpparam.packageName, - "dimen", - "qs_control_tiles_columns", - cols - ) - } - findAndHookMethod( - "com.android.systemui.SystemUIApplication", - lpparam.classLoader, - "onCreate", - object : MethodHook() { - private var isHooked = false - override fun after(param: MethodHookParam) { - if (!isHooked) { - isHooked = true - val mContext = XposedHelpers.callMethod( - param.thisObject, - "getApplicationContext" - ) as Context - val res = mContext.resources - val density = res.displayMetrics.density - val tileWidthResId = res.getIdentifier( - "qs_control_center_tile_width", - "dimen", - "com.android.systemui" - ) - var tileWidthDim = res.getDimension(tileWidthResId) - if (cols > 4) { - tileWidthDim /= density - scaledTileWidthDim = tileWidthDim * 4 / cols - mResHook.setDensityReplacement( - lpparam.packageName, - "dimen", - "qs_control_center_tile_width", - scaledTileWidthDim - ) - mResHook.setDensityReplacement( - "miui.systemui.plugin", - "dimen", - "qs_control_center_tile_width", - scaledTileWidthDim - ) - mResHook.setDensityReplacement( - lpparam.packageName, - "dimen", - "qs_control_tile_icon_bg_size", - scaledTileWidthDim - ) - mResHook.setDensityReplacement( - "miui.systemui.plugin", - "dimen", - "qs_control_tile_icon_bg_size", - scaledTileWidthDim - ) - mResHook.setDensityReplacement( - "miui.systemui.plugin", - "dimen", - "qs_cell_height", - 85f - ) - } - } - } - }) - - val pluginLoaderClass = - if (isAndroidVersion(34)) "com.android.systemui.shared.plugins.PluginInstance\$Factory\$\$ExternalSyntheticLambda0" - else if (isAndroidVersion(33)) "com.android.systemui.shared.plugins.PluginInstance\$Factory" - else "com.android.systemui.shared.plugins.PluginManagerImpl" - - var appInfo: ApplicationInfo? - - if (isAndroidVersion(34)) { - hookAllMethods("com.android.systemui.shared.plugins.PluginInstance\$Factory", - "create", object : MethodHook() { - override fun before(param: MethodHookParam) { - appInfo = param.args[1] as ApplicationInfo? - - loadClass(pluginLoaderClass, lpparam.classLoader).methodFinder() - .filterByName("get") - .single().createHook { - after { getClassLoader -> - val classLoader = getClassLoader.result as ClassLoader - if (appInfo != null) { - if ("miui.systemui.plugin" == appInfo!!.packageName) { - loadCCGrid(classLoader) - logW(TAG, "im get ClassLoader: $classLoader") - } else { - logW( - TAG, - "Au get classloader miui.systemui.plugin error: $classLoader" - ) - } - } else { - if ( - classLoader.toString().contains("MIUISystemUIPlugin") || - classLoader.toString().contains("miui.systemui.plugin") - ) { - loadCCGrid(classLoader) - } else { - logW( - TAG, - "Au get classloader miui.systemui.plugin error & appInfo is null" - ) - } - } - } - } - } - } - ) - } else { - loadClass(pluginLoaderClass, lpparam.classLoader).methodFinder() - .filterByName("getClassLoader") - .single().createHook { - after { getClassLoader -> - appInfo = getClassLoader.args[0] as ApplicationInfo - if (appInfo!!.packageName == "miui.systemui.plugin") { - val classLoader = getClassLoader.result as ClassLoader - loadCCGrid(classLoader) - } - } - } - } - } - - private fun loadCCGrid(pluginLoader: ClassLoader) { - if (cols > 4) { - findAndHookConstructor( - "miui.systemui.controlcenter.qs.QSPager", pluginLoader, - Context::class.java, - AttributeSet::class.java, - object : MethodHook() { - override fun after(param: MethodHookParam) { - XposedHelpers.setObjectField(param.thisObject, "columns", cols) - } - }) - if (!label) { - findAndHookMethod( - "miui.systemui.controlcenter.qs.tileview.StandardTileView", pluginLoader, - "createLabel", - Boolean::class.javaPrimitiveType, - object : MethodHook() { - @Throws(Throwable::class) - override fun after(param: MethodHookParam) { - val label = XposedHelpers.getObjectField( - param.thisObject, - "label" - ) - if (label != null) { - val lb = label as TextView - lb.maxLines = 1 - lb.isSingleLine = true - lb.ellipsize = TextUtils.TruncateAt.MARQUEE - lb.marqueeRepeatLimit = 0 - val labelContainer = XposedHelpers.getObjectField( - param.thisObject, - "labelContainer" - ) as View - labelContainer.setPadding(4, 0, 4, 0) - } - } - }) - } - } - if (rows != 4 && !isHyperOSVersion(1f)) { - findAndHookMethod( - "miui.systemui.controlcenter.qs.QSPager", - pluginLoader, - "distributeTiles", - object : MethodHook() { - override fun after(param: MethodHookParam) { - val collapse = XposedHelpers.getObjectField( - param.thisObject, - "collapse" - ) as Boolean - if (collapse) { - val pages = XposedHelpers.getObjectField( - param.thisObject, - "pages" - ) as ArrayList<*> - for (tileLayoutImpl in pages) { - XposedHelpers.callMethod( - tileLayoutImpl, - "removeTiles" - ) - } - val pageTiles = ArrayList() - var currentRow = 2 - val records = XposedHelpers.getObjectField( - param.thisObject, - "records" - ) as ArrayList<*> - val it2: Iterator<*> = records.iterator() - var i3 = 0 - var pageNow = 0 - val bigHeader = XposedHelpers.getObjectField( - param.thisObject, - "header" - ) - while (it2.hasNext()) { - val tileRecord = it2.next()!! - pageTiles.add(tileRecord) - i3++ - if (i3 >= cols) { - currentRow++ - i3 = 0 - } - if (currentRow >= rows || !it2.hasNext()) { - XposedHelpers.callMethod( - pages[pageNow], - "setTiles", - pageTiles, - if (pageNow == 0) bigHeader else null - ) - pageTiles.clear() - val totalRows = XposedHelpers.getObjectField( - param.thisObject, - "rows" - ) as Int - if (currentRow > totalRows) { - XposedHelpers.setObjectField( - param.thisObject, - "rows", - currentRow - ) - } - if (it2.hasNext()) { - pageNow++ - currentRow = 0 - } - } - } - val it3 = pages.iterator() - while (it3.hasNext()) { - val next2 = it3.next() - val isEmpty = XposedHelpers.callMethod( - next2, - "isEmpty" - ) as Boolean - if (isEmpty) { - it3.remove() - } - } - val pageIndicator = XposedHelpers.getObjectField( - param.thisObject, - "pageIndicator" - ) - if (pageIndicator != null) { - XposedHelpers.callMethod( - pageIndicator, - "setNumPages", - pages.size - ) - } - val adapter = XposedHelpers.getObjectField( - param.thisObject, - "adapter" - ) - XposedHelpers.callMethod( - param.thisObject, - "setAdapter", - adapter - ) - // XposedHelpers.callMethod(param.thisObject, "notifyDataSetChanged"); - } - } - }) - } - // 移除磁贴标题相关 - if (mPrefsMap.getBoolean("system_control_center_qs_tile_label")) { - mHideCCLabels(pluginLoader) - } - - // 新控制中心矩形圆角 - if (mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") && !isMoreHyperOSVersion(1f)) { - mResHook.setResReplacement( - "miui.systemui.plugin", - "drawable", - "qs_background_restricted", - R.drawable.ic_qs_tile_bg_temporary_closure - ) - mResHook.setResReplacement( - "miui.systemui.plugin", - "drawable", - "qs_background_unavailable", - R.drawable.ic_qs_tile_bg_disabled - ) - mResHook.setResReplacement( - "miui.systemui.plugin", - "drawable", - "qs_background_disabled", - R.drawable.ic_qs_tile_bg_disabled - ) - mResHook.setResReplacement( - "miui.systemui.plugin", - "drawable", - "qs_background_warning", - R.drawable.ic_qs_tile_bg_warning - ) - mCCTileCornerHook(pluginLoader) - } - } - - private fun mHideCCLabels(pluginLoader: ClassLoader?) { - mResHook.setDensityReplacement( - "miui.systemui.plugin", - "dimen", - "qs_cell_height", - 85f - ) - val mQSController = XposedHelpers.findClassIfExists( - "miui.systemui.controlcenter.qs.tileview.StandardTileView", - pluginLoader - ) - hookAllMethods(mQSController, "init", object : MethodHook() { - override fun before(param: MethodHookParam) { - if (param.args.size != 1) return - val mLabelContainer = ObjectUtils.getObjectOrNullAs(param.thisObject, - "labelContainer") ?: return - mLabelContainer.visibility = View.GONE - } - }) - } - - private fun mCCTileCornerHook(pluginLoader: ClassLoader?) { - findAndHookMethod("miui.systemui.controlcenter.qs.tileview.ExpandableIconView", - pluginLoader, - "setCornerRadius", - Float::class.javaPrimitiveType, - object : MethodHook() { - override fun before(param: MethodHookParam) { - val mContext = XposedHelpers.callMethod( - param.thisObject, - "getPluginContext" - ) as Context - var radius = 18f - if (scaledTileWidthDim > 0) { - radius *= scaledTileWidthDim / 65 - } - param.args[0] = mContext.resources.displayMetrics.density * radius - } - }) - findAndHookMethod( - "miui.systemui.dagger.PluginComponentFactory", pluginLoader, - "create", - Context::class.java, - object : MethodHook() { - @SuppressLint("DiscouragedApi") - override fun before(param: MethodHookParam) { - val mContext = param.args[0] as Context - val res = mContext.resources - val enabledTileBackgroundResId = res.getIdentifier( - "qs_background_enabled", - "drawable", - "miui.systemui.plugin" - ) - val enabledTileColorResId = res.getIdentifier( - "qs_enabled_color", - "color", - "miui.systemui.plugin" - ) - val tintColor = res.getColor(enabledTileColorResId, null) - val imgHook: MethodHook = object : MethodHook() { - override fun before(param: MethodHookParam) { - val resId = param.args[0] as Int - if (resId == enabledTileBackgroundResId && resId != 0) { - val enableTile = getModuleRes(mContext) - .getDrawable(R.drawable.ic_qs_tile_bg_enabled, null) - enableTile.setTint(tintColor) - param.result = enableTile - } - } - } - findAndHookMethod( - "android.content.res.Resources", pluginLoader, "getDrawable", - Int::class.javaPrimitiveType, imgHook - ) - findAndHookMethod( - "android.content.res.Resources.Theme", - pluginLoader, - "getDrawable", - Int::class.javaPrimitiveType, - imgHook - ) - } - }) - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/ControlCenterStyle.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/ControlCenterStyle.kt index 5a52b7c37..edc8391c7 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/ControlCenterStyle.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/ControlCenterStyle.kt @@ -24,7 +24,6 @@ import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHooks import com.github.kyuubiran.ezxhelper.ObjectUtils.setObject import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.utils.devicesdk.* object ControlCenterStyle : BaseHook() { override fun init() { @@ -34,11 +33,7 @@ object ControlCenterStyle : BaseHook() { } } - if (isMoreAndroidVersion(34)) { - loadClass("com.miui.interfaces.SettingsObserver") - } else { - loadClass("com.miui.systemui.SettingsObserver") - }.methodFinder() + loadClass("com.miui.interfaces.SettingsObserver").methodFinder() .filterByName("setValue\$default").first() .createHook { before { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/FlashLight.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/FlashLight.java index 3a2b539f2..0a14273a8 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/FlashLight.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/FlashLight.java @@ -18,7 +18,6 @@ */ package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; import android.animation.ValueAnimator; import android.content.Context; @@ -100,13 +99,13 @@ public ArrayMap tileUpdateState(XC_MethodHook.MethodHookParam p private void initListen() { hookAllConstructors("com.android.systemui.controlcenter.policy.MiuiBrightnessController", - new MethodHook() { - @Override - protected void after(MethodHookParam param) { - Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); - listening(mContext, param); + new MethodHook() { + @Override + protected void after(MethodHookParam param) { + Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); + listening(mContext, param); + } } - } ); } @@ -135,39 +134,13 @@ public void onChange(boolean selfChange, @Nullable Uri uri) { } }; mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor("flash_light_enabled"), - false, contentObserver); + false, contentObserver); this.isListening = true; } } private void hookBrightness() { - if (!isMoreAndroidVersion(34)) { - findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController", - "lambda$onChanged$0", boolean.class, float.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (isHook) { - param.setResult(null); - } - } - } - ); - - findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController$5", - "run", - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (isHook) { - param.setResult(null); - } - } - } - ); - } else { - findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController$$ExternalSyntheticLambda0", - "run", + findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController$$ExternalSyntheticLambda0", "run", new MethodHook() { @Override protected void before(MethodHookParam param) { @@ -176,9 +149,9 @@ protected void before(MethodHookParam param) { } } } - ); + ); - findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController$2", + findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController$2", "run", new MethodHook() { @Override @@ -188,26 +161,25 @@ protected void before(MethodHookParam param) { } } } - ); - } + ); hookStop(); hookBrightnessUtils(); } private void hookStop() { findAndHookMethod("com.android.systemui.controlcenter.policy.MiuiBrightnessController", - "onStop", int.class, new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (isHook) { - Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); - if (lastFlash != -1) { - JSONObject object = new FlashBrightness((int) param.args[0], lastFlash).toJSON(); - setFlashBrightness(mContext, object.toString()); + "onStop", int.class, new MethodHook() { + @Override + protected void before(MethodHookParam param) { + if (isHook) { + Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); + if (lastFlash != -1) { + JSONObject object = new FlashBrightness((int) param.args[0], lastFlash).toJSON(); + setFlashBrightness(mContext, object.toString()); + } } } } - } ); } @@ -217,13 +189,13 @@ private void sliderAnimator(int i, XC_MethodHook.MethodHookParam param) { Object mControl = XposedHelpers.getObjectField(param.thisObject, "mControl"); if (!isUserSliding && toggleSliderBase != null) { boolean mControlValueInitialized = (boolean) XposedHelpers.getObjectField(param.thisObject, - "mControlValueInitialized"); + "mControlValueInitialized"); if (!mControlValueInitialized) { XposedHelpers.callMethod(toggleSliderBase, "setValue", i); XposedHelpers.setObjectField(param.thisObject, "mControlValueInitialized", true); } ValueAnimator ofInt = ValueAnimator.ofInt((int) XposedHelpers.callMethod(mControl, - "getValue"), i); + "getValue"), i); XposedHelpers.setObjectField(param.thisObject, "mSliderAnimator", ofInt); ofInt.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override @@ -262,57 +234,57 @@ private void hookBrightnessUtils() { private void convertGammaToLinearFloat(Class clz, boolean b) { int maxBrightness = maxBrightness(); findAndHookMethod(clz, "convertGammaToLinearFloat", - b ? int.class : float.class, float.class, b ? float.class : int.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (isHook) { - // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat int 1: " + param.args[0]); - // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat float 2: " + param.args[1]); - // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat float 3: " + param.args[2]); - float min = (float) param.args[b ? 1 : 0]; - float max = (float) param.args[b ? 2 : 1]; - if (min < 0.001f) { - min = 0.00114514f; - } - min = Math.round(min * 500); - max = Math.round(max * 500); - float exp; - Class BrightnessUtils = XposedHelpers.findClass("com.android.systemui.controlcenter.policy.BrightnessUtils", - lpparam.classLoader); - int GAMMA_SPACE_MAX = XposedHelpers.getStaticIntField(BrightnessUtils, "GAMMA_SPACE_MAX"); - float R = XposedHelpers.getStaticFloatField(BrightnessUtils, "R"); - float A = XposedHelpers.getStaticFloatField(BrightnessUtils, "A"); - float B = XposedHelpers.getStaticFloatField(BrightnessUtils, "B"); - float C = XposedHelpers.getStaticFloatField(BrightnessUtils, "C"); - float norm = MathUtils.norm(0.0f, GAMMA_SPACE_MAX, (int) param.args[b ? 0 : 2]); - if (norm <= R) { - exp = MathUtils.sq(norm / R); - } else { - exp = MathUtils.exp((norm - C) / A) + B; - } - if (min < 10) { - min = 12; - } - // logE("FlashLight", "convertGammaToLinearFloat R: " + R + " A: " + A + " B: " + B + " C: " + C); - // logE("FlashLight", "convertGammaToLinearFloat exp: " + exp); - float end = MathUtils.lerpNew(min, max, (MathUtils.constrain(exp, 0.0f, 12.0f) / 12.0f)); - // logE("FlashLight", "convertGammaToLinearFloat min: " + min); - // logE("FlashLight", "convertGammaToLinearFloat max: " + max); - // logE("FlashLight", "convertGammaToLinearFloat end: " + end); - int i = Math.round(end); - if (i != 0) { - if (maxBrightness != -1 && i > maxBrightness) { - i = maxBrightness; + b ? int.class : float.class, float.class, b ? float.class : int.class, + new MethodHook() { + @Override + protected void before(MethodHookParam param) { + if (isHook) { + // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat int 1: " + param.args[0]); + // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat float 2: " + param.args[1]); + // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat float 3: " + param.args[2]); + float min = (float) param.args[b ? 1 : 0]; + float max = (float) param.args[b ? 2 : 1]; + if (min < 0.001f) { + min = 0.00114514f; + } + min = Math.round(min * 500); + max = Math.round(max * 500); + float exp; + Class BrightnessUtils = XposedHelpers.findClass("com.android.systemui.controlcenter.policy.BrightnessUtils", + lpparam.classLoader); + int GAMMA_SPACE_MAX = XposedHelpers.getStaticIntField(BrightnessUtils, "GAMMA_SPACE_MAX"); + float R = XposedHelpers.getStaticFloatField(BrightnessUtils, "R"); + float A = XposedHelpers.getStaticFloatField(BrightnessUtils, "A"); + float B = XposedHelpers.getStaticFloatField(BrightnessUtils, "B"); + float C = XposedHelpers.getStaticFloatField(BrightnessUtils, "C"); + float norm = MathUtils.norm(0.0f, GAMMA_SPACE_MAX, (int) param.args[b ? 0 : 2]); + if (norm <= R) { + exp = MathUtils.sq(norm / R); + } else { + exp = MathUtils.exp((norm - C) / A) + B; } - // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat i: " + i); - lastFlash = i; - writeFile(i); + if (min < 10) { + min = 12; + } + // logE("FlashLight", "convertGammaToLinearFloat R: " + R + " A: " + A + " B: " + B + " C: " + C); + // logE("FlashLight", "convertGammaToLinearFloat exp: " + exp); + float end = MathUtils.lerpNew(min, max, (MathUtils.constrain(exp, 0.0f, 12.0f) / 12.0f)); + // logE("FlashLight", "convertGammaToLinearFloat min: " + min); + // logE("FlashLight", "convertGammaToLinearFloat max: " + max); + // logE("FlashLight", "convertGammaToLinearFloat end: " + end); + int i = Math.round(end); + if (i != 0) { + if (maxBrightness != -1 && i > maxBrightness) { + i = maxBrightness; + } + // logE(TAG, this.lpparam.packageName, "convertGammaToLinearFloat i: " + i); + lastFlash = i; + writeFile(i); + } + param.setResult(end); } - param.setResult(end); } } - } ); } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/MuteVisibleNotifications.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/MuteVisibleNotifications.java index 22e792e8a..68d48b06d 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/MuteVisibleNotifications.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/MuteVisibleNotifications.java @@ -32,11 +32,8 @@ public class MuteVisibleNotifications extends BaseHook { @Override public void init() { - if (isMoreAndroidVersion(34)) { - NotificationLoadClass = "com.android.systemui.statusbar.notification.policy.MiuiAlertManager"; - } else { - NotificationLoadClass = "com.android.systemui.statusbar.notification.policy.NotificationAlertController"; - } + NotificationLoadClass = "com.android.systemui.statusbar.notification.policy.MiuiAlertManager"; + hookAllMethods(NotificationLoadClass, lpparam.classLoader, "buzzBeepBlink", new MethodHook() { @Override protected void before(MethodHookParam param) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/NotificationWeatherNew.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/NotificationWeatherNew.kt deleted file mode 100644 index 686b8b0a8..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/NotificationWeatherNew.kt +++ /dev/null @@ -1,88 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter - -import android.annotation.SuppressLint -import android.widget.TextView -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.api.invokeMethod -import com.sevtinge.hyperceiler.utils.devicesdk.isMoreHyperOSVersion -import com.sevtinge.hyperceiler.utils.getObjectFieldOrNullAs -import com.sevtinge.hyperceiler.view.WeatherData - - -@SuppressLint("StaticFieldLeak") -// 控制中心添加天气信息 -object NotificationWeatherNew : BaseHook() { - lateinit var weather: WeatherData - private var clockId: Int = -2 - - @SuppressLint("DiscouragedApi", "ClickableViewAccessibility") - override fun init() { - val mControlCenterDateViewClass = - loadClass("com.android.systemui.controlcenter.phone.widget.ControlCenterDateView") - - mControlCenterDateViewClass.methodFinder().findSuper() - .filterByName("onDetachedFromWindow") - .first().createHook { - before { - if ((it.thisObject as TextView).id == clockId && this@NotificationWeatherNew::weather.isInitialized) { - weather.onDetachedFromWindow() - } - } - } - mControlCenterDateViewClass.methodFinder().findSuper() - .filterByName("setText") - .first().createHook { - before { - val time = it.args[0]?.toString() - val view = it.thisObject as TextView - if (view.id == clockId && time != null && this@NotificationWeatherNew::weather.isInitialized) { - // val layout = view.layoutParams as ViewGroup.MarginLayoutParams - // val y = view.height / 2 - // layout.topMargin = -y - it.args[0] = "${weather.weatherData}$time" - } - } - } - } - - @JvmStatic - fun mainPanelHeader(pluginClassLoader: ClassLoader) { - if (isMoreHyperOSVersion(1f)) return - val isDisplayCity = mPrefsMap.getBoolean("system_ui_control_center_show_weather_city") - loadClass( - "miui.systemui.controlcenter.windowview.MainPanelHeaderController", - pluginClassLoader - ).methodFinder().filterByName("addClockViews").first().createHook { - after { - val dateView = - it.thisObject.getObjectFieldOrNullAs("dateView")!! - clockId = dateView.id - weather = WeatherData(dateView.context, isDisplayCity) - weather.callBacks = { - dateView.invokeMethod("updateTime") - } - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/NotificationWeatherOld.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/NotificationWeatherOld.kt deleted file mode 100644 index c4fc13404..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/NotificationWeatherOld.kt +++ /dev/null @@ -1,111 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter - -import android.annotation.SuppressLint -import android.content.ComponentName -import android.content.Intent -import android.view.ViewGroup -import android.widget.TextView -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook - -import com.sevtinge.hyperceiler.utils.setObjectField -import com.sevtinge.hyperceiler.view.WeatherView - -// 控制中心添加天气信息 -object NotificationWeatherOld : BaseHook() { - - @SuppressLint("DiscouragedApi") - override fun init() { - var mWeatherView: TextView? - val isDisplayCity = mPrefsMap.getBoolean("system_ui_control_center_show_weather_city") - loadClass("com.android.systemui.qs.MiuiQSHeaderView").methodFinder() - .filterByName("onFinishInflate") - .single().createHook { - after { - 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( - "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 - ) - ) - layoutParams = layoutParam - } - - - 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" - ) - } - context.startActivity(intent) - } catch (e: Exception) { - logE(TAG, this@NotificationWeatherOld.lpparam.packageName, e) - } - } - } - } - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSControlDetailBackgroundAlpha.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSControlDetailBackgroundAlpha.kt deleted file mode 100644 index 2a6ecdd9e..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSControlDetailBackgroundAlpha.kt +++ /dev/null @@ -1,163 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter - -import android.graphics.drawable.Drawable -import android.view.View -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.getValueByField -import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.XposedHelpers - -object QSControlDetailBackgroundAlpha : BaseHook() { - override fun init() { - val qSControlDetailBackgroundAlpha = - mPrefsMap.getInt("system_ui_control_center_control_detail_background_alpha", 255) - val qSControlDetailClass = findClassIfExists( - "com.android.systemui.controlcenter.phone.detail.QSControlDetail" - ) - if (qSControlDetailClass != null) { - XposedHelpers.findAndHookMethod( - qSControlDetailClass, - "updateBackground", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val mDetailContainer = - getValueByField(param.thisObject, "mDetailContainer") as View - if (mDetailContainer.background != null) { - val smoothRoundDrawable = mDetailContainer.background - smoothRoundDrawable.alpha = qSControlDetailBackgroundAlpha - } - } - }) - } - val modalQSControlDetailClass = findClassIfExists( - "com.android.systemui.statusbar.notification.modal.ModalQSControlDetail" - ) - if (modalQSControlDetailClass != null) { - XposedHelpers.findAndHookMethod( - modalQSControlDetailClass, - "updateBackground", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val mDetailContainer = - getValueByField(param.thisObject, "mDetailContainer") as View - if (mDetailContainer.background != null) { - val smoothRoundDrawable = mDetailContainer.background - smoothRoundDrawable.alpha = qSControlDetailBackgroundAlpha - } - } - }) - } - - hookClassInPlugin { classLoader -> - try { - val smoothRoundDrawableClass = XposedHelpers.callMethod( - classLoader, - "loadClass", - "miui.systemui.widget.SmoothRoundDrawable" - ) ?: return@hookClassInPlugin - XposedBridge.hookAllMethods( - smoothRoundDrawableClass as Class<*>, - "inflate", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - try { - val currentDrawable = param.thisObject as Drawable - currentDrawable.alpha = qSControlDetailBackgroundAlpha - } catch (e: Throwable) { - // Do Nothings. - logW(TAG, this@QSControlDetailBackgroundAlpha.lpparam.packageName, e) - } - } - }) - } catch (e: Throwable) { - logW(TAG, this.lpparam.packageName, e) - } - } - } - - private fun hookClassInPlugin(afterGetClassLoader: (classLoader: ClassLoader) -> Unit) { - val pluginHandlerClass = findClassIfExists( - "com.android.systemui.shared.plugins.PluginInstanceManager\$PluginHandler" - ) - if (pluginHandlerClass != null) { - XposedBridge.hookAllMethods( - pluginHandlerClass, - "handleLoadPlugin", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val componentName = param.args[0] - val className = - XposedHelpers.callMethod(componentName, "getClassName") as String - if (className != "miui.systemui.volume.VolumeDialogPlugin") { - return - } - try { - val pluginContextWrapper = - getValueByField(param.result ?: return, "mPluginContext") ?: return - val classLoader = XposedHelpers.callMethod( - pluginContextWrapper, - "getClassLoader" - ) as ClassLoader - afterGetClassLoader(classLoader) - } catch (e: Throwable) { - // Do Nothings. - logW(TAG, this@QSControlDetailBackgroundAlpha.lpparam.packageName, e) - } - } - }) - return - } - - val pluginActionManagerClass = findClassIfExists( - "com.android.systemui.shared.plugins.PluginActionManager" - ) - if (pluginActionManagerClass != null) { - XposedBridge.hookAllMethods( - pluginActionManagerClass, - "loadPluginComponent", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - val componentName = param.args[0] - val className = - XposedHelpers.callMethod(componentName, "getClassName") as String - if (className != "miui.systemui.volume.VolumeDialogPlugin") { - return - } - try { - val pluginContextWrapper = - getValueByField(param.result ?: return, "mPluginContext") - ?: return - val classLoader = XposedHelpers.callMethod( - pluginContextWrapper, - "getClassLoader" - ) as ClassLoader - afterGetClassLoader(classLoader) - } catch (e: Throwable) { - // Do Nothings. - logW(TAG, this@QSControlDetailBackgroundAlpha.lpparam.packageName, e) - } - } - }) - return - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSGrid.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSGrid.kt index a00eacdf1..9c01a3f16 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSGrid.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/QSGrid.kt @@ -38,12 +38,7 @@ class QSGrid : BaseHook() { val rows = mPrefsMap.getInt("system_control_center_old_qs_rows", 3) val rowsHorizontal = mPrefsMap.getInt("system_control_center_old_qs_rows_horizontal", 2) - if (isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { - hyperHooks(cols, colsHorizontal) - } else { - miuiHooks(cols, colsHorizontal) - } - + hyperHooks(cols, colsHorizontal) miuiTileClass.methodFinder() .filterByName("updateResources") .first().createHook { @@ -79,23 +74,4 @@ class QSGrid : BaseHook() { } } } - - private fun miuiHooks( - cols: Int, - colsHorizontal: Int - ) { - miuiTileClass.methodFinder() - .filterByName("updateColumns") - .first().createHook { - after { - val viewGroup = it.thisObject as ViewGroup - val mConfiguration: Configuration = viewGroup.context.resources.configuration - if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { - XposedHelpers.setObjectField(it.thisObject, "mColumns", cols) - } else { - XposedHelpers.setObjectField(it.thisObject, "mColumns", colsHorizontal) - } - } - } - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/RedirectToNotificationChannelSetting.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/RedirectToNotificationChannelSetting.kt index 616ce85c3..939972d3f 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/RedirectToNotificationChannelSetting.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/RedirectToNotificationChannelSetting.kt @@ -35,7 +35,6 @@ import com.github.kyuubiran.ezxhelper.ObjectUtils.getObjectOrNullAs import com.github.kyuubiran.ezxhelper.ObjectUtils.invokeMethodBestMatch import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.devicesdk.isMoreHyperOSVersion object RedirectToNotificationChannelSetting : BaseHook() { // by starVoyager @@ -49,38 +48,36 @@ object RedirectToNotificationChannelSetting : BaseHook() { override fun init() { // hyperos fix by yife - if (isMoreHyperOSVersion(1f)) { - val clazzDependency = loadClass("com.android.systemui.Dependency") - val clazzModalController = - loadClass("com.android.systemui.statusbar.notification.modal.ModalController") - val clazzCommandQueue = loadClass("com.android.systemui.statusbar.CommandQueue") - clazzMiuiNotificationMenuRow.methodFinder().filterByName("createMenuViews").first() - .createHook { - after { param -> - val mSbn = - getObjectOrNullAs(param.thisObject, "mSbn") ?: return@after - val mInfoItem = - getObjectOrNull(param.thisObject, "mInfoItem") ?: return@after - initAppContext(getObjectOrNullAs(param.thisObject, "mContext")) - val mIcon = getObjectOrNullAs(mInfoItem, "mIcon") ?: return@after - mIcon.setOnClickListener { - startChannelNotificationSettings(mSbn) - val modalController = invokeStaticMethodBestMatch( - clazzDependency, "get", null, clazzModalController - ) ?: return@setOnClickListener - invokeMethodBestMatch( - modalController, "animExitModal", null, 50L, true, "MORE", false - ) - val commandQueue = invokeStaticMethodBestMatch( - clazzDependency, "get", null, clazzCommandQueue - ) ?: return@setOnClickListener - invokeMethodBestMatch( - commandQueue, "animateCollapsePanels", null, 0, false - ) - } + val clazzDependency = loadClass("com.android.systemui.Dependency") + val clazzModalController = + loadClass("com.android.systemui.statusbar.notification.modal.ModalController") + val clazzCommandQueue = loadClass("com.android.systemui.statusbar.CommandQueue") + clazzMiuiNotificationMenuRow.methodFinder().filterByName("createMenuViews").first() + .createHook { + after { param -> + val mSbn = + getObjectOrNullAs(param.thisObject, "mSbn") ?: return@after + val mInfoItem = + getObjectOrNull(param.thisObject, "mInfoItem") ?: return@after + initAppContext(getObjectOrNullAs(param.thisObject, "mContext")) + val mIcon = getObjectOrNullAs(mInfoItem, "mIcon") ?: return@after + mIcon.setOnClickListener { + startChannelNotificationSettings(mSbn) + val modalController = invokeStaticMethodBestMatch( + clazzDependency, "get", null, clazzModalController + ) ?: return@setOnClickListener + invokeMethodBestMatch( + modalController, "animExitModal", null, 50L, true, "MORE", false + ) + val commandQueue = invokeStaticMethodBestMatch( + clazzDependency, "get", null, clazzCommandQueue + ) ?: return@setOnClickListener + invokeMethodBestMatch( + commandQueue, "animateCollapsePanels", null, 0, false + ) } } - } + } clazzMiuiNotificationMenuRow.methodFinder().filterByName("onClickInfoItem").firstOrNull() ?.createHook { before { param -> diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/SwitchCCAndNotification.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/SwitchCCAndNotification.java index 13fa6f1e7..32b28bd3c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/SwitchCCAndNotification.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/controlcenter/SwitchCCAndNotification.java @@ -1,27 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.module.hook.systemui.controlcenter; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.view.MotionEvent; import android.widget.FrameLayout; @@ -33,85 +29,62 @@ public class SwitchCCAndNotification extends BaseHook { @Override public void init() { findAndHookMethod( - "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView", lpparam.classLoader, - "handleEvent", - MotionEvent.class, new MethodHook() { - @Override - protected void before(MethodHookParam param) { - boolean useCC = (boolean) XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "mPanelController"), "isExpandable"); - if (useCC) { - FrameLayout bar = (FrameLayout) param.thisObject; - Object mControlPanelWindowManager = XposedHelpers.getObjectField(param.thisObject, "mControlPanelWindowManager"); - boolean dispatchToControlPanel = (boolean) XposedHelpers.callMethod(mControlPanelWindowManager, "dispatchToControlPanel", param.args[0], bar.getWidth()); - if (isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { + "com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView", lpparam.classLoader, + "handleEvent", + MotionEvent.class, new MethodHook() { + @Override + protected void before(MethodHookParam param) { + boolean useCC = (boolean) XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "mPanelController"), "isExpandable"); + if (useCC) { + FrameLayout bar = (FrameLayout) param.thisObject; + Object mControlPanelWindowManager = XposedHelpers.getObjectField(param.thisObject, "mControlPanelWindowManager"); + boolean dispatchToControlPanel = (boolean) XposedHelpers.callMethod(mControlPanelWindowManager, "dispatchToControlPanel", param.args[0], bar.getWidth()); XposedHelpers.setObjectField(mControlPanelWindowManager, "transToControlPanel", dispatchToControlPanel); - } else if (isAndroidVersion(34)) { - XposedHelpers.setObjectField(mControlPanelWindowManager, "mTransToControlPanel", dispatchToControlPanel); - } else { - XposedHelpers.callMethod(mControlPanelWindowManager, "setTransToControlPanel", dispatchToControlPanel); + param.setResult(dispatchToControlPanel); + return; } - param.setResult(dispatchToControlPanel); - return; + param.setResult(false); } - param.setResult(false); - } - }); + }); findAndHookMethod( - "com.android.systemui.controlcenter.phone.ControlPanelWindowManager", lpparam.classLoader, - "dispatchToControlPanel", - MotionEvent.class, float.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - boolean added = XposedHelpers.getBooleanField(param.thisObject, "added"); - if (added) { - boolean useCC; - Object controlCenterWindowView; + "com.android.systemui.controlcenter.phone.ControlPanelWindowManager", lpparam.classLoader, + "dispatchToControlPanel", + MotionEvent.class, float.class, + new MethodHook() { + @Override + protected void before(MethodHookParam param) { + boolean added = XposedHelpers.getBooleanField(param.thisObject, "added"); + if (added) { + boolean useCC; + Object controlCenterWindowView; - if (isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { useCC = XposedHelpers.getBooleanField(XposedHelpers.getObjectField(param.thisObject, "controlCenterController"), "useControlCenter"); - } else if (isMoreAndroidVersion(33)) { - useCC = XposedHelpers.getBooleanField(XposedHelpers.getObjectField(param.thisObject, "mControlCenterController"), "useControlCenter"); - } else { - useCC = (boolean) XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "mControlCenterController"), "isExpandable"); - } - if (useCC) { - MotionEvent motionEvent = (MotionEvent) param.args[0]; - if (motionEvent.getActionMasked() == 0) { - if (isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { + if (useCC) { + MotionEvent motionEvent = (MotionEvent) param.args[0]; + if (motionEvent.getActionMasked() == 0) { XposedHelpers.setObjectField(param.thisObject, "downX", motionEvent.getRawX()); - } else { - XposedHelpers.setObjectField(param.thisObject, "mDownX", motionEvent.getRawX()); } - } - if (isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { controlCenterWindowView = XposedHelpers.getObjectField(param.thisObject, "windowView"); - } else { - controlCenterWindowView = XposedHelpers.getObjectField(param.thisObject, "mControlPanel"); - } - if (controlCenterWindowView == null) { - param.setResult(false); - } else { - float mDownX; - if (isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { - mDownX = XposedHelpers.getFloatField(param.thisObject, "downX"); - } else { - mDownX = XposedHelpers.getFloatField(param.thisObject, "mDownX"); - } - float width = (float) param.args[1]; - if (mDownX < width / 2.0f) { - param.setResult(XposedHelpers.callMethod(controlCenterWindowView, "handleMotionEvent", motionEvent, true)); - } else { - param.setResult(false); + + if (controlCenterWindowView == null) { + param.setResult(false); + } else { + float mDownX; + mDownX = XposedHelpers.getFloatField(param.thisObject, "downX"); + float width = (float) param.args[1]; + if (mDownX < width / 2.0f) { + param.setResult(XposedHelpers.callMethod(controlCenterWindowView, "handleMotionEvent", motionEvent, true)); + } else { + param.setResult(false); + } + } + return; } } - return; + param.setResult(false); } - } - param.setResult(false); - } - }); + }); } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/AddBlurEffectToLockScreen.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/AddBlurEffectToLockScreen.kt deleted file mode 100644 index 8f4a33fc8..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/AddBlurEffectToLockScreen.kt +++ /dev/null @@ -1,488 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.lockscreen - -import android.animation.ValueAnimator -import android.graphics.drawable.LayerDrawable -import android.view.ViewGroup -import android.widget.ImageView -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.devicesdk.isAndroidVersion -import com.sevtinge.hyperceiler.utils.getValueByField -import de.robv.android.xposed.XC_MethodHook -import de.robv.android.xposed.XposedBridge -import de.robv.android.xposed.XposedHelpers - -object AddBlurEffectToLockScreen : BaseHook() { - override fun init() { - val miuiNotificationPanelViewControllerClass = findClassIfExists( - if (isAndroidVersion(34)) - "com.android.systemui.shade.MiuiNotificationPanelViewController" - else - "com.android.systemui.statusbar.phone.MiuiNotificationPanelViewController" - ) ?: return - - val keyguardBottomAreaViewClass = findClassIfExists( - "com.android.systemui.statusbar.phone.KeyguardBottomAreaView" - ) ?: return - - val lockScreenMagazineControllerClass = findClassIfExists( - "com.android.keyguard.magazine.LockScreenMagazineController" - ) ?: return - - // to com.sevtinge.hyperceiler.module.systemui.lockscreen.BlurButton - /*XposedBridge.hookAllMethods( - keyguardBottomAreaViewClass, - "onAttachedToWindow", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - /*if (!isDefaultLockScreenTheme()) { - return - }*/ - val mLeftAffordanceView = HookUtils.getValueByField( - param.thisObject, - "mLeftAffordanceView" - ) as ImageView - val mRightAffordanceView = HookUtils.getValueByField( - param.thisObject, - "mRightAffordanceView" - ) as ImageView - - val keyguardBottomAreaView = param.thisObject as View - val leftBlurDrawable = HookUtils.createBlurDrawable( - keyguardBottomAreaView, - 40, - 100, - Color.argb(60, 255, 255, 255) - ) - val leftLayerDrawable = LayerDrawable(arrayOf(leftBlurDrawable)) - val rightBlurDrawable = HookUtils.createBlurDrawable( - keyguardBottomAreaView, - 40, - 100, - Color.argb(60, 255, 255, 255) - ) - val rightLayerDrawable = LayerDrawable(arrayOf(rightBlurDrawable)) - leftLayerDrawable.setLayerInset(0, 40, 40, 40, 40) - rightLayerDrawable.setLayerInset(0, 40, 40, 40, 40) - mLeftAffordanceView.background = leftLayerDrawable - mRightAffordanceView.background = rightLayerDrawable - } - })*/ - - XposedBridge.hookAllMethods( - miuiNotificationPanelViewControllerClass, - "setBouncerShowingFraction", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val mKeyguardBouncerShowing = getValueByField( - param.thisObject, - "mKeyguardBouncerShowing" - ) as Boolean - val mKeyguardBottomArea = - XposedHelpers.callMethod(param.thisObject, "getKeyguardBottomArea") - val mLeftAffordanceView = getValueByField( - mKeyguardBottomArea, - "mLeftAffordanceView" - ) as ImageView - val mRightAffordanceView = getValueByField( - mKeyguardBottomArea, - "mRightAffordanceView" - ) as ImageView - if (mLeftAffordanceView.background is LayerDrawable) { - val layerDrawable = mLeftAffordanceView.background as LayerDrawable - val blurDrawable = layerDrawable.getDrawable(0) - XposedHelpers.callMethod( - blurDrawable, - "setVisible", - !mKeyguardBouncerShowing, - false - ) - } - if (mRightAffordanceView.background is LayerDrawable) { - val layerDrawable = mRightAffordanceView.background as LayerDrawable - val blurDrawable = layerDrawable.getDrawable(0) - XposedHelpers.callMethod( - blurDrawable, - "setVisible", - !mKeyguardBouncerShowing, - false - ) - } - } - }) - - XposedBridge.hookAllMethods( - miuiNotificationPanelViewControllerClass, - "updateKeyguardElementAlpha", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val mNotificationStackScroller = - getValueByField( - param.thisObject, - "mNotificationStackScroller" - ) ?: return - val mKeyguardBouncerShowing = getValueByField( - param.thisObject, - "mKeyguardBouncerShowing" - ) ?: return - mNotificationStackScroller as ViewGroup - mKeyguardBouncerShowing as Boolean - val keyguardContentsAlpha = - XposedHelpers.callMethod( - param.thisObject, - "getKeyguardContentsAlpha" - ) as Float - val drawableAlpha = keyguardContentsAlpha * 255 - val mKeyguardBottomArea = - XposedHelpers.callMethod(param.thisObject, "getKeyguardBottomArea") - val mLeftAffordanceView = getValueByField( - mKeyguardBottomArea, - "mLeftAffordanceView" - ) as ImageView - val mRightAffordanceView = getValueByField( - mKeyguardBottomArea, - "mRightAffordanceView" - ) as ImageView - if (mLeftAffordanceView.background is LayerDrawable) { - val layerDrawable = mLeftAffordanceView.background as LayerDrawable - val blurDrawable = layerDrawable.getDrawable(0) - XposedHelpers.callMethod( - blurDrawable, - "setAlpha", - drawableAlpha.toInt() - ) - } - if (mRightAffordanceView.background is LayerDrawable) { - val layerDrawable = mRightAffordanceView.background as LayerDrawable - val blurDrawable = layerDrawable.getDrawable(0) - XposedHelpers.callMethod( - blurDrawable, - "setAlpha", - drawableAlpha.toInt() - ) - } - } - }) - - // 控制中心异常 - /*XposedBridge.hookAllMethods( - keyguardMoveHelperClass, - "setTranslation", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val mCurrentScreen = - HookUtils.getValueByField(param.thisObject, "mCurrentScreen") as Int - val mLeftViewBg = - HookUtils.getValueByField(param.thisObject, "mLeftViewBg") as ImageView - mLeftViewBg.setImageDrawable(null) - mLeftViewBg.setBackgroundColor(Color.TRANSPARENT) - val transitionX = param.args[0] as Float - val screenWidth = - XposedHelpers.callMethod( - param.thisObject, - "getScreenWidth" - ) as Float - var alpha = (transitionX / screenWidth) * 255 - if (mCurrentScreen != 1) { - alpha += 255 - } - if (alpha > 255 || alpha < 0) { - return - } - val drawableAlpha = (255 - alpha).toInt() - var blurRadius = (transitionX / screenWidth) * 80 - var colorAlpha = (transitionX / screenWidth) * 50 - if (mCurrentScreen != 1) { - blurRadius += 80 - colorAlpha += 50 - } - val mFaceUnlockView = - HookUtils.getValueByField(param.thisObject, "mFaceUnlockView") ?: return - mFaceUnlockView as View - if (mFaceUnlockView.parent == null || mFaceUnlockView.parent.parent == null) { - return - } - val targetView = mFaceUnlockView.parent.parent as View - if (blurRadius in 1f..81f) { - if (HookUtils.isBlurDrawable(targetView.background)) { - XposedHelpers.callMethod( - targetView.background, - "setBlurRadius", - blurRadius.toInt() - ) - XposedHelpers.callMethod( - targetView.background, - "setColor", - Color.argb(colorAlpha.toInt(), 0, 0, 0) - ) - } else { - targetView.background = - HookUtils.createBlurDrawable( - targetView, - blurRadius.toInt(), - 0, - Color.argb(colorAlpha.toInt(), 0, 0, 0) - ) - } - } else { - targetView.background = null - } - val mNotificationPanelViewController = - HookUtils.getValueByField( - param.thisObject, - "mNotificationPanelViewController" - ) - ?: return - val mNotificationStackScroller = - HookUtils.getValueByField( - mNotificationPanelViewController, - "mNotificationStackScroller" - ) ?: return - mNotificationStackScroller as ViewGroup - - val mKeyguardBottomArea = - XposedHelpers.callMethod( - mNotificationPanelViewController, - "getKeyguardBottomArea" - ) - val mLeftAffordanceView = HookUtils.getValueByField( - mKeyguardBottomArea, - "mLeftAffordanceView" - ) as ImageView - val mRightAffordanceView = HookUtils.getValueByField( - mKeyguardBottomArea, - "mRightAffordanceView" - ) as ImageView - if (mLeftAffordanceView.background is LayerDrawable) { - val layerDrawable = mLeftAffordanceView.background as LayerDrawable - layerDrawable.alpha = drawableAlpha - } - if (mRightAffordanceView.background is LayerDrawable) { - val layerDrawable = mRightAffordanceView.background as LayerDrawable - layerDrawable.alpha = drawableAlpha - } - } - }) - */ - - // 锁屏过渡至桌面模糊异常 - /* - XposedBridge.hookAllMethods( - baseKeyguardMoveHelperClass, - "doPanelViewAnimation", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val mNotificationPanelViewController = - HookUtils.getValueByField( - param.thisObject, - "mNotificationPanelViewController" - ) - ?: return - val panelView = XposedHelpers.callMethod( - mNotificationPanelViewController, - "getPanelView" - ) ?: return - panelView as View - if (panelView.parent == null) { - return - } - val targetBlurView = panelView.parent as View - val isOnKeyguard = XposedHelpers.callMethod( - mNotificationPanelViewController, - "isOnKeyguard" - ) as Boolean - if (!isOnKeyguard) { - if (HookUtils.isBlurDrawable(targetBlurView.background)) { - targetBlurView.background = null - } - return - } - val mKeyguardBouncerShowing = HookUtils.getValueByField( - mNotificationPanelViewController, - "mKeyguardBouncerShowing" - ) as Boolean - if (mKeyguardBouncerShowing) { - return - } - val mTranslationPer = - HookUtils.getValueByField(param.thisObject, "mTranslationPer") as Float - val f2 = 1.0f - (1.0f - mTranslationPer) * (1.0f - mTranslationPer) - val blurRadius = f2 * 50 - if (blurRadius > 0f) { - if (HookUtils.isBlurDrawable(targetBlurView.background)) { - XposedHelpers.callMethod( - targetBlurView.background, - "setBlurRadius", - blurRadius.toInt() - ) - } else { - targetBlurView.background = - HookUtils.createBlurDrawable(targetBlurView, blurRadius.toInt(), 0) - } - } else if (!mKeyguardBouncerShowing) { - targetBlurView.background = null - } - } - }) - - */ - - XposedBridge.hookAllMethods( - miuiNotificationPanelViewControllerClass, - "onBouncerShowingChanged", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val isBouncerShowing = param.args[0] as Boolean - val mBouncerFractionAnimator = - getValueByField( - param.thisObject, - "mBouncerFractionAnimator" - ) ?: return - mBouncerFractionAnimator as ValueAnimator - if (isBouncerShowing) { - val mKeyguardBouncerFractionField = - miuiNotificationPanelViewControllerClass.getDeclaredField("mKeyguardBouncerFraction") - mKeyguardBouncerFractionField.isAccessible = true - mKeyguardBouncerFractionField.set(param.thisObject, 1f) - } - } - }) - - XposedBridge.hookAllMethods( - lockScreenMagazineControllerClass, - "setViewsAlpha", - object : XC_MethodHook() { - override fun beforeHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val alpha = param.args[0] as Float - val drawableAlpha = alpha * 255 - if (drawableAlpha < 0 || drawableAlpha > 255) { - return - } - val mNotificationStackScrollLayout = getValueByField( - param.thisObject, - "mNotificationStackScrollLayout" - ) ?: return - // NotificationStackScrollLayoutController - val mController = - getValueByField(mNotificationStackScrollLayout, "mController") - ?: return - - val mPanelViewController = - getValueByField(mController, "mPanelViewController") ?: return - - val mKeyguardBottomArea = - XposedHelpers.callMethod( - mPanelViewController, - "getKeyguardBottomArea" - ) ?: return - val mLeftAffordanceView = getValueByField( - mKeyguardBottomArea, - "mLeftAffordanceView" - ) as ImageView - val mRightAffordanceView = getValueByField( - mKeyguardBottomArea, - "mRightAffordanceView" - ) as ImageView - if (mLeftAffordanceView.background is LayerDrawable) { - val layerDrawable = mLeftAffordanceView.background as LayerDrawable - layerDrawable.alpha = drawableAlpha.toInt() - } - if (mRightAffordanceView.background is LayerDrawable) { - val layerDrawable = mRightAffordanceView.background as LayerDrawable - layerDrawable.alpha = drawableAlpha.toInt() - } - } - }) - - XposedBridge.hookAllMethods( - keyguardBottomAreaViewClass, - "setDozing", - object : XC_MethodHook() { - override fun afterHookedMethod(param: MethodHookParam) { - if (!isDefaultLockScreenTheme()) { - return - } - val isDozing = param.args[0] as Boolean - val mLeftAffordanceView = getValueByField( - param.thisObject, - "mLeftAffordanceView" - ) as ImageView - val mRightAffordanceView = getValueByField( - param.thisObject, - "mRightAffordanceView" - ) as ImageView - if (mLeftAffordanceView.background == null || mRightAffordanceView.background == null) { - return - } - val leftLayerDrawable = mLeftAffordanceView.background - val rightLayerDrawable = mRightAffordanceView.background - if (leftLayerDrawable is LayerDrawable && rightLayerDrawable is LayerDrawable) { - val leftBlurDrawable = leftLayerDrawable.getDrawable(0) ?: return - val rightBlurDrawable = rightLayerDrawable.getDrawable(0) ?: return - XposedHelpers.callMethod( - leftBlurDrawable, - "setVisible", - !isDozing, - false - ) - XposedHelpers.callMethod( - rightBlurDrawable, - "setVisible", - !isDozing, - false - ) - } - } - }) - - } - - fun isDefaultLockScreenTheme(): Boolean { - val miuiKeyguardUtilsClass = findClassIfExists( - if (isAndroidVersion(34)) - "com.miui.systemui.util.CommonUtil" - else - "com.android.keyguard.utils.MiuiKeyguardUtils" - ) ?: return true - return XposedHelpers.callStaticMethod( - miuiKeyguardUtilsClass, - "isDefaultLockScreenTheme" - ) as Boolean - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/BlurButton.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/BlurButton.kt index 820e3ef97..15c643cb4 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/BlurButton.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/BlurButton.kt @@ -57,42 +57,24 @@ object BlurButton : BaseHook() { override fun init() { // by StarVoyager - if (isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)) { - loadClassOrNull("com.android.keyguard.injector.KeyguardBottomAreaInjector")!!.methodFinder() - .filter { - name in setOf( - "updateLeftIcon", - "updateRightIcon" - ) - }.toList().createHooks { - after { param -> - try { - if (hyperBlur) hyperBlur(param) else systemBlur(param) - if (blurBotton) param.thisObject.setBooleanField("mBottomIconRectIsDeep", isColorDark(mPrefsMap.getInt("system_ui_lock_screen_blur_button_bg_color", 0))) - } catch (_: Throwable) { - } - } - } - } else { - loadClassOrNull( - "com.android.systemui.statusbar.phone.KeyguardBottomAreaView" - )!!.methodFinder() - .filter { - name in setOf( - "onAttachedToWindow", - "onDetachedFromWindow", - "updateRightAffordanceIcon", - "updateLeftAffordanceIcon" - ) - }.toList().createHooks { - after { param -> - try { - systemBlur(param) - } catch (_: Throwable) { - } + loadClassOrNull("com.android.keyguard.injector.KeyguardBottomAreaInjector")!!.methodFinder() + .filter { + name in setOf( + "updateLeftIcon", + "updateRightIcon" + ) + }.toList().createHooks { + after { param -> + try { + if (hyperBlur) hyperBlur(param) else systemBlur(param) + if (blurBotton) param.thisObject.setBooleanField( + "mBottomIconRectIsDeep", + isColorDark(mPrefsMap.getInt("system_ui_lock_screen_blur_button_bg_color", 0)) + ) + } catch (_: Throwable) { } } - } + } } private fun setNewBackgroundBlur(imageView: ImageView): LayerDrawable { @@ -114,62 +96,31 @@ object BlurButton : BaseHook() { } private fun systemBlur(param: XC_MethodHook.MethodHookParam) { - if (isMoreHyperOSVersion(1f)) { - val mLeftAffordanceView: ImageView = ObjectUtils.getObjectOrNullAs( - param.thisObject, - "mLeftButton" - )!! - val mRightAffordanceView: ImageView = ObjectUtils.getObjectOrNullAs( - param.thisObject, - "mRightButton" - )!! - // Your blur logic - val context = ObjectUtils.getObjectOrNull(param.thisObject, "mContext") as Context - val keyguardManager = - context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - - if (keyguardManager.isKeyguardLocked) { - mLeftAffordanceView.background = if (!removeLeft) { - setNewBackgroundBlur(mLeftAffordanceView) - } else null - mRightAffordanceView.background = if (!removeRight) { - setNewBackgroundBlur(mRightAffordanceView) - } else null - } else { - mLeftAffordanceView.background = null - mRightAffordanceView.background = null - } + val mLeftAffordanceView: ImageView = ObjectUtils.getObjectOrNullAs( + param.thisObject, + "mLeftButton" + )!! + val mRightAffordanceView: ImageView = ObjectUtils.getObjectOrNullAs( + param.thisObject, + "mRightButton" + )!! + // Your blur logic + val context = ObjectUtils.getObjectOrNull(param.thisObject, "mContext") as Context + val keyguardManager = + context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager + + if (keyguardManager.isKeyguardLocked) { + mLeftAffordanceView.background = if (!removeLeft) { + setNewBackgroundBlur(mLeftAffordanceView) + } else null + mRightAffordanceView.background = if (!removeRight) { + setNewBackgroundBlur(mRightAffordanceView) + } else null } else { - val mLeftAffordanceView: ImageView = - ObjectUtils.getObjectOrNullAs( - param.thisObject, - "mLeftAffordanceView" - )!! - - val mRightAffordanceView: ImageView = - ObjectUtils.getObjectOrNullAs( - param.thisObject, - "mRightAffordanceView" - )!! - - val keyguardBottomAreaView: View = param.thisObject as View - // Your blur logic - val context = keyguardBottomAreaView.context - val keyguardManager = - context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - - if (keyguardManager.isKeyguardLocked) { - mLeftAffordanceView.background = if (!removeLeft) { - setOldBackgroundBlur(keyguardBottomAreaView) - } else null - mRightAffordanceView.background = if (!removeRight) { - setOldBackgroundBlur(keyguardBottomAreaView) - } else null - } else { - mLeftAffordanceView.background = null - mRightAffordanceView.background = null - } + mLeftAffordanceView.background = null + mRightAffordanceView.background = null } + } private fun hyperBlur(param: XC_MethodHook.MethodHookParam) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ChargingCVP.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ChargingCVP.kt index e956d5c83..41aa0a48c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ChargingCVP.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ChargingCVP.kt @@ -135,25 +135,11 @@ object ChargingCVP : BaseHook() { } override fun run() { - if (isMoreHyperOSVersion(1f)) { - doUpdateForHyperOS() - } else if (!isMoreHyperOSVersion(1f) && isAndroidVersion(34)) { - XposedHelpers.callStaticMethod( - loadClass("com.android.systemui.statusbar.KeyguardIndicationController"), - "updatePowerIndication" - ) - } else { - invokeMethodBestMatch( - keyguardIndicationController, - "updatePowerIndication" - ) - } + doUpdateForHyperOS() + handler.postDelayed( this, - mPrefsMap.getInt( - "system_ui_statusbar_lock_screen_show_spacing", - 6 - ) / 2 * 1000L + mPrefsMap.getInt("system_ui_statusbar_lock_screen_show_spacing", 6) / 2 * 1000L ) } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ClockDisplaySeconds.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ClockDisplaySeconds.kt deleted file mode 100644 index 607610c50..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ClockDisplaySeconds.kt +++ /dev/null @@ -1,116 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.lockscreen - -import android.annotation.SuppressLint -import android.content.Context -import android.os.Handler -import android.provider.Settings -import android.util.Log -import android.widget.LinearLayout -import android.widget.TextView -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.ConstructorFinder.`-Static`.constructorFinder -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.getObjectFieldAs -import de.robv.android.xposed.XC_MethodHook -import java.lang.reflect.Method -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.Date -import java.util.Timer -import java.util.TimerTask - -object ClockDisplaySeconds : BaseHook() { - private var nowTime: Date = Calendar.getInstance().time - - override fun init() { - loadClass("com.miui.clock.MiuiBaseClock").constructorFinder() - .filterByParamCount(2) - .single().createHook { - after { - 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().schedule(T(), 1000 - System.currentTimeMillis() % 1000, 1000) - } catch (_: Exception) { - } - } - } - - loadClass("com.miui.clock.MiuiLeftTopClock").methodFinder() - .filterByName("updateTime") - .single().createHook { - after { updateTime(it, false) } - } - - loadClass("com.miui.clock.MiuiCenterHorizontalClock").methodFinder() - .filterByName("updateTime") - .single().createHook { - after { updateTime(it, false) } - } - - loadClass("com.miui.clock.MiuiLeftTopLargeClock").methodFinder().filterByName("updateTime") - .single().createHook { - after { updateTime(it, false) } - } - - loadClass("com.miui.clock.MiuiVerticalClock").methodFinder().filterByName("updateTime") - .single().createHook { - after { updateTime(it, true) } - } - } - - private fun updateTime(it: XC_MethodHook.MethodHookParam, isVertical: Boolean) { - val textV = it.thisObject.getObjectFieldAs("mTimeText") - 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 = "" - timePattern += if (isVertical) { // 垂直 - if (is24) "HH\nmm\nss" else "hh\nmm\nss" - } else { // 水平 - if (is24) "HH:mm:ss" else "h:mm:ss" - } - timePattern = SimpleDateFormat(timePattern).format(nowTime) - return timePattern - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ForceClockUseSystemFontsHook.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ForceClockUseSystemFontsHook.kt deleted file mode 100644 index ebc9efb02..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/ForceClockUseSystemFontsHook.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.lockscreen - -import android.graphics.Typeface -import android.widget.TextView -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHooks -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.getObjectFieldAs - - -object ForceClockUseSystemFontsHook : BaseHook() { - override fun init() { - loadClass("com.miui.clock.MiuiBaseClock").methodFinder().filter { - name == "updateViewsTextSize" - }.toList().createHooks { - after { param -> - val mTimeText = - param.thisObject.getObjectFieldAs("mTimeText") - mTimeText.typeface = Typeface.DEFAULT - } - } - - loadClass("com.miui.clock.MiuiLeftTopLargeClock").methodFinder().filter { - name == "onLanguageChanged" && parameterTypes == String::class.java - }.toList().createHooks { - after { param -> - val mTimeText = - param.thisObject.getObjectFieldAs("mCurrentDateLarge") - mTimeText.typeface = Typeface.DEFAULT - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenHint.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenHint.kt index e7794fef7..596ddc5b7 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenHint.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenHint.kt @@ -40,7 +40,7 @@ object HideLockScreenHint : BaseHook() { .filterStatic().single().createHook { returnConstant(null) } - } else if (isAndroidVersion(34) && isMoreHyperOSVersion(1f)) { + } else { // by Hyper Helper keyguardIndicationController!!.methodFinder() .filterByName("updateDeviceEntryIndication") @@ -59,13 +59,6 @@ object HideLockScreenHint : BaseHook() { image.alpha = 0.0f } } - } else if (isAndroidVersion(33)) { - findAndHookMethod( - "com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController", - lpparam.classLoader, - "hasIndicationsExceptResting", - XC_MethodReplacement.returnConstant(true) - ) } } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenStatusBar.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenStatusBar.kt index 034a10a40..0a7ab6683 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenStatusBar.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockScreenStatusBar.kt @@ -45,7 +45,7 @@ object HideLockScreenStatusBar : BaseHook() { XposedHelpers.setObjectField(mKeyguardStatusBar, "mKeyguardStatusBarAnimateAlpha", 0.0f) } } - } else if (isAndroidVersion(34)) { + } else { hookAllMethods( "com.android.systemui.statusbar.phone.CentralSurfacesImpl", lpparam.classLoader, "updateIsKeyguard", @@ -64,22 +64,6 @@ object HideLockScreenStatusBar : BaseHook() { } } ) - } else { - hookAllMethods( - "com.android.systemui.statusbar.phone.CentralSurfacesImpl", lpparam.classLoader, - "makeStatusBarView", - object : MethodHook() { - override fun after(param: MethodHookParam) { - val mKeyguardStatusBar = XposedHelpers.getObjectField( - XposedHelpers.getObjectField( - param.thisObject, - "mNotificationPanelViewController" - ), "mKeyguardStatusBar" - ) as View - mKeyguardStatusBar.translationY = -999f - } - } - ) } } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockscreenZenMode.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockscreenZenMode.kt index ced71fe81..c668242ce 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockscreenZenMode.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/HideLockscreenZenMode.kt @@ -40,18 +40,12 @@ object HideLockscreenZenMode : BaseHook() { .first().createBeforeHook { it.thisObject.setObjectField("manuallyDismissed", true) } - } else if (isAndroidVersion(34)) { + } else { zenModeClass.methodFinder() .filterByName("updateVisibility") .single().createBeforeHook { it.thisObject.setObjectField("manuallyDismissed", true) } - } else { - zenModeClass.methodFinder() - .filterByName("shouldBeVisible") - .single().createHook { - returnConstant(false) - } } } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/LockScreenDoubleTapToSleep.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/LockScreenDoubleTapToSleep.kt index 8a629b370..2846205f6 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/LockScreenDoubleTapToSleep.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/LockScreenDoubleTapToSleep.kt @@ -34,11 +34,7 @@ import de.robv.android.xposed.XposedHelpers.setAdditionalInstanceField object LockScreenDoubleTapToSleep : BaseHook() { private val className by lazy { - if (isMoreAndroidVersion(34)) { - loadClass("com.android.systemui.shade.NotificationsQuickSettingsContainer") - } else { - loadClass("com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer") - } + loadClass("com.android.systemui.shade.NotificationsQuickSettingsContainer") } override fun init() { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveCamera.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveCamera.kt index 3c3045f33..b793ed63c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveCamera.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveCamera.kt @@ -26,52 +26,25 @@ import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHooks import com.github.kyuubiran.ezxhelper.ObjectUtils import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder import com.sevtinge.hyperceiler.module.base.BaseHook -import com.sevtinge.hyperceiler.utils.devicesdk.isAndroidVersion -import com.sevtinge.hyperceiler.utils.devicesdk.isMiuiVersion -import com.sevtinge.hyperceiler.utils.devicesdk.isMoreAndroidVersion -import com.sevtinge.hyperceiler.utils.devicesdk.isMoreHyperOSVersion object RemoveCamera : BaseHook() { - private val oldClass by lazy { - loadClassOrNull("com.android.systemui.statusbar.phone.KeyguardBottomAreaView") - } private val newClass by lazy { loadClassOrNull("com.android.keyguard.injector.KeyguardBottomAreaInjector") } override fun init() { // 屏蔽右下角组件显示 - if (isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)) { - newClass!!.methodFinder().filter { - name in setOf( - "updateRightAffordanceViewLayoutVisibility", - "startButtonLayoutAnimate" - ) - }.toList().createHooks { - after { - val right = - ObjectUtils.getObjectOrNullAs(it.thisObject, "mRightAffordanceViewLayout") ?: return@after - right.visibility = View.GONE - } + newClass!!.methodFinder().filter { + name in setOf( + "updateRightAffordanceViewLayoutVisibility", + "startButtonLayoutAnimate" + ) + }.toList().createHooks { + after { + val right = + ObjectUtils.getObjectOrNullAs(it.thisObject, "mRightAffordanceViewLayout") ?: return@after + right.visibility = View.GONE } - } else if (isMiuiVersion(14f) && isAndroidVersion(34)) { - newClass!!.methodFinder().filterByName("onFinishInflate") - .single().createHook { - after { - val right = - ObjectUtils.getObjectOrNullAs(it.thisObject, "mRightAffordanceViewLayout") ?: return@after - right.visibility = View.GONE - } - } - } else { - oldClass!!.methodFinder().filterByName("onFinishInflate") - .single().createHook { - after { - val right = - ObjectUtils.getObjectOrNullAs(it.thisObject, "mRightAffordanceViewLayout") ?: return@after - right.visibility = View.GONE - } - } } // 屏蔽滑动撞墙动画 diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveSmartScreen.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveSmartScreen.kt index 148d63501..a60ac521d 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveSmartScreen.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/lockscreen/RemoveSmartScreen.kt @@ -30,23 +30,16 @@ import com.sevtinge.hyperceiler.utils.devicesdk.isMoreHyperOSVersion object RemoveSmartScreen : BaseHook() { override fun init() { - if (isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)) { - loadClassOrNull("com.android.keyguard.injector.KeyguardBottomAreaInjector")!!.methodFinder() - .filterByName("updateIcons") - .single().createHook { - after { - val left = - ObjectUtils.getObjectOrNullAs(it.thisObject, "mLeftAffordanceViewLayout") ?: return@after - left.visibility = View.GONE - } + loadClassOrNull("com.android.keyguard.injector.KeyguardBottomAreaInjector")!!.methodFinder() + .filterByName("updateIcons") + .single().createHook { + after { + val left = + ObjectUtils.getObjectOrNullAs(it.thisObject, "mLeftAffordanceViewLayout") ?: return@after + left.visibility = View.GONE } - } else { - loadClassOrNull("com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer")!!.methodFinder() - .filterByName("inflateLeftView") - .single().createHook { - returnConstant(null) - } - } + } + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/navigation/RotationButton.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/navigation/RotationButton.java index c31bf3223..033058078 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/navigation/RotationButton.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/navigation/RotationButton.java @@ -43,67 +43,36 @@ public class RotationButton extends BaseHook { boolean isListen = false; - boolean isHyper = false; boolean enable = mPrefsMap.getStringAsInt("system_framework_other_rotation_button_int", 0) != 1; @Override public void init() throws NoSuchMethodException { - isHyper = SystemSDKKt.isMoreHyperOSVersion(1f); - if (!isHyper) - findAndHookConstructor("com.android.systemui.navigationbar.NavigationBarView", - Context.class, AttributeSet.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) { - if (!enable) return; - Context mContext = (Context) param.args[0]; - if (!isListen) { - if (mContext == null) { - logE(TAG, "context can't is null!"); - return; - } - ContentObserver contentObserver = new ContentObserver(new Handler(mContext.getMainLooper())) { - @Override - public void onChange(boolean selfChange, @Nullable Uri uri) { - boolean isShow = getBoolean(mContext); - int rotation = getInt(mContext); - Object mRotationButtonController = XposedHelpers.getObjectField(param.thisObject, "mRotationButtonController"); - XposedHelpers.callMethod(mRotationButtonController, "onRotationProposal", rotation, isShow); - } - }; - mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor("rotation_button_data"), - false, contentObserver); - isListen = true; + hookAllConstructors("com.android.systemui.navigationbar.NavigationBar", + new MethodHook() { + @Override + protected void after(MethodHookParam param) { + if (!enable) return; + Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); + if (!isListen) { + if (mContext == null) { + logE(TAG, "context can't is null!"); + return; } - } - } - ); - else - hookAllConstructors("com.android.systemui.navigationbar.NavigationBar", - new MethodHook() { - @Override - protected void after(MethodHookParam param) { - if (!enable) return; - Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); - if (!isListen) { - if (mContext == null) { - logE(TAG, "context can't is null!"); - return; + ContentObserver contentObserver = new ContentObserver(new Handler(mContext.getMainLooper())) { + @Override + public void onChange(boolean selfChange, @Nullable Uri uri) { + boolean isShow = getBoolean(mContext); + int rotation = getInt(mContext); + XposedHelpers.callMethod(param.thisObject, "onRotationProposal", rotation, isShow); } - ContentObserver contentObserver = new ContentObserver(new Handler(mContext.getMainLooper())) { - @Override - public void onChange(boolean selfChange, @Nullable Uri uri) { - boolean isShow = getBoolean(mContext); - int rotation = getInt(mContext); - XposedHelpers.callMethod(param.thisObject, "onRotationProposal", rotation, isShow); - } - }; - mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor("rotation_button_data"), - false, contentObserver); - isListen = true; - } + }; + mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor("rotation_button_data"), + false, contentObserver); + isListen = true; } } - ); + } + ); try { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/HideMiPlayEntry.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/HideMiPlayEntry.java deleted file mode 100644 index 2bd88008f..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/HideMiPlayEntry.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.plugin; - -import static com.sevtinge.hyperceiler.module.base.BaseHook.mPrefsMap; - -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedHelpers; - -public class HideMiPlayEntry { - public static void initHideMiPlayEntry(ClassLoader classLoader) { - if (mPrefsMap.getStringAsInt("system_ui_control_center_mi_play_entry", 0) == 1) { - XposedHelpers.findAndHookMethod("miui.systemui.controlcenter.panel.main.external.MiPlayEntryController", classLoader, "available", boolean.class, XC_MethodReplacement.returnConstant(true)); - } else if (mPrefsMap.getStringAsInt("system_ui_control_center_mi_play_entry", 0) == 2) { - XposedHelpers.findAndHookMethod("miui.systemui.controlcenter.panel.main.external.MiPlayEntryController", classLoader, "available", boolean.class, XC_MethodReplacement.returnConstant(false)); - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/HideMiSmartHubEntry.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/HideMiSmartHubEntry.java deleted file mode 100644 index 8506cb32a..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/HideMiSmartHubEntry.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.plugin; - -import static com.sevtinge.hyperceiler.module.base.BaseHook.mPrefsMap; - -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedHelpers; - -public class HideMiSmartHubEntry { - public static void initHideMiSmartHubEntry(ClassLoader classLoader) { - if (mPrefsMap.getStringAsInt("system_ui_control_center_mi_smart_hub_entry", 0) == 1) { - XposedHelpers.findAndHookMethod("miui.systemui.controlcenter.panel.main.external.MiSmartHubEntryController", classLoader, "available", boolean.class, XC_MethodReplacement.returnConstant(true)); - } else if (mPrefsMap.getStringAsInt("system_ui_control_center_mi_smart_hub_entry", 0) == 2) { - XposedHelpers.findAndHookMethod("miui.systemui.controlcenter.panel.main.external.MiSmartHubEntryController", classLoader, "available", boolean.class, XC_MethodReplacement.returnConstant(false)); - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/PluginHelper.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/PluginHelper.java deleted file mode 100644 index 538a3f326..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/plugin/PluginHelper.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.hook.systemui.plugin; - -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import android.content.pm.ApplicationInfo; -import android.text.TextUtils; - -import com.sevtinge.hyperceiler.module.base.BaseHook; -import com.sevtinge.hyperceiler.module.hook.systemui.NotificationVolumeSeparateSlider; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.BluetoothTileStyle; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGrid; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CCGridForHyperOS; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.CustomCardTiles; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.NotificationWeatherNew; -import com.sevtinge.hyperceiler.module.hook.systemui.controlcenter.QSColor; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class PluginHelper extends BaseHook { - - private static ClassLoader pluginLoader = null; - - private static ApplicationInfo appInfo = null; - - @Override - public void init() { - String pluginLoaderClass = "com.android.systemui.shared.plugins.PluginInstance$Factory"; - hookAllMethods(pluginLoaderClass, "getClassLoader", new MethodHook() { - private boolean isHooked = false; - - @Override - protected void after(MethodHookParam param) { - appInfo = (ApplicationInfo) param.args[0]; - - if (appInfo != null) { - if ("miui.systemui.plugin".equals(appInfo.packageName) && !isHooked) { - if (pluginLoader == null) pluginLoader = (ClassLoader) param.getResult(); - isHooked = true; - setClassLoader(pluginLoader); - logW(TAG, "Get ClassLoader: " + pluginLoader); - } else { - if (!isHooked) logW(TAG, "Get classloader miui.systemui.plugin error"); - } - } else logE(TAG, "AppInfo is null"); - } - }); - } - - public void setClassLoader(ClassLoader classLoader) { - if (mPrefsMap.getBoolean("system_ui_volume_timer")) - VolumeTimerValuesHook.initVolumeTimerValuesHook(classLoader); - if (mPrefsMap.getBoolean("system_ui_control_center_hide_edit_botton")) - HideEditButton.initHideEditButton(classLoader); - if (mPrefsMap.getBoolean("system_ui_plugin_enable_volume_blur")) - EnableVolumeBlur.initEnableVolumeBlur(classLoader); - if (mPrefsMap.getStringAsInt("system_ui_control_center_mi_smart_hub_entry", 0) != 0) - HideMiSmartHubEntry.initHideMiSmartHubEntry(classLoader); - if (mPrefsMap.getBoolean("system_ui_control_center_show_weather")) - NotificationWeatherNew.mainPanelHeader(classLoader); - if (mPrefsMap.getStringAsInt("system_ui_control_center_mi_play_entry", 0) != 0) - HideMiPlayEntry.initHideMiPlayEntry(classLoader); - if (mPrefsMap.getStringAsInt("system_ui_control_center_device_ctrl_entry", 0) != 0) - HideDeviceControlEntry.initHideDeviceControlEntry(classLoader); - if (mPrefsMap.getStringAsInt("system_ui_control_center_cc_bluetooth_tile_style", 1) > 1) - BluetoothTileStyle.initHideDeviceControlEntry(classLoader); - if (mPrefsMap.getBoolean("system_framework_volume_separate_control") && mPrefsMap.getBoolean("system_framework_volume_separate_slider")) - NotificationVolumeSeparateSlider.initHideDeviceControlEntry(classLoader); - if (isMoreHyperOSVersion(1f) && mPrefsMap.getBoolean("system_ui_control_center_rounded_rect")) - CCGridForHyperOS.initCCGridForHyperOS(classLoader); - if (mPrefsMap.getBoolean("system_cc_volume_showpct_title")) - NewShowVolumePct.initLoader(classLoader); // 声音百分比 - if ((mPrefsMap.getInt("system_control_center_cc_rows", 4) > 4 || - mPrefsMap.getInt("system_control_center_cc_columns", 4) > 4 || - mPrefsMap.getBoolean("system_ui_control_center_rounded_rect") || - mPrefsMap.getBoolean("system_control_center_qs_tile_label")) && !isMoreHyperOSVersion(1f)) { - CCGrid.loadCCGrid(classLoader); - } - if (mPrefsMap.getBoolean("system_ui_control_center_qs_open_color") || - mPrefsMap.getBoolean("system_ui_control_center_qs_big_open_color")) - QSColor.pluginHook(classLoader); - List mCardStyleTiles = getTileList(); - if (mPrefsMap.getBoolean("systemui_plugin_card_tiles_enabled") && !mPrefsMap.getString("systemui_plugin_card_tiles", "").isEmpty()) { - CustomCardTiles.initCustomCardTiles(classLoader, mCardStyleTiles); - } - if (mPrefsMap.getStringAsInt("system_ui_control_center_hide_operator", 0) == 3) - ShowDeviceName.initShowDeviceName(classLoader); - if (mPrefsMap.getBoolean("system_ui_control_center_disable_device_managed")) - DisableDeviceManagedNew.initDisableDeviceManaged(classLoader); - } - - private static List getTileList() { - String cardTiles = mPrefsMap.getString("systemui_plugin_card_tiles", "").replace("List_", ""); - return TextUtils.isEmpty(cardTiles.replace("List_", "")) ? new ArrayList<>() : Arrays.asList(cardTiles.split("\\|")); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/NotificationIconColumns.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/NotificationIconColumns.java index af8928c5f..1950a4b69 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/NotificationIconColumns.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/NotificationIconColumns.java @@ -19,7 +19,6 @@ package com.sevtinge.hyperceiler.module.hook.systemui.statusbar; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; import android.content.ContentResolver; import android.content.Context; @@ -42,16 +41,8 @@ public class NotificationIconColumns extends BaseHook { @Override public void init() { - int maxDotsNum = mPrefsMap.getInt("system_ui_status_bar_notification_dots_maximum", 3); - int maxIconsNum = mPrefsMap.getInt("system_ui_status_bar_notification_icon_maximum", - (isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)) ? 1 : 3); - if (isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)) { - mHyperOS(maxIconsNum); - } else if (isMoreAndroidVersion(34)) { - mAndroidU(maxIconsNum, maxDotsNum); - } else { - mAndroidS(maxIconsNum, maxDotsNum); - } + int maxIconsNum = mPrefsMap.getInt("system_ui_status_bar_notification_icon_maximum", 1); + mHyperOS(maxIconsNum); } public void mHyperOS(int maxIconsNum) { @@ -120,111 +111,6 @@ protected void before(MethodHookParam param) { } } - public void mAndroidU(int maxIconsNum, int maxDotsNum) { - hookAllConstructors("com.android.systemui.statusbar.policy.NotificationIconObserver", - new MethodHook() { - @Override - protected void after(MethodHookParam param) { - mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); - mCurrentUserId = (int) XposedHelpers.getObjectField(param.thisObject, "mCurrentUserId"); - mShowNotificationIcons = getSettings(mContext, mCurrentUserId) == 1; - listening(mContext); - } - } - ); - - findAndHookMethod("com.android.systemui.statusbar.policy.NotificationIconObserver$2", - "onChange", boolean.class, - new MethodHook() { - @Override - protected void after(MethodHookParam param) { - if (mShowNotificationIcons) { - XposedHelpers.setObjectField(param.thisObject, "mMaxDots", maxDotsNum); - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", maxIconsNum); - XposedHelpers.setObjectField(param.thisObject, "mMaxIconsOnLockscreen", maxIconsNum); - } else { - XposedHelpers.setObjectField(param.thisObject, "mMaxDots", 0); - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", 0); - XposedHelpers.setObjectField(param.thisObject, "mMaxIconsOnLockscreen", 0); - } - } - } - ); - - findAndHookMethod("com.android.systemui.statusbar.policy.NotificationIconObserver$1", - "onUserChanged", int.class, Context.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - mCurrentUserId = (int) param.args[0]; - } - } - ); - - findAndHookMethod("com.android.systemui.statusbar.phone.NotificationIconContainer", - "calculateIconXTranslations", - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (mShowNotificationIcons) { - XposedHelpers.setObjectField(param.thisObject, "mMaxDots", maxDotsNum); - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", maxIconsNum); - XposedHelpers.setObjectField(param.thisObject, "mIsStaticLayout", true); - } else { - XposedHelpers.setObjectField(param.thisObject, "mMaxDots", 0); - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", 0); - } - } - } - ); - - hookAllConstructors("com.android.systemui.statusbar.phone.NotificationIconAreaController", - new MethodHook() { - @Override - protected void after(MethodHookParam param) { - if (mShowNotificationIcons) { - XposedHelpers.setObjectField(param.thisObject, "mMaxDots", maxDotsNum); - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", maxIconsNum); - XposedHelpers.setObjectField(param.thisObject, "mMaxIconsOnLockscreen", maxIconsNum); - } else { - XposedHelpers.setObjectField(param.thisObject, "mMaxDots", 0); - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", 0); - XposedHelpers.setObjectField(param.thisObject, "mMaxIconsOnLockscreen", 0); - } - } - } - ); - - findAndHookMethod("com.android.systemui.statusbar.phone.NotificationIconContainer", - "onMeasure", int.class, int.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (mShowNotificationIcons) { - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", maxIconsNum); - XposedHelpers.setObjectField(param.thisObject, "mIsStaticLayout", true); - } else { - XposedHelpers.setObjectField(param.thisObject, "mMaxStaticIcons", 0); - } - } - } - ); - - findAndHookMethod("com.android.systemui.statusbar.phone.NotificationIconContainer", - "calculateWidthFor", float.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (mShowNotificationIcons) { - XposedHelpers.setObjectField(param.thisObject, "mMaxIconsOnLockscreen", maxIconsNum); - } else { - XposedHelpers.setObjectField(param.thisObject, "mMaxIconsOnLockscreen", 0); - } - } - } - ); - } - public void listening(Context context) { ContentObserver contentObserver = new ContentObserver(new Handler(context.getMainLooper())) { @Override @@ -252,26 +138,4 @@ public int getSettings(Context context, int mCurrentUserId) { return -1; } } - - public void mAndroidS(int maxIconsNum, int maxDotsNum) { - findAndHookMethod("com.android.systemui.statusbar.phone.NotificationIconContainer", - "miuiShowNotificationIcons", boolean.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if ((boolean) param.args[0]) { - XposedHelpers.setObjectField(param.thisObject, "MAX_DOTS", maxDotsNum); - XposedHelpers.setObjectField(param.thisObject, "MAX_STATIC_ICONS", maxIconsNum); - XposedHelpers.setObjectField(param.thisObject, "MAX_ICONS_ON_LOCKSCREEN", maxIconsNum); - } else { - XposedHelpers.setObjectField(param.thisObject, "MAX_DOTS", 0); - XposedHelpers.setObjectField(param.thisObject, "MAX_STATIC_ICONS", 0); - XposedHelpers.setObjectField(param.thisObject, "MAX_ICONS_ON_LOCKSCREEN", 0); - } - XposedHelpers.callMethod(param.thisObject, "updateState"); - param.setResult(null); - } - } - ); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/SelectiveHideIconForAlarmClock.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/SelectiveHideIconForAlarmClock.java index b2bd6128d..67efa2824 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/SelectiveHideIconForAlarmClock.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/SelectiveHideIconForAlarmClock.java @@ -18,12 +18,6 @@ */ package com.sevtinge.hyperceiler.module.hook.systemui.statusbar; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMiuiVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreMiuiVersion; - import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; @@ -98,17 +92,6 @@ protected void after(MethodHookParam param) throws Throwable { param.setResult(null); } }); - - if (isAndroidVersion(33) && !isMoreHyperOSVersion(1f)) { - findAndHookMethod(mMiuiPhoneStatusBarPolicy, "onMiuiAlarmChanged", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - lastState = (boolean) XposedHelpers.getObjectField(param.thisObject, "mHasAlarm"); - updateAlarmVisibility(param.thisObject, lastState); - param.setResult(null); - } - }); - } } private void updateAlarmVisibility(Object thisObject, boolean state) { @@ -134,10 +117,6 @@ private void updateAlarmVisibility(Object thisObject, boolean state) { float diffHours = (diffMSec - 59 * 1000) / (1000f * 60f * 60f); boolean vis = diffHours <= mPrefsMap.getInt("system_ui_status_bar_icon_alarm_clock_n", 0); XposedHelpers.callMethod(mIconController, "setIconVisibility", "alarm_clock", vis); - if (!isMoreHyperOSVersion(1f)) { - mIconController = XposedHelpers.getObjectField(thisObject, "miuiDripLeftStatusBarIconController"); - XposedHelpers.callMethod(mIconController, "setIconVisibility", "alarm_clock", vis); - } logI(TAG, this.lpparam.packageName, "Now is " + diffHours + "min remain, show when " + vis + "min remain."); } catch (Throwable t) { logE(TAG, this.lpparam.packageName, "updateAlarmVisibility failed", t); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/StatusBarClockNew.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/StatusBarClockNew.kt index 78463b800..1ac3bdba3 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/StatusBarClockNew.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/StatusBarClockNew.kt @@ -289,11 +289,7 @@ object StatusBarClockNew : BaseHook() { val mMiuiStatusBarClockController = textV.getObjectField("mMiuiStatusBarClockController") val mCalendar = - if (isMoreAndroidVersion(34)) { - mMiuiStatusBarClockController?.getObjectField("mCalendar") - } else { - mMiuiStatusBarClockController?.callMethod("getCalendar") - } + mMiuiStatusBarClockController?.getObjectField("mCalendar") if (mCalendar == null) return val sClockName = buildFormatString(getFormatS, getFormatN, getClockStyle) val (textSb, formatSb) = when (name) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/TimeCustomization.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/TimeCustomization.kt deleted file mode 100644 index a74bb53ec..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/TimeCustomization.kt +++ /dev/null @@ -1,367 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock - -import android.annotation.* -import android.content.* -import android.os.* -import android.provider.* -import android.util.* -import android.widget.* -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.ConstructorFinder.`-Static`.constructorFinder -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.utils.* -import com.sevtinge.hyperceiler.utils.devicesdk.* -import java.lang.reflect.* -import java.text.* -import java.util.* - -object TimeCustomization : BaseHook() { - // 预设模式 - private val getMode = mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) - private val getClockSize = mPrefsMap.getInt("system_ui_statusbar_clock_size", 0) - private val getClockDoubleSize = mPrefsMap.getInt("system_ui_statusbar_clock_double_size", 0) - private val isYear = mPrefsMap.getBoolean("system_ui_statusbar_clock_year") - private val isMonth = mPrefsMap.getBoolean("system_ui_statusbar_clock_month") - private val isDay = mPrefsMap.getBoolean("system_ui_statusbar_clock_date") - private val isWeek = mPrefsMap.getBoolean("system_ui_statusbar_clock_week") - private val isHideSpace = mPrefsMap.getBoolean("system_ui_statusbar_clock_hide_space") - private val isDoubleLine = mPrefsMap.getBoolean("system_ui_statusbar_clock_double") - private val isSecond = mPrefsMap.getBoolean("system_ui_statusbar_clock_second") - private val isDoubleHour = mPrefsMap.getBoolean("system_ui_statusbar_clock_hour_cn") - private val isPeriod = mPrefsMap.getBoolean("system_ui_statusbar_clock_period") - - // 极客模式 - private val getGeekClockSize = mPrefsMap.getInt("system_ui_statusbar_clock_size_geek", 0) - private val getGeekFormat = mPrefsMap.getString("system_ui_statusbar_clock_editor", "HH:mm:ss") - - private val mClockClass by lazy { - loadClass("com.android.systemui.statusbar.views.MiuiClock") - } - - private lateinit var nowTime: Date - private var str = "" - - // 在这暂时画个饼,后面重写一下 HyperOS 的逻辑(适配假时钟过渡动画) - @SuppressLint("SetTextI18n") - override fun init() { - when (getMode) { - // 预设模式 - 1 -> { - var c: Context? = null - mClockClass.constructorFinder() - .filterByParamCount(3) - .filterByParamTypes { - it[0] == Context::class.java - }.first().createHook { - after { - try { - c = it.args[0] as Context - val textV = it.thisObject as TextView - if (textV.resources.getResourceEntryName(textV.id) != "clock") return@after - textV.isSingleLine = false - if (isDoubleLine) { - str = "\n" - var clockDoubleLineSize = 7F - if (getClockDoubleSize != 0) { - clockDoubleLineSize = getClockDoubleSize.toFloat() - } - textV.setTextSize( - TypedValue.COMPLEX_UNIT_DIP, - clockDoubleLineSize - ) - } else { - if (getClockSize != 0) { - val clockSize = getClockSize.toFloat() - textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clockSize) - } - } - val d: Method = textV.javaClass.getDeclaredMethod("updateTime") - val r = Runnable { - d.isAccessible = true - d.invoke(textV) - } - - class T : TimerTask() { - override fun run() { - Handler(textV.context.mainLooper).post(r) - } - } - Timer().schedule( - T(), 1000 - System.currentTimeMillis() % 1000, 1000 - ) - } catch (_: Exception) { - } - } - } - - mClockClass.methodFinder() - .filterByName("updateTime") - .single().createHook { - after { - 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 - ) - val is24 = t == "24" - nowTime = Calendar.getInstance().time - textV.text = getDate(c!!) + str + getTime(c!!, is24) - } - } catch (_: Exception) { - } - } - } - } - // 极客模式 - 2 -> { - var c: Context? = null - - mClockClass.constructorFinder() - .filterByParamCount(3) - .filterByParamTypes { - it[0] == Context::class.java - }.first().createHook { - after { - try { - c = it.args[0] as Context - val textV = it.thisObject as TextView - if (textV.resources.getResourceEntryName(textV.id) != "clock") return@after - textV.isSingleLine = false - if (getGeekClockSize != 0) { - val clockSize = getGeekClockSize.toFloat() - textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clockSize) - } - - val d: Method = textV.javaClass.getDeclaredMethod("updateTime") - val r = Runnable { - d.isAccessible = true - d.invoke(textV) - } - - class T : TimerTask() { - override fun run() { - Handler(textV.context.mainLooper).post(r) - } - } - Timer().schedule( - T(), 1000 - System.currentTimeMillis() % 1000, 1000 - ) - } catch (_: Exception) { - } - } - } - - mClockClass.methodFinder() - .filterByName("updateTime") - .single().createHook { - before { - try { - val textV = it.thisObject as TextView - if (textV.resources.getResourceEntryName(textV.id) == "clock") { - setClock(c, textV) - it.result = null - } - } catch (_: Exception) { - } - } - } - } - } - } - - private fun setClock(c: Context?, textV: TextView) { - val mMiuiStatusBarClockController = - textV.getObjectField("mMiuiStatusBarClockController") - val mCalendar = - if (isMoreAndroidVersion(34)) { - mMiuiStatusBarClockController?.getObjectField("mCalendar") - } else { - mMiuiStatusBarClockController?.callMethod("getCalendar") - } - mCalendar?.callMethod( - "setTimeInMillis", - System.currentTimeMillis() - ) - val textSb = StringBuilder() - val formatSb = StringBuilder(getGeekFormat.toString()) - mCalendar?.callMethod("format", c, textSb, formatSb) - textV.text = textSb.toString() - } - - @SuppressLint("SimpleDateFormat") - private fun getDate(context: Context): String { - var datePattern = "" - val isZh = isZh(context) - - if (isYear) { - if (isZh) { - datePattern += "YY年" - } else { - datePattern += "YY" - if (isMonth || isDay) datePattern += "/" - } - } - if (isMonth) { - if (isZh) { - datePattern += "M月" - } else { - datePattern += "M" - if (isDay) datePattern += "/" - } - } - if (isDay) { - datePattern += if (isZh) { - "d日" - } else { - "d" - } - } - if (isWeek) { - if (!isHideSpace) datePattern = "$datePattern " - datePattern += "E" - if (!isDoubleLine) { - if (!isHideSpace) datePattern = "$datePattern " - } - } - datePattern = SimpleDateFormat(datePattern).format(nowTime) - return datePattern - } - - @SuppressLint("SimpleDateFormat") - private fun getTime(context: Context, t: Boolean): String { - var timePattern = "" - val isZh = isZh(context) - timePattern += if (t) "HH:mm" else "h:mm" - if (isSecond) timePattern += ":ss" - timePattern = SimpleDateFormat(timePattern).format(nowTime) - if (isZh) timePattern = getPeriod(isZh) + timePattern else timePattern += getPeriod(isZh) - timePattern = getDoubleHour() + timePattern - return timePattern - } - - @SuppressLint("SimpleDateFormat") - private fun getPeriod(isZh: Boolean): String { - var period = "" - if (isPeriod) { - if (isZh) { - when (SimpleDateFormat("HH").format(nowTime)) { - "00", "01", "02", "03", "04", "05" -> { - period = "凌晨" - } - - "06", "07", "08", "09", "10", "11" -> { - period = "上午" - } - - "12" -> { - period = "中午" - } - - "13", "14", "15", "16", "17" -> { - period = "下午" - } - - "18" -> { - period = "傍晚" - } - - "19", "20", "21", "22", "23" -> { - period = "晚上" - } - } - } else { - period = SimpleDateFormat("a").format(nowTime) - if (!isHideSpace) { - period = " $period" - } - } - - } - return period - } - - @SuppressLint("SimpleDateFormat") - private fun getDoubleHour(): String { - var doubleHour = "" - if (isDoubleHour) { - when (SimpleDateFormat("HH").format(nowTime)) { - "23", "00" -> { - doubleHour = "子时" - } - - "01", "02" -> { - doubleHour = "丑时" - } - - "03", "04" -> { - doubleHour = "寅时" - } - - "05", "06" -> { - doubleHour = "卯时" - } - - "07", "08" -> { - doubleHour = "辰时" - } - - "09", "10" -> { - doubleHour = "巳时" - } - - "11", "12" -> { - doubleHour = "午时" - } - - "13", "14" -> { - doubleHour = "未时" - } - - "15", "16" -> { - doubleHour = "申时" - } - - "17", "18" -> { - doubleHour = "酉时" - } - - "19", "20" -> { - doubleHour = "戌时" - } - - "21", "22" -> { - doubleHour = "亥时" - } - } - if (!isHideSpace) { - doubleHour += " " - } - } - return doubleHour - } - - private fun isZh(context: Context): Boolean { - return context.resources.configuration.locales.get(0).language.endsWith("zh") - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/TimeStyle.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/TimeStyle.kt deleted file mode 100644 index 0f18f2e30..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/clock/TimeStyle.kt +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.clock - -import android.annotation.* -import android.graphics.* -import android.view.* -import android.widget.* -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.ConstructorFinder.`-Static`.constructorFinder -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.utils.devicesdk.DisplayUtils.* - -object TimeStyle : BaseHook() { - private val clockBold by lazy { - mPrefsMap.getBoolean("system_ui_statusbar_clock_bold") - } - private val getMode by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_clock_mode", 0) - } - private val isAlign by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_clock_double_mode", 0) - } - private val isGeekAlign by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_clock_double_mode_geek", 0) - } - private val verticalOffset by lazy { - mPrefsMap.getInt("system_ui_statusbar_clock_vertical_offset", 12) - } - private val isClockDouble by lazy { - mPrefsMap.getBoolean("system_ui_statusbar_clock_double") - } - private val lineSpacing by lazy { - mPrefsMap.getInt("system_ui_statusbar_clock_double_spacing_margin", 16) - } - private val lineSpacingGeek by lazy { - mPrefsMap.getInt("system_ui_statusbar_clock_size_geek_spacing_margin", 16) - } - private val fixedWidth by lazy { - mPrefsMap.getInt("system_ui_statusbar_clock_fixedcontent_width", 30) - } - - private var leftMargin = - mPrefsMap.getInt("system_ui_statusbar_clock_left_margin", 0) - private var rightMargin = - mPrefsMap.getInt("system_ui_statusbar_clock_right_margin", 0) - - private val mClockClass by lazy { - loadClass("com.android.systemui.statusbar.views.MiuiClock") - } - - @SuppressLint("RtlHardcoded", "DiscouragedApi") - override fun init() { - mClockClass.constructorFinder() - .filterByParamCount(3) - .first().createHook { - after { - try { - val textV = it.thisObject as TextView - - if (textV.resources.getResourceEntryName(textV.id) == "clock") { - // 时钟加粗 - if (clockBold) { - textV.typeface = Typeface.DEFAULT_BOLD - } - - // 时钟边距调整 - margin(textV) - - // 以下 Hook 需要启用自定义时钟指示器才能生效 - if (getMode != 0) { - val alignment = when (getMode) { - 1 -> isAlign - 2 -> isGeekAlign - else -> 0 - } - - textV.textAlignment = when (alignment) { - 1 -> View.TEXT_ALIGNMENT_CENTER - 2 -> View.TEXT_ALIGNMENT_TEXT_END - else -> View.TEXT_ALIGNMENT_TEXT_START - } - - // 双排时钟行间距调整 - if ((getMode == 1 && isClockDouble) || getMode == 2) { - textLineSpacing(textV) - } - - // 固定宽度 - if (fixedWidth > 30) { - textV.width = - (textV.resources.displayMetrics.density * fixedWidth).toInt() - } - } - - } - } catch (_: Exception) { - } - } - } - } - - private fun margin(id: TextView) { - val left = dp2px(leftMargin.toFloat()) - val right = dp2px(rightMargin.toFloat()) - var topMargin = 0 - if (verticalOffset != 12) { - topMargin = dp2px((verticalOffset - 12) * 0.5f) - } - id.setPaddingRelative(left, topMargin, right, 0) - } - - private fun textLineSpacing(id: TextView) { - when (getMode) { - 1 -> id.setLineSpacing(0f, lineSpacing * 0.05f) - 2 -> id.setLineSpacing(0f, lineSpacingGeek * 0.05f) - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/device/DisplayHardwareDetail.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/device/DisplayHardwareDetail.java deleted file mode 100644 index 4bc239d90..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/device/DisplayHardwareDetail.java +++ /dev/null @@ -1,557 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions - */ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.device; - -import static com.sevtinge.hyperceiler.utils.api.OldFunApisKt.isNewNetworkStyle; -import static com.sevtinge.hyperceiler.utils.devicesdk.DisplayUtils.dp2px; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; -import static de.robv.android.xposed.XposedHelpers.callMethod; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Typeface; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.os.PowerManager; -import android.util.TypedValue; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.module.base.BaseHook; -import com.sevtinge.hyperceiler.module.base.tool.ResourcesTool; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.RandomAccessFile; -import java.util.ArrayList; -import java.util.Locale; -import java.util.Objects; -import java.util.Properties; - -import de.robv.android.xposed.XposedHelpers; - -public class DisplayHardwareDetail extends BaseHook { - boolean showDeviceTemp; - boolean showBatteryDetail; - boolean isTempAtRight; - boolean isBatteryAtRight; - /*boolean hasRightIcon = false; - boolean hasLeftIcon = false;*/ - boolean powerAbs; - - Class mDependency; - Class mChargeUtils; - Class mIconManager; - Class mNetworkSpeedView; - Class mDarkIconDispatcher; - Class mStatusBarIconHolder; - Class mNetworkSpeedController; - Class mMiuiCollapsedStatusBarFragment; - - private static int mStatusbarTextIconLayoutResId; - private static final int textIconTagId = ResourcesTool.getFakeResId("text_icon_tag"); - private static final ArrayList mStatusbarTextIcons = new ArrayList<>(); - - private String getSlotNameByType(int mIconType) { - String slotName = ""; - if (mIconType == 91) { - slotName = "battery_detail"; - } else if (mIconType == 92) { - slotName = "device_temp"; - } - return slotName; - } - - static class TextIcon { - public final boolean atRight; - public final int iconType; - - public TextIcon(boolean mAtRight, int mIconType) { - atRight = mAtRight; - iconType = mIconType; - } - } - - static class TextIconInfo { - public boolean iconShow; - public int iconType; - public String iconText; - } - - @Override - public void init() { - showBatteryDetail = mPrefsMap.getBoolean("system_ui_statusbar_battery_enable"); // 电池相关 - showDeviceTemp = mPrefsMap.getBoolean("system_ui_statusbar_temp_enable"); // 温度相关 - - isTempAtRight = mPrefsMap.getBoolean("system_ui_statusbar_temp_right_show"); - isBatteryAtRight = mPrefsMap.getBoolean("system_ui_statusbar_battery_right_show"); - powerAbs = mPrefsMap.getBoolean("system_ui_statusbar_battery_power_abs"); - - if (isNewNetworkStyle()) { - mStatusbarTextIconLayoutResId = R.layout.statusbar_text_icon_new; - } else { - mStatusbarTextIconLayoutResId = R.layout.statusbar_text_icon; - } - - mDependency = findClassIfExists("com.android.systemui.Dependency"); - if (showBatteryDetail) { - if (isMoreAndroidVersion(34)) { - mChargeUtils = findClassIfExists("com.miui.charge.ChargeUtils"); - } else { - mChargeUtils = findClassIfExists("com.android.keyguard.charge.ChargeUtils"); - } - } else { - mChargeUtils = null; - } - mIconManager = findClassIfExists("com.android.systemui.statusbar.phone.StatusBarIconController$IconManager"); - mNetworkSpeedView = findClassIfExists("com.android.systemui.statusbar.views.NetworkSpeedView"); - mDarkIconDispatcher = findClassIfExists("com.android.systemui.plugins.DarkIconDispatcher"); - mStatusBarIconHolder = findClassIfExists("com.android.systemui.statusbar.phone.StatusBarIconHolder"); - mNetworkSpeedController = findClassIfExists("com.android.systemui.statusbar.policy.NetworkSpeedController"); - mMiuiCollapsedStatusBarFragment = findClassIfExists("com.android.systemui.statusbar.phone.MiuiCollapsedStatusBarFragment"); - - Class mFinalChargeUtils = mChargeUtils; - - ArrayList mTextIcons = new ArrayList<>(); - if (showBatteryDetail) { - mTextIcons.add(new TextIcon(isBatteryAtRight, 91)); - } - if (showDeviceTemp) { - mTextIcons.add(new TextIcon(isTempAtRight, 92)); - } - - boolean hasRightIcon = false; - boolean hasLeftIcon = false; - for (TextIcon ti : mTextIcons) { - if (ti.atRight) { - hasRightIcon = true; - } else { - hasLeftIcon = true; - } - } - - if (hasRightIcon) { - hookAllConstructors("com.android.systemui.statusbar.policy.NetworkSpeedController", lpparam.classLoader, new MethodHook() { - @Override - protected void after(MethodHookParam param) { - Object iconController = XposedHelpers.getObjectField(param.thisObject, "mStatusBarIconController"); - for (TextIcon ti : mTextIcons) { - if (ti.atRight) { - int slotIndex = (int) callMethod(iconController, "getSlotIndex", getSlotNameByType(ti.iconType)); - Object iconHolder = callMethod(iconController, "getIcon", slotIndex, 0); - if (iconHolder == null) { - iconHolder = XposedHelpers.newInstance(mStatusBarIconHolder); - XposedHelpers.setObjectField(iconHolder, "mType", ti.iconType); - callMethod(iconController, "setIcon", slotIndex, iconHolder); - } - } - } - } - }); - - hookAllMethods(mIconManager, "addHolder", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - if (param.args.length != 4) return; - Object iconHolder = param.args[3]; - int type = (int) callMethod(iconHolder, "getType"); - if (type == 91 || type == 92) { - Context mContext = (Context) XposedHelpers.getObjectField(param.thisObject, "mContext"); - LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) callMethod(param.thisObject, "onCreateLayoutParams"); - TextIcon createIcon = null; - for (TextIcon ti : mTextIcons) { - if (ti.iconType == type) { - createIcon = ti; - break; - } - } - View iconView = createStatusbarTextIcon(mContext, lp, createIcon); - int i = (int) param.args[0]; - ViewGroup mGroup = (ViewGroup) XposedHelpers.getObjectField(param.thisObject, "mGroup"); - mGroup.addView(iconView, i); - mStatusbarTextIcons.add(iconView); - param.setResult(iconView); - } - } - }); - } - - if (hasLeftIcon) { - findAndHookMethod(mMiuiCollapsedStatusBarFragment, "initMiuiViewsOnViewCreated", View.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) { - Context mContext = (Context) callMethod(param.thisObject, "getContext"); - Object DarkIconDispatcher = XposedHelpers.callStaticMethod(mDependency, "get", mDarkIconDispatcher); - View baseAnchor; - if (isNewNetworkStyle()) { - baseAnchor = (View) XposedHelpers.getObjectField(param.thisObject, "mClockView"); - } else { - baseAnchor = (View) XposedHelpers.getObjectField(param.thisObject, "mDripNetworkSpeedSplitter"); - } - ViewGroup mStatusBarLeftContainer = (ViewGroup) baseAnchor.getParent(); - int bvIndex = mStatusBarLeftContainer.indexOfChild(baseAnchor); - LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) baseAnchor.getLayoutParams(); - for (TextIcon ti : mTextIcons) { - if (!ti.atRight) { - View iconView = createStatusbarTextIcon(mContext, lp, ti); - mStatusBarLeftContainer.addView(iconView, bvIndex + 1); - mStatusbarTextIcons.add(iconView); - XposedHelpers.callMethod(DarkIconDispatcher, "addDarkReceiver", iconView); - } - } - } - }); - - findAndHookMethod(mMiuiCollapsedStatusBarFragment, "showSystemIconArea", boolean.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) { - for (View iconView : mStatusbarTextIcons) { - Object tagData = iconView.getTag(textIconTagId); - if (tagData != null) { - TextIcon ti = (TextIcon) tagData; - if (!ti.atRight) { - XposedHelpers.callMethod(iconView, "setVisibilityByController", true); - } - } - } - } - }); - - findAndHookMethod(mMiuiCollapsedStatusBarFragment, "hideSystemIconArea", boolean.class, new MethodHook() { - @Override - protected void after(MethodHookParam param) { - for (View iconView : mStatusbarTextIcons) { - Object tagData = iconView.getTag(textIconTagId); - if (tagData != null) { - TextIcon ti = (TextIcon) tagData; - if (!ti.atRight) { - XposedHelpers.callMethod(iconView, "setVisibilityByController", false); - } - } - } - } - }); - } - - findAndHookMethod(mNetworkSpeedView, "getSlot", new MethodHook() { - @Override - protected void before(MethodHookParam param) { - View nsView = (View) param.thisObject; - Object tagData = nsView.getTag(textIconTagId); - if (tagData != null) { - TextIcon ti = (TextIcon) tagData; - param.setResult(getSlotNameByType(ti.iconType)); - } - } - }); - - hookAllConstructors("com.android.systemui.statusbar.policy.NetworkSpeedController", lpparam.classLoader, new MethodHook() { - Handler mBgHandler; - - @Override - protected void after(MethodHookParam param) { - Context mContext = (Context) param.args[0]; - final Handler mHandler = new Handler(Looper.getMainLooper()) { - public void handleMessage(Message message) { - if (message.what == 100021) { - TextIconInfo tii = (TextIconInfo) message.obj; - for (View tv : mStatusbarTextIcons) { - Object tagData = tv.getTag(textIconTagId); - if (tagData != null) { - TextIcon ti = (TextIcon) tagData; - if (tii.iconType == ti.iconType) { - XposedHelpers.callMethod(tv, "setBlocked", !tii.iconShow); - if (tii.iconShow) { - if (isNewNetworkStyle()) { - XposedHelpers.callMethod(tv, "setNetworkSpeed", tii.iconText, ""); - } else { - XposedHelpers.callMethod(tv, "setNetworkSpeed", tii.iconText); - } - } - } - } - } - } - } - }; - mBgHandler = new Handler((Looper) param.args[1]) { - @SuppressLint("DefaultLocale") - public void handleMessage(@NonNull Message message) { - String subKey = ""; - if (message.what == 200021) { - String batteryInfo = ""; - String deviceInfo = ""; - boolean showBatteryInfo = showBatteryDetail; - if (showBatteryInfo && mPrefsMap.getBoolean("system_ui_statusbar_battery_only_changing_show") && mFinalChargeUtils != null) { - Object batteryStatus = getStaticObjectFieldSilently(mFinalChargeUtils, "sBatteryStatus"); - if (batteryStatus == null) { - showBatteryInfo = false; - } else { - showBatteryInfo = (boolean) XposedHelpers.callMethod(batteryStatus, "isCharging"); - } - } - if (showBatteryInfo || showDeviceTemp) { - Properties props = null; - String cpuProps = null; - PowerManager powerMgr = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); - boolean isScreenOn = powerMgr.isInteractive(); - if (isScreenOn) { - FileInputStream fis = null; - RandomAccessFile cpuReader = null; - try { - fis = new FileInputStream("/sys/class/power_supply/battery/uevent"); - props = new Properties(); - props.load(fis); - if (showDeviceTemp) { - cpuReader = new RandomAccessFile("/sys/devices/virtual/thermal/thermal_zone0/temp", "r"); - if (!Objects.equals(mPrefsMap.getString("system_ui_statusbar_temp_fix_cpu_get", "0"), "")) { - try { - cpuReader = new RandomAccessFile("/sys/devices/virtual/thermal/thermal_zone" + mPrefsMap.getString("system_ui_statusbar_temp_fix_cpu_get", "0") + "/temp", "r"); - } catch (FileNotFoundException e) { - logI(TAG, DisplayHardwareDetail.this.lpparam.packageName, "get /sys/devices/virtual/thermal/thermal_zone*/temp (" + mPrefsMap.getString("system_ui_statusbar_temp_fix_cpu_get", "0") + ") failed: " + e); - } - } - cpuProps = cpuReader.readLine(); - } - } catch (Throwable ignored) { - } finally { - try { - if (fis != null) { - fis.close(); - } - if (cpuReader != null) { - cpuReader.close(); - } - } catch (Throwable ignored) { - } - } - } - if (showBatteryInfo && props != null) { - String currVal; - int rawCurr = 0; - try { - rawCurr = -1 * Math.round(Integer.parseInt(props.getProperty("POWER_SUPPLY_CURRENT_NOW")) / 1000f);// 概率fc - } catch (NumberFormatException e) { - logE(TAG, DisplayHardwareDetail.this.lpparam.packageName, "get POWER_SUPPLY_CURRENT_NOW failed", e); - } - int currNow = rawCurr; - String preferred = "mA"; - if (mPrefsMap.getBoolean("system_ui_statusbar_battery_electric_current")) { // 电流始终显示正值 - rawCurr = Math.abs(rawCurr); - } - if (Math.abs(rawCurr) > 999) { - currVal = String.format("%.2f", rawCurr / 1000f); - preferred = "A"; - } else { - currVal = "" + rawCurr; - } - int opt = mPrefsMap.getStringAsInt("system_ui_statusbar_battery_show", 1); // 电池显示内容 - int hideUnit = mPrefsMap.getStringAsInt("system_ui_statusbar_battery_disable", 0); - String powerUnit = (hideUnit == 1 || hideUnit == 2) ? "" : "W"; - String currUnit = (hideUnit == 1 || hideUnit == 3) ? "" : preferred; - if (opt == 1) { - float voltVal = 0f; - String powerNow; - try { - powerNow = props.getProperty("POWER_SUPPLY_VOLTAGE_NOW"); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (powerNow != null) - voltVal = Integer.parseInt(powerNow) / 1000f / 1000f; - - float wattVal = voltVal * currNow / 1000; - if (powerAbs) { - wattVal = Math.abs(wattVal); - } - String simpleWatt = String.format(Locale.getDefault(), "%.2f", wattVal); - String splitChar = mPrefsMap.getBoolean("system_ui_statusbar_battery_line_show") - ? " " : "\n"; - batteryInfo = simpleWatt + powerUnit + splitChar + currVal + currUnit; - if (mPrefsMap.getBoolean("system_ui_statusbar_battery_opposite")) { - batteryInfo = currVal + currUnit + splitChar + simpleWatt + powerUnit; - } - } else if (opt == 2) { - float voltVal = 0f; - String powerNow; - try { - powerNow = props.getProperty("POWER_SUPPLY_VOLTAGE_NOW"); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (powerNow != null) - voltVal = Integer.parseInt(powerNow) / 1000f / 1000f; - - float wattVal = voltVal * currNow / 1000; - if (powerAbs) { - wattVal = Math.abs(wattVal); - } - String simpleWatt = String.format(Locale.getDefault(), "%.2f", wattVal); - batteryInfo = simpleWatt + powerUnit; - } else { - batteryInfo = currVal + currUnit; - } - } - if (showDeviceTemp && props != null && cpuProps != null) { - int batteryTempVal = 0; - String powerTempNow; - try { - powerTempNow = props.getProperty("POWER_SUPPLY_TEMP"); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (powerTempNow != null) - batteryTempVal = Integer.parseInt(powerTempNow); - int cpuTempVal = Integer.parseInt(cpuProps); - boolean DecimalPlacesOr = mPrefsMap.getBoolean("system_ui_statusbar_temp_decimal_places"); - String DecimalPlaces = DecimalPlacesOr ? "%.0f" : "%.1f"; - String simpleBatteryTemp = String.format(Locale.getDefault(), DecimalPlaces, batteryTempVal / 10f); - String simpleCpuTemp = String.format(Locale.getDefault(), DecimalPlaces, cpuTempVal / 1000f); - int opt = mPrefsMap.getStringAsInt("system_ui_statusbar_temp_show", 1); - boolean hideUnit = mPrefsMap.getBoolean("system_ui_statusbar_temp_disable"); - String tempUnit = hideUnit ? "" : "℃"; - if (opt == 1) { - String splitChar = mPrefsMap.getBoolean("system_ui_statusbar_temp_line_show") - ? " " : "\n"; - deviceInfo = simpleBatteryTemp + tempUnit + splitChar + simpleCpuTemp + tempUnit; - if (mPrefsMap.getBoolean("system_ui_statusbar_temp_opposite")) { - deviceInfo = simpleCpuTemp + tempUnit + splitChar + simpleBatteryTemp + tempUnit; - } - } else if (opt == 2) { - deviceInfo = simpleBatteryTemp + tempUnit; - } else { - deviceInfo = simpleCpuTemp + tempUnit; - } - } - } - if (showBatteryDetail) { - TextIconInfo tii = new TextIconInfo(); - tii.iconShow = showBatteryInfo; - tii.iconText = batteryInfo; - tii.iconType = 91; - subKey = "battery"; - mHandler.obtainMessage(100021, tii).sendToTarget(); - } - if (showDeviceTemp) { - TextIconInfo tii = new TextIconInfo(); - tii.iconShow = showDeviceTemp; - tii.iconText = deviceInfo; - tii.iconType = 92; - subKey = "temp"; - mHandler.obtainMessage(100021, tii).sendToTarget(); - } - } - mBgHandler.removeMessages(200021); - mBgHandler.sendEmptyMessageDelayed(200021, mPrefsMap.getInt("system_ui_statusbar_" + subKey + "_update_spacing", 2) * 1000L); - } - }; - mBgHandler.sendEmptyMessage(200021); - } - }); - } - - private static TextView getIconTextView(View iconView) { - if (isNewNetworkStyle()) { - return (TextView) XposedHelpers.getObjectField(iconView, "mNetworkSpeedNumberText"); - } - return (TextView) iconView; - } - - private static View createStatusbarTextIcon(Context mContext, LinearLayout.LayoutParams lp, TextIcon ti) { - View iconView = LayoutInflater.from(mContext).inflate(mStatusbarTextIconLayoutResId, null); - iconView.setTag(textIconTagId, ti); - if (!isNewNetworkStyle()) { - XposedHelpers.setObjectField(iconView, "mVisibilityByDisableInfo", 0); - } else { - View mNumber = iconView.findViewWithTag("network_speed_number"); - XposedHelpers.setObjectField(iconView, "mNetworkSpeedNumberText", mNumber); - View mUnit = iconView.findViewWithTag("network_speed_unit"); - XposedHelpers.setObjectField(iconView, "mNetworkSpeedUnitText", mUnit); - } - initStatusbarTextIcon(mContext, lp, ti, iconView); - return iconView; - } - - @SuppressLint("DiscouragedApi") - private static void initStatusbarTextIcon(Context mContext, LinearLayout.LayoutParams lp, TextIcon ti, View iconView) { - XposedHelpers.setObjectField(iconView, "mVisibleByController", true); - XposedHelpers.setObjectField(iconView, "mShown", true); - TextView iconTextView = getIconTextView(iconView); - Resources res = mContext.getResources(); - int styleId = res.getIdentifier("TextAppearance.StatusBar.Clock", "style", "com.android.systemui"); - iconTextView.setTextAppearance(styleId); - String subKey = ""; - if (ti.iconType == 91) { - subKey = "battery"; - } else if (ti.iconType == 92) { - subKey = "temp"; - } - float fontSize = mPrefsMap.getInt("system_ui_statusbar_" + subKey + "_size", 13); - int opt = mPrefsMap.getStringAsInt("system_ui_statusbar_" + subKey + "_show", 1); - if (!mPrefsMap.getBoolean("system_ui_statusbar_" + subKey + "_line_show") || mPrefsMap.getStringAsInt("system_ui_statusbar_" + subKey + "_show", 1) != 1) { - fontSize = (float) (fontSize * 0.5); - } - // logI(TAG, this.lpparam.packageName, "fontsize = " + fontSize); - int align = mPrefsMap.getStringAsInt("system_ui_status_bar_" + subKey + "_align", 1); - int fixedWidth = mPrefsMap.getInt("system_ui_statusbar_" + subKey + "_fixedcontent_width", 10); - int leftMargin = mPrefsMap.getInt("system_ui_statusbar_" + subKey + "_left_margin", 4); - int rightMargin = mPrefsMap.getInt("system_ui_statusbar_" + subKey + "_right_margin", 4); - int vertical = mPrefsMap.getInt("system_ui_statusbar_" + subKey + "_vertical_offset", 8); - boolean isSingleRow = mPrefsMap.getBoolean("system_ui_statusbar_" + subKey + "_line_show"); - boolean isFontBold = mPrefsMap.getBoolean("system_ui_statusbar_" + subKey + "_bold"); - - if (opt == 1 && !isSingleRow) { - iconTextView.setSingleLine(false); - iconTextView.setMaxLines(2); - iconTextView.setLineSpacing(0, fontSize > 8.5f ? 0.85f : 0.9f); - } - // 设置字体大小 - iconTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, fontSize); - // 设置字体是否加粗 - if (isFontBold) { - iconTextView.setTypeface(Typeface.DEFAULT_BOLD); - } - // 设置边距 - leftMargin = dp2px(leftMargin * 0.5f); - rightMargin = dp2px(rightMargin * 0.5f); - int topMargin = 0; - if (vertical != 8) { - topMargin = dp2px((vertical - 8) * 0.5f); - } - iconTextView.setPaddingRelative(leftMargin, topMargin, rightMargin, 0); - if (fixedWidth > 10) { - lp.width = dp2px(fixedWidth); - } - iconTextView.setLayoutParams(lp); - - switch (align) { - case 2 -> iconTextView.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START); - case 3 -> iconTextView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); - case 4 -> iconTextView.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_END); - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/BluetoothIcon.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/BluetoothIcon.java deleted file mode 100644 index 098037fb7..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/BluetoothIcon.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all; - -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isAndroidVersion; - -import com.sevtinge.hyperceiler.module.base.BaseHook; - -import de.robv.android.xposed.XposedHelpers; - -public class BluetoothIcon extends BaseHook { - - @Override - public void init() { - hookAllMethods("com.android.systemui.statusbar.phone.MiuiPhoneStatusBarPolicy", "updateBluetooth", new MethodHook() { - @Override - protected void after(MethodHookParam param) throws Throwable { - int opt = mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth", 0); - int opt_b = mPrefsMap.getStringAsInt("system_ui_status_bar_icon_bluetooth_battery", 0); - boolean isBluetoothConnected; - if (isAndroidVersion(34)) { - isBluetoothConnected = (int) XposedHelpers.getObjectField(XposedHelpers.getObjectField(param.thisObject, "mBluetooth"), "mConnectionState") == 2; - } else { - isBluetoothConnected = (boolean) XposedHelpers.callMethod(XposedHelpers.getObjectField(param.thisObject, "mBluetooth"), "isBluetoothConnected"); - } - Object mIconController = XposedHelpers.getObjectField(param.thisObject, "mIconController"); - if (opt == 2 || (opt == 3 && !isBluetoothConnected)) { - XposedHelpers.callMethod(mIconController, "setIconVisibility", "bluetooth", false); - } else if (opt == 1) { - XposedHelpers.callMethod(mIconController, "setIconVisibility", "bluetooth", true); - } - if (opt_b == 2 || (opt_b == 3 && !isBluetoothConnected)) { - XposedHelpers.callMethod(mIconController, "setIconVisibility", "bluetooth_handsfree_battery", false); - } else if (opt_b == 1) { - XposedHelpers.callMethod(mIconController, "setIconVisibility", "bluetooth_handsfree_battery", true); - } - } - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/HideBatteryIcon.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/HideBatteryIcon.kt index 16ad7059d..07a36619a 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/HideBatteryIcon.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/HideBatteryIcon.kt @@ -57,12 +57,9 @@ object HideBatteryIcon : BaseHook() { if (isMoreAndroidVersion(35)) { mBatteryMeterViewClass.methodFinder() .filterByName("updateAll\$1") - } else if (isAndroidVersion(34)) { - mBatteryMeterViewClass.methodFinder() - .filterByName("updateAll") } else { mBatteryMeterViewClass.methodFinder() - .filterByName("updateResources") + .filterByName("updateAll") }.single().createHook { after { param -> if (param.thisObject != null) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarIcon.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarIcon.java index eb6377a58..5912ce349 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarIcon.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarIcon.java @@ -31,50 +31,12 @@ public class StatusBarIcon extends BaseHook { @Override public void init() { - if (!isMoreHyperOSVersion(1f)) { - try { - if (!isNewNetworkStyle()) { - findClass("com.android.systemui.statusbar.phone.MiuiDripLeftStatusBarIconControllerImpl").getDeclaredMethod( - "setIconVisibility", String.class, boolean.class); - findAndHookMethod("com.android.systemui.statusbar.phone.MiuiDripLeftStatusBarIconControllerImpl", - "setIconVisibility", String.class, boolean.class, - new MethodHook() { - @Override - protected void before(MethodHookParam param) { - switch (checkSlot((String) param.args[0])) { - case 1 -> param.args[1] = true; - case 2 -> param.args[1] = false; - default -> { - } - } - } - } - ); - } - } catch (Throwable ignored) { - } - - findAndHookMethod("com.android.systemui.statusbar.phone.StatusBarIconControllerImpl", - "setIconVisibility", String.class, boolean.class, new MethodHook() { - @Override - protected void before(MethodHookParam param) { - switch (checkSlot((String) param.args[0])) { - case 1 -> param.args[1] = true; - case 2 -> param.args[1] = false; - default -> { - } - } - } - } - ); - } else { - // from XiaomiHelper with GPL3 - Class mMiuiIconManagerUtils = findClassIfExists("com.android.systemui.statusbar.phone.MiuiIconManagerUtils"); - List statusBarList = (List) XposedHelpers.getStaticObjectField(mMiuiIconManagerUtils, "RIGHT_BLOCK_LIST"); - List ctrlCenterList = (List) XposedHelpers.getStaticObjectField(mMiuiIconManagerUtils, "CONTROL_CENTER_BLOCK_LIST"); + // from XiaomiHelper with GPL3 + Class mMiuiIconManagerUtils = findClassIfExists("com.android.systemui.statusbar.phone.MiuiIconManagerUtils"); + List statusBarList = (List) XposedHelpers.getStaticObjectField(mMiuiIconManagerUtils, "RIGHT_BLOCK_LIST"); + List ctrlCenterList = (List) XposedHelpers.getStaticObjectField(mMiuiIconManagerUtils, "CONTROL_CENTER_BLOCK_LIST"); - hyperIconShowManager(statusBarList, ctrlCenterList, mMiuiIconManagerUtils); - } + hyperIconShowManager(statusBarList, ctrlCenterList, mMiuiIconManagerUtils); } private void hyperIconShowManager(List statusBarList, List ctrlCenterList, Class mMiuiIconManagerUtils) { @@ -134,60 +96,4 @@ private void setIcon(int value, String name, List statusBarList, List { - return vpn; - } - case "alarm_clock" -> { - return alarmClock; - } - case "nfc" -> { - return nfc; - } - case "zen" -> { - return zen; - } - case "volume" -> { - return volume; - } - case "no_sim" -> { - return no_sim; - } - case "wifi" -> { - return wifi; - } - case "wifi_slave" -> { - return wifi_slave; - } - case "airplane" -> { - return airplane; - } - case "location" -> { - return location; - } - case "hotspot" -> { - return hotspot; - } - case "headset" -> { - return headset; - } - default -> { - return -1; - } - } - } - } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarSimIcon.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarSimIcon.kt deleted file mode 100644 index e0610e0ff..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/all/StatusBarSimIcon.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.all - -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook - -object StatusBarSimIcon : BaseHook() { - private val card1 by lazy { - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_1") - } - private val card2 by lazy { - mPrefsMap.getBoolean("system_ui_status_bar_icon_mobile_network_hide_card_2") - } - - override fun init() { - loadClass("com.android.systemui.statusbar.phone.StatusBarSignalPolicy").methodFinder() - .filterByName("hasCorrectSubs") - .filterByParamTypes { - it[0] == MutableList::class.java - }.single().createHook { - before { - val list = it.args[0] as MutableList<*> - /* val size = list.size*/ - if (card2) { - list.removeAt(1) - } - if (card1) { - list.removeAt(0) - } - } - } - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/t/UseNewHD.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/t/UseNewHD.kt deleted file mode 100644 index 432825f64..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/icon/t/UseNewHD.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.icon.t - -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook - -object UseNewHD : BaseHook() { - // 仅供 Android 13 设备使用,部分未进版机型依旧不可用 - override fun init() { - runCatching { - loadClass("com.android.systemui.statusbar.policy.HDController").methodFinder() - .filterByName("isVisible") - .single().createHook { - returnConstant(true) - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/layout/StatusBarLayout.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/layout/StatusBarLayout.kt deleted file mode 100644 index 2e05d7220..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/layout/StatusBarLayout.kt +++ /dev/null @@ -1,572 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.layout - -import android.annotation.* -import android.app.* -import android.content.* -import android.content.res.* -import android.view.* -import android.widget.* -import androidx.constraintlayout.widget.* -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.utils.* -import com.sevtinge.hyperceiler.utils.devicesdk.DisplayUtils.* - -object StatusBarLayout : BaseHook() { - private val getMode = mPrefsMap.getStringAsInt("system_ui_statusbar_layout_mode", 0) - private val isCompatibilityMode = mPrefsMap.getBoolean("system_ui_statusbar_layout_compatibility_mode") - - private var statusBarLeft = 0 - private var statusBarTop = 0 - private var statusBarRight = 0 - private var statusBarBottom = 0 - - @SuppressLint("DiscouragedApi") - override fun init() { - val collapsedStatusBarFragmentClass = - loadClass("com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment") - val phoneStatusBarView = - loadClass("com.android.systemui.statusbar.phone.PhoneStatusBarView") - var mLeftLayout: LinearLayout? = null - var mRightLayout: LinearLayout? = null - var mCenterLayout: LinearLayout? - var statusBar: ViewGroup? = null - - // 判断屏幕状态更新布局 mode: 1正常布局 2居中布局 - fun updateLayout(context: Context, mode: Int) { - when (mode) { - 1 -> { - val mConfiguration: Configuration = context.resources.configuration - if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { // 横屏 - statusBar?.setPadding( - statusBarLeft, - statusBarTop, - statusBarRight, - statusBarBottom - ) - } - } - - 2 -> { - val mConfiguration: Configuration = context.resources.configuration - if (mConfiguration.orientation == Configuration.ORIENTATION_PORTRAIT) { // 横屏 - mLeftLayout?.setPadding(statusBarLeft, 0, 0, 0) - mRightLayout?.setPadding(0, 0, statusBarRight, 0) - statusBar?.setPadding(0, statusBarTop, 0, statusBarBottom) - } else { // 竖屏 - mLeftLayout?.setPadding(0, 0, 0, 0) - mRightLayout?.setPadding(0, 0, 0, 0) - } - } - } - } - - // 判断是否开启挖孔兼容模式 - if (isCompatibilityMode) { - loadClass("com.android.systemui.ScreenDecorations").methodFinder() - .filterByName("boundsFromDirection") - .filterByParamCount(3) - .filterStatic() - .single().createHook { - before { - it.args[1] = 0 - } - } - } - - // 修改对应布局 - when (getMode) { - // 默认 - 0 -> { - collapsedStatusBarFragmentClass.methodFinder() - .filterByName("onViewCreated") - .filterByParamCount(2) - .single().createHook { - after { param -> - val miuiPhoneStatusBarView = - param.thisObject.getObjectFieldAs("mStatusBar") - val context: Context = miuiPhoneStatusBarView.context - val res: Resources = miuiPhoneStatusBarView.resources - val statusBarId: Int = - res.getIdentifier("status_bar", "id", "com.android.systemui") - statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) - if (statusBar == null) return@after - - statusBarLeft = statusBar!!.paddingLeft - statusBarTop = statusBar!!.paddingTop - statusBarRight = statusBar!!.paddingRight - statusBarBottom = statusBar!!.paddingBottom - - if (isCompatibilityMode) { - /*val customLeftMargin = - mPrefsMap.getStringAsInt("status_bar_left_margin", 0) - if (customLeftMargin != 0) { - statusBarLeft = customLeftMargin - } - - val customRightMargin = - mPrefsMap.getStringAsInt("status_bar_right_margin", 0) - if (customRightMargin != 0) { - statusBarRight = customRightMargin - }*/ - updateLayout(context, 1) - } - } - } - - - // 兼容模式 - phoneStatusBarView.methodFinder() - .filterByName("updateLayoutForCutout") - .single().createHook { - after { - if (isCompatibilityMode) { - val context = (it.thisObject as ViewGroup).context - updateLayout(context, 1) - } - } - } - } - // 时钟居中 - 1 -> { - collapsedStatusBarFragmentClass.methodFinder() - .filterByName("onViewCreated") - .filterByParamCount(2) - .single().createHook { - after { param -> - val miuiPhoneStatusBarView = - param.thisObject.getObjectFieldAs("mStatusBar") - 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@after - val clock: TextView = miuiPhoneStatusBarView.findViewById(clockId) - val phoneStatusBarLeftContainer: ViewGroup = - miuiPhoneStatusBarView.findViewById( - phoneStatusBarLeftContainerId - ) - val notificationIconAreaInner: ViewGroup = - miuiPhoneStatusBarView.findViewById( - notificationIconAreaInnerId - ) - val systemIconArea: ViewGroup = - miuiPhoneStatusBarView.findViewById(systemIconAreaId) - - (clock.parent as ViewGroup).removeView(clock) - (phoneStatusBarLeftContainer.parent as ViewGroup).removeView( - phoneStatusBarLeftContainer - ) - (notificationIconAreaInner.parent as ViewGroup).removeView( - notificationIconAreaInner - ) - (systemIconArea.parent as ViewGroup).removeView(systemIconArea) - - val mConstraintLayout = ConstraintLayout(context).also { - it.layoutParams = ConstraintLayout.LayoutParams( - ConstraintLayout.LayoutParams.MATCH_PARENT, - ConstraintLayout.LayoutParams.MATCH_PARENT - ) - } - - mConstraintLayout.addView(notificationIconAreaInner) - - val fullscreenNotificationIconAreaLp = LinearLayout.LayoutParams( - ConstraintLayout.LayoutParams.MATCH_PARENT, - ConstraintLayout.LayoutParams.MATCH_PARENT - ) - - notificationIconAreaInner.layoutParams = - fullscreenNotificationIconAreaLp - - // 增加一个左对齐布局 - 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(mConstraintLayout) - - mCenterLayout!!.addView(clock) - mRightLayout!!.addView(systemIconArea) - statusBarContents.addView(mLeftLayout, 0) - statusBarContents.addView(mCenterLayout) - statusBarContents.addView(mRightLayout) - - statusBarLeft = statusBar!!.paddingLeft - statusBarTop = statusBar!!.paddingTop - statusBarRight = statusBar!!.paddingRight - statusBarBottom = statusBar!!.paddingBottom - - - if (isCompatibilityMode) { - /* val customLeftMargin = - mPrefsMap.getStringAsInt("status_bar_left_margin", 0) - if (customLeftMargin != 0) { - statusBarLeft = customLeftMargin - } - - val customRightMargin = - mPrefsMap.getStringAsInt("status_bar_right_margin", 0) - if (customRightMargin != 0) { - statusBarRight = customRightMargin - }*/ - updateLayout(context, 2) - } - } - } - - - phoneStatusBarView.methodFinder() - .filterByName("updateLayoutForCutout") - .single().createHook { - after { - if (mPrefsMap.getBoolean("layout_compatibility_mode")) { - val context = (it.thisObject as ViewGroup).context - updateLayout(context, 2) - } - } - } - } - // 时钟居右 - 2 -> { - collapsedStatusBarFragmentClass.methodFinder() - .filterByName("onViewCreated") - .filterByParamCount(2) - .single().createHook { - after { param -> - val miuiPhoneStatusBarView = - param.thisObject.getObjectFieldAs("mStatusBar") - val context: Context = miuiPhoneStatusBarView.context - val res: Resources = miuiPhoneStatusBarView.resources - - // 组件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") - - // 查找组件 - statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) - if (statusBar == null) return@after - 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(5f) - } - mRightLayout = LinearLayout(context).also { - it.layoutParams = rightLp - } - - // 添加布局与组件 - battery.addView(mRightLayout) - (clock.parent as ViewGroup).removeView(clock) - mRightLayout!!.addView(clock) - - statusBarLeft = statusBar!!.paddingLeft - statusBarTop = statusBar!!.paddingTop - statusBarRight = statusBar!!.paddingRight - statusBarBottom = statusBar!!.paddingBottom - - - if (isCompatibilityMode) { - /*val customLeftMargin = - mPrefsMap.getStringAsInt("status_bar_left_margin", 0) - if (customLeftMargin != 0) { - statusBarLeft = customLeftMargin - } - - val customRightMargin = - mPrefsMap.getStringAsInt("status_bar_right_margin", 0) - if (customRightMargin != 0) { - statusBarRight = customRightMargin - }*/ - updateLayout(context, 1) - } - } - } - - - // 兼容模式 - phoneStatusBarView.methodFinder() - .filterByName("updateLayoutForCutout") - .first().createHook { - after { - if (isCompatibilityMode) { - val context = (it.thisObject as ViewGroup).context - updateLayout(context, 1) - } - } - } - } - // 时钟居中+图标居左 - 3 -> { - collapsedStatusBarFragmentClass.methodFinder() - .filterByName("onViewCreated") - .filterByParamCount(2) - .single().createHook { - after { param -> - val miuiPhoneStatusBarView = - param.thisObject.getObjectFieldAs("mStatusBar") - 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" - ) - - statusBar = miuiPhoneStatusBarView.findViewById(statusBarId) - val statusBarContents: ViewGroup = - miuiPhoneStatusBarView.findViewById(statusBarContentsId) - if (statusBar == null) return@after - 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) - - (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 (isCompatibilityMode) { - /*val customLeftMargin = - mPrefsMap.getStringAsInt("status_bar_left_margin", 0) - if (customLeftMargin != 0) { - statusBarLeft = customLeftMargin - } - - val customRightMargin = - mPrefsMap.getStringAsInt("status_bar_right_margin", 0) - if (customRightMargin != 0) { - statusBarRight = customRightMargin - }*/ - updateLayout(context, 2) - } - } - } - // 兼容模式 - phoneStatusBarView.methodFinder() - .filterByName("updateLayoutForCutout") - .single().createHook { - after { - if (isCompatibilityMode) { - val context = (it.thisObject as ViewGroup).context - updateLayout(context, 2) - } - } - } - - // 解决重叠 - loadClass("com.android.systemui.statusbar.phone.MiuiCollapsedStatusBarFragment").methodFinder() - .filterByName("showClock") - .filterByParamTypes(Boolean::class.java) - .single().createHook { - after { - val miuiPhoneStatusBarView = - it.thisObject.getObjectFieldAs("mStatusBar") - val res = miuiPhoneStatusBarView.resources - val statusBarId = - res.getIdentifier("status_bar", "id", "com.android.systemui") - val statusBar1 = - miuiPhoneStatusBarView.findViewById(statusBarId) - // 非锁屏下整个状态栏布局 - val keyguardMgr = - statusBar1.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager - if (keyguardMgr.isKeyguardLocked) { - statusBar1!!.visibility = View.GONE - } else { - statusBar1!!.visibility = View.VISIBLE - } - } - } - - - // 修改图标的顺序 - /*findConstructor("com.android.systemui.statusbar.phone.StatusBarIconList") { - parameterCount == 1 - }.hookBefore { - - }*/ - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/model/MobileNetwork.java b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/model/MobileNetwork.java index 46def4989..a716ff2a2 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/model/MobileNetwork.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/model/MobileNetwork.java @@ -79,9 +79,7 @@ protected void after(MethodHookParam param) { @Override protected void before(MethodHookParam param) { int opt = mPrefsMap.getStringAsInt("system_ui_status_bar_icon_new_hd", 0); - if (opt > 0 && !isMoreHyperOSVersion(1f)) { - XposedHelpers.setBooleanField(param.thisObject, "mWifiAvailable", opt == 2); - } else if (opt == 2 && isMoreHyperOSVersion(1f)) { + if (opt == 2) { XposedHelpers.setBooleanField(param.thisObject, "mWifiAvailable", true); } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/NetworkSpeed.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/NetworkSpeed.kt deleted file mode 100644 index bf7c10a6c..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/NetworkSpeed.kt +++ /dev/null @@ -1,237 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old - -import android.annotation.* -import android.content.* -import android.net.* -import android.util.* -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.* -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.module.base.tool.OtherTool.* -import de.robv.android.xposed.* -import java.net.* -import kotlin.math.* - -object NetworkSpeed : BaseHook() { - private var measureTime: Long = 0 - private var newTxBytesFixed: Long = 0 - private var newRxBytesFixed: Long = 0 - private var txBytesTotal: Long = 0 - private var rxBytesTotal: Long = 0 - private var txSpeed: Long = 0 - private var rxSpeed: Long = 0 - - // 隐藏慢速 - private val hideLow by lazy { - mPrefsMap.getBoolean("system_ui_statusbar_network_speed_hide") - } - - // 网速均低于设定值隐藏 - private val allHideLow by lazy { - mPrefsMap.getBoolean("system_ui_statusbar_network_speed_hide_all") - } - - // 慢速水平 - private val lowLevel by lazy { - mPrefsMap.getInt("system_ui_statusbar_network_speed_hide_slow", 1) * 1024 - } - - // 交换图标与网速位置 - private val swapPlaces by lazy { - mPrefsMap.getBoolean("system_ui_statusbar_network_speed_swap_places") - } - - // 网速图标 - private val icons by lazy { - mPrefsMap.getString("system_ui_statusbar_network_speed_icon", "2").toInt() - } - - // 网速指示器样式 - private val networkStyle by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_network_speed_style", 0) - } - - private fun getTrafficBytes(): Pair { - var tx = -1L - var rx = -1L - try { - val list = NetworkInterface.getNetworkInterfaces() - while (list.hasMoreElements()) { - val iFace = list.nextElement() - if (iFace.isUp && !iFace.isVirtual && !iFace.isLoopback && !iFace.isPointToPoint && "" != iFace.name) { - tx += - XposedHelpers.callStaticMethod(TrafficStats::class.java, "getTxBytes", iFace.name) as Long - rx += - XposedHelpers.callStaticMethod(TrafficStats::class.java, "getRxBytes", iFace.name) as Long - } - } - } catch (t: Throwable) { - logE(TAG, this.lpparam.packageName, t) - tx = TrafficStats.getTotalTxBytes() - rx = TrafficStats.getTotalRxBytes() - } - return Pair(tx, rx) - } - - // 网速计算与隐藏相关 - @SuppressLint("DefaultLocale") - private fun humanReadableByteCount(ctx: Context, bytes: Long): String { - return try { - val modRes = getModuleRes(ctx) - val hideSecUnit = mPrefsMap.getBoolean("system_ui_statusbar_network_speed_sec_unit") - var unitSuffix = modRes.getString(R.string.system_ui_statusbar_network_speed_Bs) - if (hideSecUnit) unitSuffix = "" - var f = bytes / 1024.0f - var expIndex = 0 - if (f > 999.0f) { - expIndex = 1 - f /= 1024.0f - } - val pre = modRes.getString(R.string.system_ui_statusbar_network_speed_speedunits)[expIndex] - if (networkStyle == 2) { - (if (f < 100.0f) String.format("%.1f", f) else String.format("%.0f", f)) + "\n" + String.format("%s$unitSuffix", pre) - } else { - (if (f < 100.0f) String.format("%.1f", f) else String.format("%.0f", f)) + String.format("%s$unitSuffix", pre) - } - } catch (t: Throwable) { - logE(TAG, this.lpparam.packageName, t) - "" - } - } - - override fun init() { - // 双排网速相关 - val nscCls by lazy { - findClassIfExists("com.android.systemui.statusbar.policy.NetworkSpeedController", lpparam.classLoader) - } - - if (nscCls == null) { - logE( - TAG, - this.lpparam.packageName, - "DetailedNetSpeedHook: No NetworkSpeed view or controller" - ) - } else { - nscCls.methodFinder() - .filterByName("getTotalByte") - .single().createHook { - after { - val bytes = getTrafficBytes() - txBytesTotal = bytes.first - rxBytesTotal = bytes.second - measureTime = System.nanoTime() - } - } - - nscCls.methodFinder() - .filterByName("updateNetworkSpeed") - .single().createHook { - before { - var isConnected = false - val mContext = - XposedHelpers.getObjectField(it.thisObject, "mContext") as Context - val mConnectivityManager = - mContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - val nw = mConnectivityManager.activeNetwork - if (nw != null) { - val capabilities = mConnectivityManager.getNetworkCapabilities(nw) - if (capabilities != null && (!(! - capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && - !capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR))) - ) { - isConnected = true - } - } - if (isConnected) { - val nanoTime = System.nanoTime() - var newTime = nanoTime - measureTime - measureTime = nanoTime - if (newTime == 0L) newTime = (4 * 10.0.pow(9.0)).roundToLong() - val bytes = getTrafficBytes() - val newTxBytes = bytes.first - val newRxBytes = bytes.second - newTxBytesFixed = newTxBytes - txBytesTotal - newRxBytesFixed = newRxBytes - rxBytesTotal - if (newTxBytesFixed < 0 || txBytesTotal == 0L) newTxBytesFixed = 0 - if (newRxBytesFixed < 0 || rxBytesTotal == 0L) newRxBytesFixed = 0 - txSpeed = (newTxBytesFixed / (newTime / 10.0.pow(9.0))).roundToLong() - rxSpeed = (newRxBytesFixed / (newTime / 10.0.pow(9.0))).roundToLong() - txBytesTotal = newTxBytes - rxBytesTotal = newRxBytes - } else { - txSpeed = 0 - rxSpeed = 0 - } - } - } - - nscCls.methodFinder().filterByName("formatSpeed").filterByParamCount(2).single() - .createHook { - before { - // 计算网速方向的箭头 - val txArrow = when (icons) { - 2 -> if (txSpeed < lowLevel) "△" else "▲" - 3 -> if (txSpeed < lowLevel) " ▵" else " ▴" - 4 -> if (txSpeed < lowLevel) " ☖" else " ☗" - 5 -> if (txSpeed < lowLevel) "↑" else "↑" - 6 -> if (txSpeed < lowLevel) "⇧" else "⇧" - else -> "" - } - - val rxArrow = when (icons) { - 2 -> if (rxSpeed < lowLevel) "▽" else "▼" - 3 -> if (rxSpeed < lowLevel) " ▿" else " ▾" - 4 -> if (rxSpeed < lowLevel) " ⛉" else " ⛊" - 5 -> if (rxSpeed < lowLevel) "↓" else "↓" - 6 -> if (rxSpeed < lowLevel) "⇩" else "⇩" - else -> "" - } - - // 计算上行网速 - val tx = if (hideLow && !allHideLow && txSpeed < lowLevel) "" - else if (swapPlaces) "$txArrow${humanReadableByteCount(it.args[0] as Context, txSpeed)}" - else "${humanReadableByteCount(it.args[0] as Context, txSpeed)}$txArrow" - - // 计算下行网速 - val rx = if (hideLow && !allHideLow && rxSpeed < lowLevel) "" - else if (swapPlaces) "$rxArrow${humanReadableByteCount(it.args[0] as Context, rxSpeed)}" - else "${humanReadableByteCount(it.args[0] as Context, rxSpeed)}$rxArrow" - - // 计算总网速 - val ax = humanReadableByteCount(it.args[0] as Context, txSpeed + rxSpeed) - - // 是否隐藏慢速的判定 - val isLowSpeed = hideLow && (txSpeed + rxSpeed) < lowLevel - val isAllLowSpeed = hideLow && allHideLow && txSpeed < lowLevel && rxSpeed < lowLevel - - // 返回结果 - it.result = when (networkStyle) { - 1, 2 -> if (isLowSpeed) "" else ax - 3 -> if (isAllLowSpeed) "" else "$tx $rx" - 4 -> if (isAllLowSpeed) "" else "$tx\n$rx" - else -> if (isLowSpeed) "" else it.result as String - } - } - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/NetworkSpeedStyle.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/NetworkSpeedStyle.kt deleted file mode 100644 index a03bf5bb4..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/NetworkSpeedStyle.kt +++ /dev/null @@ -1,120 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old - -import android.graphics.* -import android.util.* -import android.view.* -import android.widget.* -import com.sevtinge.hyperceiler.module.base.* -import com.sevtinge.hyperceiler.utils.devicesdk.DisplayUtils.* - -object NetworkSpeedStyle : BaseHook() { - private val fontSize by lazy { - mPrefsMap.getInt("system_ui_statusbar_network_speed_font_size", 13) - } - private val fontSizeEnable by lazy { - mPrefsMap.getBoolean("system_ui_statusbar_network_speed_font_size_enable") - } - private val lineSpacing by lazy { - mPrefsMap.getInt("system_ui_statusbar_network_speed_spacing_margin", 16) - } - private val bold by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_network_speed_font_style", 0) - } - private val align by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_network_speed_align", 1) - } - private val networkStyle by lazy { - mPrefsMap.getStringAsInt("system_ui_statusbar_network_speed_style", 0) - } - - override fun init() { - hookAllConstructors("com.android.systemui.statusbar.views.NetworkSpeedView", - object : MethodHook() { - override fun after(param: MethodHookParam) { - // 值和单位双排显示 + 上下行网速双排显示 - val meter = param.thisObject as TextView - - if (meter.tag == null || "slot_text_icon" != meter.tag) { - // 网速加粗 - when (bold) { - 1 -> meter.typeface = Typeface.DEFAULT - 2 -> meter.typeface = Typeface.DEFAULT_BOLD - } - - // 左侧间距 - var leftMargin = - mPrefsMap.getInt("system_ui_statusbar_network_speed_left_margin", 0) - leftMargin = dp2px(leftMargin * 0.5f) - - // 右侧间距 - var rightMargin = - mPrefsMap.getInt("system_ui_statusbar_network_speed_right_margin", 0) - rightMargin = dp2px(rightMargin * 0.5f) - - // 上下偏移量 - var topMargin = 0 - val verticalOffset = - mPrefsMap.getInt("system_ui_statusbar_network_speed_vertical_offset", 8) - if (verticalOffset != 8) { - topMargin = dp2px((verticalOffset - 8) * 0.5f) - } - meter.setPaddingRelative(leftMargin, topMargin, rightMargin, 0) - - // 网速字体大小调整 - textSize(meter) - - // 网速行间距调整 - textLineSpacing(meter) - - // 水平对齐 - when (align) { - 2 -> meter.textAlignment = View.TEXT_ALIGNMENT_TEXT_START - 3 -> meter.textAlignment = View.TEXT_ALIGNMENT_CENTER - 4 -> meter.textAlignment = View.TEXT_ALIGNMENT_TEXT_END - } - } - } - } - ) - } - - private fun textLineSpacing(id: TextView) { - if (networkStyle == 2 || networkStyle == 4) { - id.setLineSpacing(0f, lineSpacing * 0.05f) - } - } - - private fun textSize(id: TextView) { - if (fontSizeEnable) { - try { - if (networkStyle == 2 || networkStyle == 4) { - id.isSingleLine = false - id.maxLines = 2 - id.setTextSize(TypedValue.COMPLEX_UNIT_DIP, fontSize * 0.5f) - } else { - id.setTextSize(TypedValue.COMPLEX_UNIT_DIP, fontSize.toFloat()) - } - } catch (e: Exception) { - logE(TAG, this@NetworkSpeedStyle.lpparam.packageName, e) - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/StatusBarNoNetSpeedSep.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/StatusBarNoNetSpeedSep.kt deleted file mode 100644 index 5298808fe..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/old/StatusBarNoNetSpeedSep.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.old - -import android.view.View -import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass -import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook -import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder -import com.sevtinge.hyperceiler.module.base.BaseHook -import de.robv.android.xposed.XposedHelpers - - -object StatusBarNoNetSpeedSep : BaseHook() { - override fun init() { - loadClass("com.android.systemui.statusbar.views.NetworkSpeedSplitter", lpparam.classLoader).methodFinder() - .filterByName("updateVisibility") - .single().createHook { - before { - XposedHelpers.setObjectField(it.thisObject, "mNetworkSpeedVisibility", View.GONE) - } - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/s/NetworkSpeedWidth.kt b/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/s/NetworkSpeedWidth.kt deleted file mode 100644 index 5673fd9d5..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/module/hook/systemui/statusbar/network/s/NetworkSpeedWidth.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.module.hook.systemui.statusbar.network.s - -import android.widget.TextView -import com.sevtinge.hyperceiler.module.base.BaseHook -import de.robv.android.xposed.XposedHelpers - -object NetworkSpeedWidth : BaseHook() { - override fun init() { - // 固定宽度以防相邻元素左右防抖 - if (mPrefsMap.getInt("system_ui_statusbar_network_speed_fixedcontent_width", 10) > 10) { - hookAllMethods( - "com.android.systemui.statusbar.views.NetworkSpeedView", - lpparam.classLoader, - "applyNetworkSpeedState", - object : MethodHook() { - override fun before(param: MethodHookParam) { - val meter = param.thisObject as TextView - if (meter.tag == null || "slot_text_icon" != meter.tag) { - XposedHelpers.getAdditionalInstanceField(param.thisObject, "inited") - } - } - } - ) - } - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/safe/CrashActivity.java b/app/src/main/java/com/sevtinge/hyperceiler/safe/CrashActivity.java index df1b1cd80..0b59e6471 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/safe/CrashActivity.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/safe/CrashActivity.java @@ -81,13 +81,7 @@ public void onCreate(@Nullable Bundle bundle) { appNameMap.put("com.android.settings", getString(R.string.system_settings)); appNameMap.put("com.miui.home", getString(R.string.mihome)); appNameMap.put("com.hchen.demo", getString(R.string.demo)); - if (isMoreHyperOSVersion(1f)) { - appNameMap.put("com.miui.securitycenter", getString(R.string.security_center_hyperos)); - } else if (isPad()) { - appNameMap.put("com.miui.securitycenter", getString(R.string.security_center_pad)); - } else { - appNameMap.put("com.miui.securitycenter", getString(R.string.security_center)); - } + appNameMap.put("com.miui.securitycenter", getString(R.string.security_center_hyperos)); String pkg = getReportCrashPkg(code); String appName = appNameMap.get(pkg); String msg = getString(R.string.safe_mode_desc, " " + appName + " (" + pkg + ") "); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/activity/HyperCeilerTabActivity.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/activity/HyperCeilerTabActivity.java index 614b99181..3520b5059 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/activity/HyperCeilerTabActivity.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/activity/HyperCeilerTabActivity.java @@ -126,13 +126,8 @@ private Map createAppNameMap() { appNameMap.put("com.android.settings", getString(R.string.system_settings)); appNameMap.put("com.miui.home", getString(R.string.mihome)); appNameMap.put("com.hchen.demo", getString(R.string.demo)); - if (isMoreHyperOSVersion(1f)) { - appNameMap.put("com.miui.securitycenter", getString(R.string.security_center_hyperos)); - } else if (isPad()) { - appNameMap.put("com.miui.securitycenter", getString(R.string.security_center_pad)); - } else { - appNameMap.put("com.miui.securitycenter", getString(R.string.security_center)); - } + appNameMap.put("com.miui.securitycenter", getString(R.string.security_center_hyperos)); + return appNameMap; } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/AodFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/AodFragment.java index 743fe4204..19c075f51 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/AodFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/AodFragment.java @@ -18,10 +18,6 @@ */ package com.sevtinge.hyperceiler.ui.fragment.app; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import androidx.preference.SwitchPreference; - import com.sevtinge.hyperceiler.R; import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; @@ -31,12 +27,4 @@ public class AodFragment extends DashboardFragment { public int getPreferenceScreenResId() { return R.xml.aod; } - - @Override - public void initPrefs() { - SwitchPreference aod = findPreference("prefs_key_aod_unlock_always_on_display"); - aod.setVisible(!isMoreHyperOSVersion(1f)); - SwitchPreference aodH = findPreference("prefs_key_aod_unlock_always_on_display_hyper"); - aodH.setVisible(isMoreHyperOSVersion(1f)); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/CameraFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/CameraFragment.java deleted file mode 100644 index ebf51ba6e..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/CameraFragment.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.ui.fragment.app; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; - -public class CameraFragment extends DashboardFragment { - - @Override - public int getPreferenceScreenResId() { - return R.xml.camera; - } - -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/MiLinkFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/MiLinkFragment.java index 4a8567c53..d2f15ff9a 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/MiLinkFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/MiLinkFragment.java @@ -36,7 +36,7 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(!isMoreHyperOSVersion(1f) ? R.string.milink : R.string.milink_hyperos), + getResources().getString(R.string.milink_hyperos), "com.milink.service" ); } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SecurityCenterFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SecurityCenterFragment.java index 15c5d7b04..e5e5637a3 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SecurityCenterFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SecurityCenterFragment.java @@ -41,7 +41,7 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( - isPad() ? getResources().getString(R.string.security_center_pad) : isHyperOSVersion(1f) ? getResources().getString(R.string.security_center_hyperos) : getResources().getString(R.string.security_center), + getResources().getString(R.string.security_center_hyperos), "com.miui.securitycenter" ); } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SystemSettingsFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SystemSettingsFragment.java index c08161f11..44c969848 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SystemSettingsFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/SystemSettingsFragment.java @@ -19,10 +19,6 @@ package com.sevtinge.hyperceiler.ui.fragment.app; import static com.sevtinge.hyperceiler.utils.devicesdk.MiDeviceAppUtilsKt.isPad; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreMiuiVersion; import android.os.Bundle; import android.provider.Settings; @@ -40,12 +36,7 @@ import fan.preference.SeekBarPreferenceCompat; public class SystemSettingsFragment extends DashboardFragment { - SwitchPreference mNewNfc; // 新版 NFC 界面 - SwitchPreference mAreaScreenshot; // 区域截屏 - SwitchPreference mHighMode; // 极致模式 - SwitchPreference mNoveltyHaptic; // 新版触感调节页面 SwitchPreference mPad; // 解锁平板分区 - SwitchPreference mNotice; // 重要通知程度 SwitchPreference mUiMode; RecommendPreference mRecommend; @@ -64,25 +55,12 @@ public View.OnClickListener addRestartListener() { @Override public void initPrefs() { - mHighMode = findPreference("prefs_key_system_settings_develop_speed_mode"); - mAreaScreenshot = findPreference("prefs_key_system_settings_area_screenshot"); - mNewNfc = findPreference("prefs_key_system_settings_new_nfc_page"); - mNoveltyHaptic = findPreference("prefs_key_system_settings_novelty_haptic"); mPad = findPreference("prefs_key_system_settings_enable_pad_area"); - mNotice = findPreference("prefs_key_system_settings_more_notification_settings"); mUiMode = findPreference("prefs_key_system_settings_unlock_ui_mode"); mUiMode.setVisible(isPad()); - mHighMode.setVisible(!isAndroidVersion(30)); - mAreaScreenshot.setVisible(isAndroidVersion(30)); - mNewNfc.setVisible((isMoreMiuiVersion(14f) || isMoreHyperOSVersion(1f)) && isMoreAndroidVersion(33)); - mNoveltyHaptic.setVisible((isMoreMiuiVersion(14f) || isMoreHyperOSVersion(1f)) && isMoreAndroidVersion(31)); mPad.setVisible(isPad()); - if (isMoreHyperOSVersion(1f)) { - mNotice.setSummary(R.string.system_settings_restart_systemui_desc); - } - Bundle args1 = new Bundle(); mRecommend = new RecommendPreference(getContext()); getPreferenceScreen().addPreference(mRecommend); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/WeatherFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/WeatherFragment.java index 8bcd0e0db..83fe3d194 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/WeatherFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/WeatherFragment.java @@ -26,16 +26,8 @@ import fan.preference.DropDownPreference; public class WeatherFragment extends DashboardFragment { - - DropDownPreference mCardDisplayType; @Override public int getPreferenceScreenResId() { return R.xml.weather; } - - @Override - public void initPrefs() { - mCardDisplayType = findPreference("prefs_key_weather_card_display_type"); - mCardDisplayType.setVisible(isMoreHyperOSVersion(1f)); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/CorePatchSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/CorePatchSettings.java index 75d292cf1..12615c710 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/CorePatchSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/CorePatchSettings.java @@ -12,10 +12,7 @@ public class CorePatchSettings extends DashboardFragment { SwitchPreference mDisableCreak; - SwitchPreference mShareUser; SwitchPreference mDisableIntegrity; - SwitchPreference mDisableLowApiCheck; - SwitchPreference mDisablePersistent; SwitchPreference mIsolationViolation; SwitchPreference mAllowUpdateSystemApps; @@ -28,19 +25,13 @@ public int getPreferenceScreenResId() { public void initPrefs() { boolean mCreak = PrefsUtils.getSharedBoolPrefs(getContext(), "prefs_key_system_framework_core_patch_auth_creak", false); mDisableCreak = findPreference("prefs_key_system_framework_core_patch_auth_creak"); - mShareUser = findPreference("prefs_key_system_framework_core_patch_shared_user"); mDisableIntegrity = findPreference("prefs_key_system_framework_core_patch_disable_integrity"); - mDisableLowApiCheck = findPreference("prefs_key_system_framework_disable_low_api_check"); - mDisablePersistent = findPreference("prefs_key_system_framework_disable_persistent"); mIsolationViolation = findPreference("prefs_key_system_framework_core_patch_bypass_isolation_violation"); mAllowUpdateSystemApps = findPreference("prefs_key_system_framework_core_patch_allow_update_system_app"); - mDisableIntegrity.setVisible(isMoreAndroidVersion(33) && !mCreak); - mShareUser.setVisible(isMoreAndroidVersion(33)); // 暂时仅开放给 Android 13 及以上使用 + mDisableIntegrity.setVisible(!mCreak); mAllowUpdateSystemApps.setVisible(isMoreAndroidVersion(35)); - mDisableLowApiCheck.setVisible(isMoreAndroidVersion(34)); - mDisablePersistent.setVisible(isMoreAndroidVersion(34)); mIsolationViolation.setVisible(isMoreHyperOSVersion(2f)); mDisableCreak.setOnPreferenceChangeListener((preference, o) -> { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/FreeFormSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/FreeFormSettings.java index c188b2c1b..fda4caf7f 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/FreeFormSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/FreeFormSettings.java @@ -18,29 +18,16 @@ */ package com.sevtinge.hyperceiler.ui.fragment.app.framework; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreMiuiVersion; - -import android.view.View; import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.activity.base.BaseSettingsActivity; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; -import androidx.preference.SwitchPreference; +import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; public class FreeFormSettings extends DashboardFragment { - SwitchPreference mMoreFreeForm; // 多小窗 - @Override public int getPreferenceScreenResId() { return R.xml.framework_freeform; } - @Override - public void initPrefs() { - mMoreFreeForm = findPreference("prefs_key_system_framework_freeform_count"); - mMoreFreeForm.setVisible(isMoreMiuiVersion(13f) || isMoreHyperOSVersion(1f)); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/OtherSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/OtherSettings.java index deee880aa..189773d42 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/OtherSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/OtherSettings.java @@ -52,10 +52,7 @@ public class OtherSettings extends DashboardFragment implements Preference.OnPre Preference mCleanProcessTextApps; Preference mAutoStart; Preference mClipboardWhitelistApps; - SwitchPreference mEntry; - SwitchPreference mUseOriginalAnim; SwitchPreference mVerifyDisable; - SwitchPreference mDisableDeviceLog; // 关闭访问设备日志确认 SwitchPreference mLockApp; SwitchPreference mLockAppSc; DropDownPreference mLockAppScreen; @@ -76,8 +73,6 @@ public void initPrefs() { mAutoStart = findPreference("prefs_key_system_framework_auto_start_apps"); mClipboardWhitelistApps = findPreference("prefs_key_system_framework_clipboard_whitelist_apps"); mVerifyDisable = findPreference("prefs_key_system_framework_disable_verify_can_ve_disabled"); - mUseOriginalAnim = findPreference("prefs_key_system_framework_other_use_original_animation"); - mEntry = findPreference("prefs_key_system_framework_hook_entry"); mLockApp = findPreference("prefs_key_system_framework_guided_access"); mLockAppSc = findPreference("prefs_key_system_framework_guided_access_sc"); mLockAppScreen = findPreference("prefs_key_system_framework_guided_access_screen_int"); @@ -88,13 +83,6 @@ public void initPrefs() { mLockAppScreen.setOnPreferenceChangeListener(this); mLockAppStatus.setOnPreferenceChangeListener(this); - mDisableDeviceLog = findPreference("prefs_key_various_disable_access_device_logs"); - - // mVerifyDisable.setVisible(isMoreHyperOSVersion(1f)); - mEntry.setVisible(isMoreHyperOSVersion(1f)); - mUseOriginalAnim.setVisible(!isAndroidVersion(33)); - mDisableDeviceLog.setVisible(isMoreAndroidVersion(33)); - mAutoStart.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(@NonNull Preference preference) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/VolumeSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/VolumeSettings.java index 3e3b28511..f167cd069 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/VolumeSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/framework/VolumeSettings.java @@ -18,24 +18,16 @@ */ package com.sevtinge.hyperceiler.ui.fragment.app.framework; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.provider.Settings; -import android.view.View; import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.activity.base.BaseSettingsActivity; -import com.sevtinge.hyperceiler.ui.fragment.base.SettingsPreferenceFragment; import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; import fan.preference.DropDownPreference; -import androidx.preference.SwitchPreference; public class VolumeSettings extends DashboardFragment { DropDownPreference mDefaultVolumeStream; - SwitchPreference mVolumeSeparateControl; - SwitchPreference mVolumeSeparateSlider; @Override public int getPreferenceScreenResId() { @@ -45,11 +37,6 @@ public int getPreferenceScreenResId() { @Override public void initPrefs() { mDefaultVolumeStream = findPreference("prefs_key_system_framework_default_volume_stream"); - mVolumeSeparateControl = findPreference("prefs_key_system_framework_volume_separate_control"); - mVolumeSeparateSlider = findPreference("prefs_key_system_framework_volume_separate_slider"); - - mVolumeSeparateControl.setVisible(!isMoreHyperOSVersion(1f)); - mVolumeSeparateSlider.setVisible(!isMoreHyperOSVersion(1f)); mDefaultVolumeStream.setOnPreferenceChangeListener((preference, o) -> { Settings.Secure.putInt(getContext().getContentResolver(), "system_framework_default_volume_stream", Integer.parseInt((String) o)); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeFolderSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeFolderSettings.java index ea7937723..e7fb7bd2c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeFolderSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeFolderSettings.java @@ -74,7 +74,6 @@ public void initPrefs() { mSmallFolderIconBackgroundCustom2.setTitle(R.string.home_big_folder_icon_bg_1x2_n); mSmallFolderIconBackgroundCustom3.setTitle(R.string.home_big_folder_icon_bg_n); } - mUnlockFolderBlurSupport.setVisible(isMoreHyperOSVersion(1f)); mRecommendAppsSwitch.setVisible(!isMoreAndroidVersion(35)); setFolderShadeLevelEnable(Integer.parseInt(PrefsUtils.mSharedPreferences.getString("prefs_key_home_folder_shade", "0"))); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeRecentSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeRecentSettings.java index ef6aa2627..0f0e42c95 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeRecentSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeRecentSettings.java @@ -36,7 +36,6 @@ public class HomeRecentSettings extends DashboardFragment { Preference mHideRecentCard; - SwitchPreference mDimming; SwitchPreference mShowMenInfo; SwitchPreference mHideCleanIcon; SwitchPreference mNotHideCleanIcon; @@ -60,7 +59,6 @@ public void initPrefs() { mShowMenInfo = findPreference("prefs_key_home_recent_show_memory_info"); mHideCleanIcon = findPreference("prefs_key_home_recent_hide_clean_up"); mNotHideCleanIcon = findPreference("prefs_key_always_show_clean_up"); - mDimming = findPreference("prefs_key_home_recent_disable_wallpaper_dimming"); mHideRecentCard.setOnPreferenceClickListener( preference -> { @@ -72,7 +70,6 @@ public void initPrefs() { } ); - mDimming.setVisible(!isMoreHyperOSVersion(1f)); mShowMenInfo.setVisible(isPad()); mHideCleanIcon.setOnPreferenceChangeListener((preference, o) -> { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeTitleAnimSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeTitleAnimSettings.java index 2ce632fd4..855ec8ac0 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeTitleAnimSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/HomeTitleAnimSettings.java @@ -29,8 +29,7 @@ import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; public class HomeTitleAnimSettings extends DashboardFragment { - Preference mPage1; - Preference mPage9; + @Override public int getPreferenceScreenResId() { return R.xml.home_title_anim; @@ -43,13 +42,4 @@ public View.OnClickListener addRestartListener() { "com.miui.home" ); } - - @Override - public void initPrefs() { - mPage1 = findPreference("prefs_key_home_title_custom_anim_param_1_title"); - mPage9 = findPreference("prefs_key_home_title_custom_anim_param_9_title"); - - mPage9.setVisible(isMoreHyperOSVersion(1f)); - mPage1.setVisible(!isMoreHyperOSVersion(1f)); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim2Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim2Settings.java index 345a188e4..611586f04 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim2Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim2Settings.java @@ -1,24 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; import android.view.View; @@ -41,7 +40,7 @@ public class HomeTitleAnim2Settings extends DashboardFragment { SeekBarPreferenceCompat mSR; SeekBarPreferenceCompat mDA; SeekBarPreferenceCompat mSA; - + @Override public int getPreferenceScreenResId() { return R.xml.home_title_anim_2; @@ -49,9 +48,9 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" + return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + getResources().getString(R.string.mihome), + "com.miui.home" ); } @@ -70,32 +69,18 @@ public void initPrefs() { mDA = findPreference("prefs_key_home_title_custom_anim_param_damping_ALPHA_2"); mSA = findPreference("prefs_key_home_title_custom_anim_param_stiffness_ALPHA_2"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(1000); - mSRCX.setDefaultValue(330); - mDRCY.setDefaultValue(1000); - mSRCY.setDefaultValue(330); - mDRW.setDefaultValue(1000); - mSRW.setDefaultValue(330); - mDRR.setDefaultValue(1000); - mSRR.setDefaultValue(330); - mDR.setDefaultValue(1000); - mSR.setDefaultValue(330); - mDA.setDefaultValue(1000); - mSA.setDefaultValue(200); - } else { - mDRCX.setDefaultValue(960); - mSRCX.setDefaultValue(300); - mDRCY.setDefaultValue(990); - mSRCY.setDefaultValue(300); - mDRW.setDefaultValue(960); - mSRW.setDefaultValue(410); - mDRR.setDefaultValue(960); - mSRR.setDefaultValue(340); - mDR.setDefaultValue(990); - mSR.setDefaultValue(135); - mDA.setDefaultValue(990); - mSA.setDefaultValue(135); - } + mDRCX.setDefaultValue(1000); + mSRCX.setDefaultValue(330); + mDRCY.setDefaultValue(1000); + mSRCY.setDefaultValue(330); + mDRW.setDefaultValue(1000); + mSRW.setDefaultValue(330); + mDRR.setDefaultValue(1000); + mSRR.setDefaultValue(330); + mDR.setDefaultValue(1000); + mSR.setDefaultValue(330); + mDA.setDefaultValue(1000); + mSA.setDefaultValue(200); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim3Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim3Settings.java index 82c9be8e5..1ca6ae869 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim3Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim3Settings.java @@ -1,25 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.view.View; import com.sevtinge.hyperceiler.R; @@ -37,6 +35,7 @@ public class HomeTitleAnim3Settings extends DashboardFragment { SeekBarPreferenceCompat mSRW; SeekBarPreferenceCompat mDRR; SeekBarPreferenceCompat mSRR; + @Override public int getPreferenceScreenResId() { return R.xml.home_title_anim_3; @@ -44,9 +43,9 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" + return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + getResources().getString(R.string.mihome), + "com.miui.home" ); } @@ -61,24 +60,14 @@ public void initPrefs() { mDRR = findPreference("prefs_key_home_title_custom_anim_param_damping_RECT_RATIO_3"); mSRR = findPreference("prefs_key_home_title_custom_anim_param_stiffness_RECT_RATIO_3"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(900); - mSRCX.setDefaultValue(270); - mDRCY.setDefaultValue(900); - mSRCY.setDefaultValue(270); - mDRW.setDefaultValue(990); - mSRW.setDefaultValue(360); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(360); - } else { - mDRCX.setDefaultValue(900); - mSRCX.setDefaultValue(270); - mDRCY.setDefaultValue(900); - mSRCY.setDefaultValue(270); - mDRW.setDefaultValue(990); - mSRW.setDefaultValue(360); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(360); - } + mDRCX.setDefaultValue(900); + mSRCX.setDefaultValue(270); + mDRCY.setDefaultValue(900); + mSRCY.setDefaultValue(270); + mDRW.setDefaultValue(990); + mSRW.setDefaultValue(360); + mDRR.setDefaultValue(990); + mSRR.setDefaultValue(360); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim4Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim4Settings.java index 3f796e1f5..197154510 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim4Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim4Settings.java @@ -1,25 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.view.View; import com.sevtinge.hyperceiler.R; @@ -41,7 +39,7 @@ public class HomeTitleAnim4Settings extends DashboardFragment { SeekBarPreferenceCompat mSR; SeekBarPreferenceCompat mDA; SeekBarPreferenceCompat mSA; - + @Override public int getPreferenceScreenResId() { return R.xml.home_title_anim_4; @@ -49,9 +47,9 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" + return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + getResources().getString(R.string.mihome), + "com.miui.home" ); } @@ -70,32 +68,18 @@ public void initPrefs() { mDA = findPreference("prefs_key_home_title_custom_anim_param_damping_ALPHA_4"); mSA = findPreference("prefs_key_home_title_custom_anim_param_stiffness_ALPHA_4"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(900); - mSRCX.setDefaultValue(400); - mDRCY.setDefaultValue(900); - mSRCY.setDefaultValue(400); - mDRW.setDefaultValue(900); - mSRW.setDefaultValue(400); - mDRR.setDefaultValue(970); - mSRR.setDefaultValue(350); - mDR.setDefaultValue(900); - mSR.setDefaultValue(400); - mDA.setDefaultValue(900); - mSA.setDefaultValue(400); - } else { - mDRCX.setDefaultValue(950); - mSRCX.setDefaultValue(315); - mDRCY.setDefaultValue(950); - mSRCY.setDefaultValue(315); - mDRW.setDefaultValue(950); - mSRW.setDefaultValue(315); - mDRR.setDefaultValue(950); - mSRR.setDefaultValue(270); - mDR.setDefaultValue(990); - mSR.setDefaultValue(270); - mDA.setDefaultValue(990); - mSA.setDefaultValue(270); - } + mDRCX.setDefaultValue(900); + mSRCX.setDefaultValue(400); + mDRCY.setDefaultValue(900); + mSRCY.setDefaultValue(400); + mDRW.setDefaultValue(900); + mSRW.setDefaultValue(400); + mDRR.setDefaultValue(970); + mSRR.setDefaultValue(350); + mDR.setDefaultValue(900); + mSR.setDefaultValue(400); + mDA.setDefaultValue(900); + mSA.setDefaultValue(400); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim5Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim5Settings.java index 8c9adc831..57d76dbef 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim5Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim5Settings.java @@ -1,25 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.view.View; import com.sevtinge.hyperceiler.R; @@ -49,9 +47,9 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" + return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + getResources().getString(R.string.mihome), + "com.miui.home" ); } @@ -70,32 +68,18 @@ public void initPrefs() { mDA = findPreference("prefs_key_home_title_custom_anim_param_damping_ALPHA_5"); mSA = findPreference("prefs_key_home_title_custom_anim_param_stiffness_ALPHA_5"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(880); - mSRCX.setDefaultValue(460); - mDRCY.setDefaultValue(880); - mSRCY.setDefaultValue(460); - mDRW.setDefaultValue(850); - mSRW.setDefaultValue(460); - mDRR.setDefaultValue(1000); - mSRR.setDefaultValue(350); - mDR.setDefaultValue(1000); - mSR.setDefaultValue(350); - mDA.setDefaultValue(1000); - mSA.setDefaultValue(400); - } else { - mDRCX.setDefaultValue(990); - mSRCX.setDefaultValue(450); - mDRCY.setDefaultValue(990); - mSRCY.setDefaultValue(450); - mDRW.setDefaultValue(900); - mSRW.setDefaultValue(450); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(370); - mDR.setDefaultValue(990); - mSR.setDefaultValue(150); - mDA.setDefaultValue(990); - mSA.setDefaultValue(420); - } + mDRCX.setDefaultValue(880); + mSRCX.setDefaultValue(460); + mDRCY.setDefaultValue(880); + mSRCY.setDefaultValue(460); + mDRW.setDefaultValue(850); + mSRW.setDefaultValue(460); + mDRR.setDefaultValue(1000); + mSRR.setDefaultValue(350); + mDR.setDefaultValue(1000); + mSR.setDefaultValue(350); + mDA.setDefaultValue(1000); + mSA.setDefaultValue(400); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim6Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim6Settings.java index babc3ddb0..2d75b2864 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim6Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim6Settings.java @@ -1,25 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.view.View; import com.sevtinge.hyperceiler.R; @@ -49,9 +47,9 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" + return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + getResources().getString(R.string.mihome), + "com.miui.home" ); } @@ -70,32 +68,17 @@ public void initPrefs() { mDA = findPreference("prefs_key_home_title_custom_anim_param_damping_ALPHA_6"); mSA = findPreference("prefs_key_home_title_custom_anim_param_stiffness_ALPHA_6"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(950); - mSRCX.setDefaultValue(378); - mDRCY.setDefaultValue(950); - mSRCY.setDefaultValue(378); - mDRW.setDefaultValue(900); - mSRW.setDefaultValue(405); - mDRR.setDefaultValue(950); - mSRR.setDefaultValue(333); - mDR.setDefaultValue(990); - mSR.setDefaultValue(180); - mDA.setDefaultValue(990); - mSA.setDefaultValue(378); - } else { - mDRCX.setDefaultValue(950); - mSRCX.setDefaultValue(378); - mDRCY.setDefaultValue(950); - mSRCY.setDefaultValue(378); - mDRW.setDefaultValue(900); - mSRW.setDefaultValue(405); - mDRR.setDefaultValue(950); - mSRR.setDefaultValue(333); - mDR.setDefaultValue(990); - mSR.setDefaultValue(180); - mDA.setDefaultValue(990); - mSA.setDefaultValue(378); - } + mDRCX.setDefaultValue(950); + mSRCX.setDefaultValue(378); + mDRCY.setDefaultValue(950); + mSRCY.setDefaultValue(378); + mDRW.setDefaultValue(900); + mSRW.setDefaultValue(405); + mDRR.setDefaultValue(950); + mSRR.setDefaultValue(333); + mDR.setDefaultValue(990); + mSR.setDefaultValue(180); + mDA.setDefaultValue(990); + mSA.setDefaultValue(378); } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim7Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim7Settings.java index 6ea20c9e1..4ffed2597 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim7Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim7Settings.java @@ -1,25 +1,23 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - import android.view.View; import com.sevtinge.hyperceiler.R; @@ -37,6 +35,7 @@ public class HomeTitleAnim7Settings extends DashboardFragment { SeekBarPreferenceCompat mSRW; SeekBarPreferenceCompat mDRR; SeekBarPreferenceCompat mSRR; + @Override public int getPreferenceScreenResId() { return R.xml.home_title_anim_7; @@ -44,9 +43,9 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" + return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + getResources().getString(R.string.mihome), + "com.miui.home" ); } @@ -61,24 +60,14 @@ public void initPrefs() { mDRR = findPreference("prefs_key_home_title_custom_anim_param_damping_RECT_RATIO_7"); mSRR = findPreference("prefs_key_home_title_custom_anim_param_stiffness_RECT_RATIO_7"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(990); - mSRCX.setDefaultValue(315); - mDRCY.setDefaultValue(990); - mSRCY.setDefaultValue(315); - mDRW.setDefaultValue(990); - mSRW.setDefaultValue(315); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(315); - } else { - mDRCX.setDefaultValue(990); - mSRCX.setDefaultValue(315); - mDRCY.setDefaultValue(990); - mSRCY.setDefaultValue(315); - mDRW.setDefaultValue(990); - mSRW.setDefaultValue(315); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(315); - } + mDRCX.setDefaultValue(990); + mSRCX.setDefaultValue(315); + mDRCY.setDefaultValue(990); + mSRCY.setDefaultValue(315); + mDRW.setDefaultValue(990); + mSRW.setDefaultValue(315); + mDRR.setDefaultValue(990); + mSRR.setDefaultValue(315); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim8Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim8Settings.java index e3653f78a..d94513e36 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim8Settings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim8Settings.java @@ -63,25 +63,15 @@ public void initPrefs() { mDRR = findPreference("prefs_key_home_title_custom_anim_param_damping_RECT_RATIO_8"); mSRR = findPreference("prefs_key_home_title_custom_anim_param_stiffness_RECT_RATIO_8"); - if (isMoreHyperOSVersion(1f)) { - mDRCX.setDefaultValue(990); - mSRCX.setDefaultValue(180); - mDRCY.setDefaultValue(990); - mSRCY.setDefaultValue(180); - mDRW.setDefaultValue(990); - mSRW.setDefaultValue(180); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(180); - } else { - mDRCX.setDefaultValue(990); - mSRCX.setDefaultValue(180); - mDRCY.setDefaultValue(990); - mSRCY.setDefaultValue(180); - mDRW.setDefaultValue(990); - mSRW.setDefaultValue(180); - mDRR.setDefaultValue(990); - mSRR.setDefaultValue(180); - } + mDRCX.setDefaultValue(990); + mSRCX.setDefaultValue(180); + mDRCY.setDefaultValue(990); + mSRCY.setDefaultValue(180); + mDRW.setDefaultValue(990); + mSRW.setDefaultValue(180); + mDRR.setDefaultValue(990); + mSRR.setDefaultValue(180); + } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim9Settings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim9Settings.java deleted file mode 100644 index 3ab2fa1c6..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/home/anim/HomeTitleAnim9Settings.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.ui.fragment.app.home.anim; - -import android.view.View; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.activity.base.BaseSettingsActivity; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; - -public class HomeTitleAnim9Settings extends DashboardFragment { - @Override - public int getPreferenceScreenResId() { - return R.xml.home_title_anim_9; - } - - @Override - public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.mihome), - "com.miui.home" - ); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/securitycenter/PrivacySafetySettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/securitycenter/PrivacySafetySettings.java index 70737ed2e..9080bcf65 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/securitycenter/PrivacySafetySettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/securitycenter/PrivacySafetySettings.java @@ -18,75 +18,12 @@ */ package com.sevtinge.hyperceiler.ui.fragment.app.securitycenter; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import android.Manifest; -import android.provider.Settings; - -import androidx.core.app.ActivityCompat; -import androidx.core.content.PermissionChecker; - import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.fragment.base.SettingsPreferenceFragment; import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; -import androidx.preference.SwitchPreference; - public class PrivacySafetySettings extends DashboardFragment { - - SwitchPreference mAiClipboard; - SwitchPreference mBlurLocation; - SwitchPreference mGetNumber; - SwitchPreference mHideXOptModeTip; - @Override public int getPreferenceScreenResId() { return R.xml.security_center_privacy_safety; } - - @Override - public void initPrefs() { - mBlurLocation = findPreference("prefs_key_security_center_blur_location"); - mAiClipboard = findPreference("prefs_key_security_center_ai_clipboard"); - mGetNumber = findPreference("prefs_key_security_center_get_number"); - mHideXOptModeTip = findPreference("prefs_key_security_center_hide_xopt_mode_tip"); - - if (isMoreHyperOSVersion(1f)) { - mBlurLocation.setVisible(false); - mAiClipboard.setVisible(false); - mGetNumber.setVisible(false); - } else { - mHideXOptModeTip.setVisible(false); - } - - int permission = ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_SECURE_SETTINGS); - if (permission != PermissionChecker.PERMISSION_GRANTED) { - mBlurLocation.setSummary(R.string.security_center_no_permission); - mAiClipboard.setSummary(R.string.security_center_no_permission); - mBlurLocation.setEnabled(false); - mAiClipboard.setEnabled(false); - } else { - boolean mBlurLocationEnable = Settings.Secure.getInt(getContext().getContentResolver(), "mi_lab_blur_location_enable", 0) == 1; - boolean mAiClipboardEnable = Settings.Secure.getInt(getContext().getContentResolver(), "mi_lab_ai_clipboard_enable", 0) == 1; - - mBlurLocation.setChecked(mBlurLocationEnable); - mAiClipboard.setChecked(mAiClipboardEnable); - } - - boolean mBlurLocationEnable = Settings.Secure.getInt(getContext().getContentResolver(), "mi_lab_blur_location_enable", 0) == 1; - boolean mAiClipboardEnable = Settings.Secure.getInt(getContext().getContentResolver(), "mi_lab_ai_clipboard_enable", 0) == 1; - - mBlurLocation.setChecked(mBlurLocationEnable); - mAiClipboard.setChecked(mAiClipboardEnable); - - mBlurLocation.setOnPreferenceChangeListener((preference, o) -> { - Settings.Secure.putInt(getContext().getContentResolver(), "mi_lab_blur_location_enable", (Boolean) o ? 1 : 0); - return true; - }); - - mAiClipboard.setOnPreferenceChangeListener((preference, o) -> { - Settings.Secure.putInt(getContext().getContentResolver(), "mi_lab_ai_clipboard_enable", (Boolean) o ? 1 : 0); - return true; - }); - } } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/ControlCenterSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/ControlCenterSettings.java index 7aecf3833..75d7b1ae8 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/ControlCenterSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/ControlCenterSettings.java @@ -39,26 +39,21 @@ import com.sevtinge.hyperceiler.ui.fragment.sub.AppPicker; import com.sevtinge.hyperceiler.utils.log.AndroidLogUtils; +import java.util.Objects; + import fan.preference.DropDownPreference; import fan.preference.SeekBarPreferenceCompat; public class ControlCenterSettings extends DashboardFragment { Preference mExpandNotification; - Preference mMusic; - PreferenceCategory mCard; PreferenceCategory mOldCCGrid; - SwitchPreference mNotice; - SwitchPreference mNoticex; SwitchPreference mSwitchCCAN; SwitchPreference mSpotlightNotifColorMix; SeekBarPreferenceCompat mNewCCGrid; SeekBarPreferenceCompat mNewCCGridColumns; - DropDownPreference mBluetoothSytle; - SwitchPreference mThemeBlur; SwitchPreference mRedirectNotice; SwitchPreference mShadeHeaderBlur; - SwitchPreference mNotifrowmenu; RecommendPreference mRecommend; SwitchPreference mBrightness; DropDownPreference mBrightnessValue; @@ -72,7 +67,7 @@ public int getPreferenceScreenResId() { @Override public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity) getActivity()).showRestartDialog( + return view -> ((BaseSettingsActivity) requireActivity()).showRestartDialog( getResources().getString(R.string.system_ui), "com.android.systemui" ); @@ -80,18 +75,11 @@ public View.OnClickListener addRestartListener() { @Override public void initPrefs() { - mMusic = findPreference("prefs_key_system_ui_control_center_media_control_media_custom"); - mCard = findPreference("prefs_key_system_ui_controlcenter_card"); mOldCCGrid = findPreference("prefs_key_system_ui_controlcenter_old"); mExpandNotification = findPreference("prefs_key_system_ui_control_center_expand_notification"); mNewCCGrid = findPreference("prefs_key_system_control_center_cc_rows"); mNewCCGridColumns = findPreference("prefs_key_system_control_center_cc_columns"); - mNotice = findPreference("prefs_key_n_enable"); - mNoticex = findPreference("prefs_key_n_enable_fix"); mSwitchCCAN = findPreference("prefs_key_system_ui_control_center_switch_cc_and_notification"); - mBluetoothSytle = findPreference("prefs_key_system_ui_control_center_cc_bluetooth_tile_style"); - mThemeBlur = findPreference("prefs_key_system_ui_control_center_unlock_blur_supported"); - mNotifrowmenu = findPreference("prefs_key_system_ui_control_center_notifrowmenu"); mRedirectNotice = findPreference("prefs_key_system_ui_control_center_redirect_notice"); mSpotlightNotifColorMix = findPreference("prefs_key_system_ui_control_center_opt_notification_element_background_color"); mShadeHeaderBlur = findPreference("prefs_key_system_ui_shade_header_gradient_blur"); @@ -112,22 +100,7 @@ public void initPrefs() { if (isMoreHyperOSVersion(1f)) { mNewCCGrid.setVisible(false); - mCard.setVisible(false); mNewCCGridColumns.setVisible(false); - mNotice.setVisible(false); - mBluetoothSytle.setVisible(false); - mNotifrowmenu.setVisible(false); - mMusic.setVisible(true); - mThemeBlur.setVisible(true); - } else { - mNewCCGrid.setVisible(true); - mCard.setVisible(true); - mNewCCGridColumns.setVisible(true); - mNotice.setVisible(true); - mBluetoothSytle.setVisible(true); - mNotifrowmenu.setVisible(true); - mMusic.setVisible(false); - mThemeBlur.setVisible(false); } if (isMoreHyperOSVersion(2f)) { @@ -173,12 +146,10 @@ public void onStopTrackingTouch(SeekBar seekBar) { }); Bundle args1 = new Bundle(); - mRecommend = new RecommendPreference(getContext()); + mRecommend = new RecommendPreference(requireContext()); getPreferenceScreen().addPreference(mRecommend); - if (isMoreHyperOSVersion(1f)) - args1.putString(":settings:fragment_args_key", "prefs_key_new_clock_status"); - else args1.putString(":settings:fragment_args_key", "prefs_key_old_clock_status"); + args1.putString(":settings:fragment_args_key", "prefs_key_new_clock_status"); mRecommend.addRecommendView(getString(R.string.system_ui_statusbar_clock_title), null, StatusBarSettings.class, diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/LockScreenSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/LockScreenSettings.java index 9afad1cce..a2db58393 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/LockScreenSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/LockScreenSettings.java @@ -32,10 +32,7 @@ import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; public class LockScreenSettings extends DashboardFragment { - SwitchPreference mShowSec; // 时钟显示秒数 - SwitchPreference mForceSystemFonts; // 时钟使用系统字体 SwitchPreference mPasswordFree; // 开机免输入密码 - SwitchPreference mChangingCVTime; // 充电信息显示刷新间隔 SwitchPreference mBlockEditor; // 禁用长按进入锁屏编辑 @Override @@ -45,16 +42,10 @@ public int getPreferenceScreenResId() { @Override public void initPrefs() { - mShowSec = findPreference("prefs_key_system_ui_lock_screen_show_second"); - mForceSystemFonts = findPreference("prefs_key_system_ui_lock_screen_force_system_fonts"); mPasswordFree = findPreference("prefs_key_system_ui_lock_screen_password_free"); - mChangingCVTime = findPreference("prefs_key_system_ui_lock_screen_show_spacing_value"); mBlockEditor = findPreference("prefs_key_system_ui_lock_screen_block_editor"); - mShowSec.setVisible(!isMoreHyperOSVersion(1f)); - mForceSystemFonts.setVisible(!isMoreHyperOSVersion(1f)); - mChangingCVTime.setVisible(isMoreAndroidVersion(Build.VERSION_CODES.TIRAMISU)); - mBlockEditor.setVisible(!isMoreAndroidVersion(Build.VERSION_CODES.VANILLA_ICE_CREAM)); + mBlockEditor.setVisible(!isMoreAndroidVersion(35)); if (isDeviceEncrypted(requireContext())) { mPasswordFree.setChecked(false); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/StatusBarSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/StatusBarSettings.java index 1181c6068..330c9de8c 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/StatusBarSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/StatusBarSettings.java @@ -1,30 +1,28 @@ /* - * This file is part of HyperCeiler. + * This file is part of HyperCeiler. - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. + * HyperCeiler is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ + * Copyright (C) 2023-2025 HyperCeiler Contributions + */ package com.sevtinge.hyperceiler.ui.fragment.app.systemui; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; import android.os.Bundle; import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; import com.sevtinge.hyperceiler.R; import com.sevtinge.hyperceiler.prefs.RecommendPreference; @@ -32,12 +30,7 @@ public class StatusBarSettings extends DashboardFragment { - Preference mClockStatus; // 时钟指示器 - Preference mDeviceStatus; // 硬件指示器 - Preference mToastStatus; // 灵动 Toast Preference mMusic; // 焦点歌词 - Preference mIconManager; - PreferenceCategory mStatusBarLayout; // 状态栏布局 RecommendPreference mRecommend; @Override @@ -47,29 +40,11 @@ public int getPreferenceScreenResId() { @Override public void initPrefs() { - mIconManager = findPreference("prefs_key_icon_manager"); - mClockStatus = findPreference("prefs_key_clock_status"); - - mDeviceStatus = findPreference("prefs_key_system_ui_status_bar_device"); - mToastStatus = findPreference("prefs_key_system_ui_status_bar_toast"); mMusic = findPreference("prefs_key_system_ui_status_bar_music"); - mStatusBarLayout = findPreference("pref_key_system_ui_statusbar_layout"); - mDeviceStatus.setVisible(!isMoreHyperOSVersion(1f) || !isMoreAndroidVersion(34)); - mToastStatus.setVisible(isMoreHyperOSVersion(1f)); mMusic.setVisible(isMoreHyperOSVersion(2f)); - if (isMoreHyperOSVersion(1f)) { - mIconManager.setFragment("com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.IconManageNewSettings"); - mClockStatus.setFragment("com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.NewClockIndicatorSettings"); - } else { - mIconManager.setFragment("com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.IconManageSettings"); - mClockStatus.setFragment("com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.ClockIndicatorSettings"); - } - - mStatusBarLayout.setVisible(!isMoreHyperOSVersion(1f)); - Bundle args1 = new Bundle(); - mRecommend = new RecommendPreference(getContext()); + mRecommend = new RecommendPreference(requireContext()); getPreferenceScreen().addPreference(mRecommend); args1.putString(":settings:fragment_args_key", "prefs_key_system_ui_lock_screen_hide_status_bar"); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/SystemUIOtherSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/SystemUIOtherSettings.java index 118a76388..72dac8cc1 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/SystemUIOtherSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/SystemUIOtherSettings.java @@ -19,7 +19,6 @@ package com.sevtinge.hyperceiler.ui.fragment.app.systemui; import static com.sevtinge.hyperceiler.utils.devicesdk.MiDeviceAppUtilsKt.isPad; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMiuiVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; @@ -39,22 +38,12 @@ import fan.preference.DropDownPreference; public class SystemUIOtherSettings extends DashboardFragment { - - DropDownPreference mChargeAnimationStyle; - PreferenceCategory mChargeAnimationTitle; - SwitchPreference mMiuiMultiWinSwitch; - SwitchPreference mMiuiMultiWinSwitchRemove; SwitchPreference mDisableInfinitymodeGesture; - SwitchPreference mBottomBar; SwitchPreference mVolume; SwitchPreference mPower; - SwitchPreference mDisableBluetoothRestrict; // 禁用蓝牙临时关闭 - SwitchPreference mPctUseBlur; SwitchPreference mFuckSG; SwitchPreference mTimer; - SwitchPreference mHideFootButton; SwitchPreference mCollpasedColumnPress; - SwitchPreference mPluginThemeBlur; @Override public int getPreferenceScreenResId() { @@ -63,34 +52,17 @@ public int getPreferenceScreenResId() { @Override public void initPrefs() { - mChargeAnimationStyle = findPreference("prefs_key_system_ui_charge_animation_style"); - mChargeAnimationTitle = findPreference("prefs_key_system_ui_statusbar_charge_animation_title"); - mDisableBluetoothRestrict = findPreference("prefs_key_system_ui_disable_bluetooth_restrict"); - mMiuiMultiWinSwitch = findPreference("prefs_key_system_ui_disable_miui_multi_win_switch"); - mMiuiMultiWinSwitchRemove = findPreference("prefs_key_system_ui_remove_miui_multi_win_switch"); mDisableInfinitymodeGesture = findPreference("prefs_key_system_ui_disable_infinitymode_gesture"); - mBottomBar = findPreference("prefs_key_system_ui_disable_bottombar"); mVolume = findPreference("prefs_key_system_ui_disable_volume"); mPower = findPreference("prefs_key_system_ui_disable_power"); - mPctUseBlur = findPreference("prefs_key_system_showpct_use_blur"); mFuckSG = findPreference("prefs_key_system_ui_move_log_to_miui"); mTimer = findPreference("prefs_key_system_ui_volume_timer"); - mHideFootButton = findPreference("prefs_key_system_ui_volume_hide_foot_button"); mCollpasedColumnPress = findPreference("prefs_key_system_ui_volume_collpased_column_press"); - mPluginThemeBlur = findPreference("prefs_key_system_ui_other_default_plugin_theme"); - - mChargeAnimationTitle.setVisible(!isMoreHyperOSVersion(1f)); - mDisableBluetoothRestrict.setVisible(isMiuiVersion(14f) && !isMoreHyperOSVersion(1f)); - mMiuiMultiWinSwitch.setVisible(isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)); - mMiuiMultiWinSwitchRemove.setVisible(isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)); - mDisableInfinitymodeGesture.setVisible(isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34) && isPad()); - mBottomBar.setVisible(isMoreHyperOSVersion(1f) && isMoreAndroidVersion(34)); - mPctUseBlur.setVisible(isMoreHyperOSVersion(1f)); + + mDisableInfinitymodeGesture.setVisible(isPad()); mFuckSG.setVisible(isMoreHyperOSVersion(2f)); mTimer.setVisible(!isMoreAndroidVersion(35)); - mHideFootButton.setVisible(isMoreHyperOSVersion(1f)); mCollpasedColumnPress.setVisible(isMoreHyperOSVersion(2f)); - mPluginThemeBlur.setVisible(isMoreHyperOSVersion(1f)); mVolume.setOnPreferenceChangeListener( (preference, o) -> { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/TileSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/TileSettings.java index 3bdd4fc57..cc6dc5eb7 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/TileSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/TileSettings.java @@ -74,14 +74,8 @@ public void initPrefs() { mSunshineModeHighBrightness.setVisible(false); } - if (isMoreHyperOSVersion(1f)) { - mRoundedRectRadius.setVisible(PrefsUtils.getSharedBoolPrefs(getContext(), "prefs_key_system_ui_control_center_rounded_rect", false)); - mNewCCGridLabel.setVisible(false); - } else { - mRoundedRectRadius.setVisible(false); - mNewCCGridLabel.setVisible(true); - } - + mRoundedRectRadius.setVisible(PrefsUtils.getSharedBoolPrefs(getContext(), "prefs_key_system_ui_control_center_rounded_rect", false)); + mNewCCGridLabel.setVisible(false); mFiveG.setVisible(TelephonyManager.getDefault().isFiveGCapable()); mSunshineModeHighBrightness.setVisible(Integer.parseInt(PrefsUtils.mSharedPreferences.getString("prefs_key_system_control_center_sunshine_new_mode_high", "0")) == 3);; @@ -105,7 +99,7 @@ public void killTaplus() { } private void setCanBeVisibleRoundedRect(boolean mode) { - mRoundedRectRadius.setVisible(mode && isMoreHyperOSVersion(1f)); + mRoundedRectRadius.setVisible(mode); } private void setCanBeVisibleSunshineBrightness(int mode) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/BatteryDetailIndicatorSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/BatteryDetailIndicatorSettings.java deleted file mode 100644 index 5c3a1e1df..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/BatteryDetailIndicatorSettings.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; - -public class BatteryDetailIndicatorSettings extends DashboardFragment { - - @Override - public int getPreferenceScreenResId() { - return R.xml.system_ui_status_bar_hardware_detail_indicator; - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/BatteryIndicatorSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/BatteryIndicatorSettings.java deleted file mode 100644 index 119dc1178..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/BatteryIndicatorSettings.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar; - -import android.content.Intent; -import android.view.View; - -import androidx.preference.Preference; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.activity.base.BaseSettingsActivity; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; -import com.sevtinge.hyperceiler.utils.prefs.PrefsUtils; - -import fan.preference.ColorPickerPreference; -import fan.preference.DropDownPreference; - -public class BatteryIndicatorSettings extends DashboardFragment { - - DropDownPreference mBatteryIndicatorColor; - ColorPickerPreference mBatteryIndicatorFullPower; - ColorPickerPreference mBatteryIndicatorLowPower; - ColorPickerPreference mBatteryIndicatorPowerSaving; - ColorPickerPreference mBatteryIndicatorPowerCharging; - Preference mBatteryIndicatorTest; - - @Override - public int getPreferenceScreenResId() { - return R.xml.system_ui_status_bar_battery_indicator; - } - - @Override - public View.OnClickListener addRestartListener() { - return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( - getResources().getString(R.string.system_ui), - "com.android.systemui" - ); - } - - @Override - public void initPrefs() { - - mBatteryIndicatorColor = findPreference("prefs_key_system_ui_status_bar_battery_indicator_color"); - mBatteryIndicatorFullPower = findPreference("prefs_key_system_ui_status_bar_battery_indicator_color_full_power"); - mBatteryIndicatorLowPower = findPreference("prefs_key_system_ui_status_bar_battery_indicator_color_low_power"); - mBatteryIndicatorPowerSaving = findPreference("prefs_key_system_ui_status_bar_battery_indicator_color_power_saving"); - mBatteryIndicatorPowerCharging = findPreference("prefs_key_system_ui_status_bar_battery_indicator_color_power_charging"); - - showBatteryIndicatorColor(Integer.parseInt(PrefsUtils.getSharedStringPrefs(getActivity(), mBatteryIndicatorColor.getKey(), "0"))); - - mBatteryIndicatorColor.setOnPreferenceChangeListener((preference, o) -> { - showBatteryIndicatorColor(Integer.parseInt((String) o)); - return true; - }); - - - mBatteryIndicatorTest = findPreference("prefs_key_system_ui_status_bar_battery_indicator_test"); - mBatteryIndicatorTest.setOnPreferenceClickListener(preference -> { - requireActivity().sendBroadcast(new Intent("moralnorm.module.BatteryIndicatorTest")); - return true; - }); - } - - private void showBatteryIndicatorColor(int vale) { - boolean showBatteryIndicatorColor = vale != 2; - mBatteryIndicatorFullPower.setVisible(showBatteryIndicatorColor); - mBatteryIndicatorLowPower.setVisible(showBatteryIndicatorColor); - mBatteryIndicatorPowerSaving.setVisible(showBatteryIndicatorColor); - mBatteryIndicatorPowerCharging.setVisible(showBatteryIndicatorColor); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/ClockIndicatorSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/ClockIndicatorSettings.java deleted file mode 100644 index 539a67702..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/ClockIndicatorSettings.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar; - -import androidx.annotation.NonNull; -import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; -import com.sevtinge.hyperceiler.utils.prefs.PrefsUtils; - -import fan.preference.DropDownPreference; -import fan.preference.SeekBarPreferenceCompat; - -public class ClockIndicatorSettings extends DashboardFragment - implements Preference.OnPreferenceChangeListener { - - DropDownPreference mClockModePreference; - PreferenceCategory mDefault; - PreferenceCategory mGeek; - SeekBarPreferenceCompat mWidth; - - @Override - public int getPreferenceScreenResId() { - return R.xml.system_ui_status_bar_clock_indicator; - } - - @Override - public void initPrefs() { - int mClockMode = Integer.parseInt(PrefsUtils.getSharedStringPrefs(getContext(), "prefs_key_system_ui_statusbar_clock_mode", "0")); - mClockModePreference = findPreference("prefs_key_system_ui_statusbar_clock_mode"); - mDefault = findPreference("prefs_key_system_ui_statusbar_clock_default"); - mGeek = findPreference("prefs_key_system_ui_statusbar_clock_geek"); - mWidth = findPreference("prefs_key_system_ui_statusbar_clock_fixedcontent_width"); - - setClockMode(mClockMode); - mClockModePreference.setOnPreferenceChangeListener(this); - } - - @Override - public boolean onPreferenceChange(@NonNull Preference preference, Object o) { - if (preference == mClockModePreference) { - setClockMode(Integer.parseInt((String) o)); - } - return true; - } - - private void setClockMode(int mode) { - mWidth.setVisible(mode != 0); - mDefault.setVisible(mode == 1); - mGeek.setVisible(mode == 2); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageNewSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageNewSettings.java index 5a6f4ce8c..aab4aa394 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageNewSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageNewSettings.java @@ -36,10 +36,8 @@ public class IconManageNewSettings extends DashboardFragment { DropDownPreference mAlarmClockIcon; SeekBarPreferenceCompat mAlarmClockIconN; SeekBarPreferenceCompat mNotificationIconMaximum; - SeekBarPreferenceCompat mNotificationIconColumns; SwitchPreference mBatteryNumber; SwitchPreference mBatteryPercentage; - SwitchPreference mNotificationIconColumnsEnabled; @Override public int getPreferenceScreenResId() { @@ -54,15 +52,6 @@ public void initPrefs() { mBatteryNumber = findPreference("prefs_key_system_ui_status_bar_battery_percent"); mBatteryPercentage = findPreference("prefs_key_system_ui_status_bar_battery_percent_mark"); - mNotificationIconColumns = findPreference("prefs_key_system_ui_status_bar_notification_icon_maximum"); - mNotificationIconColumnsEnabled = findPreference("prefs_key_system_ui_status_bar_notification_dots_maximum_enable"); - - if (isMoreHyperOSVersion(2f)) { - mNotificationIconColumns.setVisible(false); - mNotificationIconColumnsEnabled.setVisible(false); - } else { - mNotificationIconColumns.setDefaultValue((isHyperOSVersion(1f) && isMoreAndroidVersion(34)) ? 1 : 3); - } mAlarmClockIconN.setVisible(Integer.parseInt(PrefsUtils.mSharedPreferences.getString("prefs_key_system_ui_status_bar_icon_alarm_clock", "0")) == 3); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageSettings.java deleted file mode 100644 index f96be1d08..000000000 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/IconManageSettings.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file is part of HyperCeiler. - - * HyperCeiler is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - - * Copyright (C) 2023-2025 HyperCeiler Contributions -*/ -package com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar; - -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.isMoreHyperOSVersion; - -import androidx.preference.SwitchPreference; - -import com.sevtinge.hyperceiler.R; -import com.sevtinge.hyperceiler.ui.fragment.dashboard.DashboardFragment; -import com.sevtinge.hyperceiler.utils.prefs.PrefsUtils; - -import fan.preference.DropDownPreference; -import fan.preference.SeekBarPreferenceCompat; - -public class IconManageSettings extends DashboardFragment { - - DropDownPreference mAlarmClockIcon; - SeekBarPreferenceCompat mAlarmClockIconN; - SeekBarPreferenceCompat mNotificationIconMaximum; - SeekBarPreferenceCompat mNotificationIconColumns; - SwitchPreference mBatteryNumber; - SwitchPreference mBatteryPercentage; - - @Override - public int getPreferenceScreenResId() { - return R.xml.system_ui_status_bar_icon_manage; - } - - @Override - public void initPrefs() { - mAlarmClockIcon = findPreference("prefs_key_system_ui_status_bar_icon_alarm_clock"); - mAlarmClockIconN = findPreference("prefs_key_system_ui_status_bar_icon_alarm_clock_n"); - mNotificationIconMaximum = findPreference("prefs_key_system_ui_status_bar_notification_icon_maximum"); - - mBatteryNumber = findPreference("prefs_key_system_ui_status_bar_battery_percent"); - mBatteryPercentage = findPreference("prefs_key_system_ui_status_bar_battery_percent_mark"); - mNotificationIconColumns = findPreference("prefs_key_system_ui_status_bar_notification_icon_maximum"); - - mNotificationIconColumns.setDefaultValue(isMoreHyperOSVersion(1f) ? 1 : 3); - - mAlarmClockIconN.setVisible(Integer.parseInt(PrefsUtils.mSharedPreferences.getString("prefs_key_system_ui_status_bar_icon_alarm_clock", "0")) == 3); - - mAlarmClockIcon.setOnPreferenceChangeListener((preference, o) -> { - mAlarmClockIconN.setVisible(Integer.parseInt((String) o) == 3); - return true; - }); - - mNotificationIconMaximum.setOnPreferenceChangeListener((preference, o) -> { - if ((int) o == 16) { - mNotificationIconMaximum.setValue(R.string.unlimited); - } - return true; - }); - - mBatteryNumber.setOnPreferenceChangeListener((preference, o) -> { - if (!(boolean) o) { - mBatteryPercentage.setChecked(false); - } - return true; - }); - } -} diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/NetworkSpeedIndicatorSettings.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/NetworkSpeedIndicatorSettings.java index 02b700494..dc0158545 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/NetworkSpeedIndicatorSettings.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/app/systemui/statusbar/NetworkSpeedIndicatorSettings.java @@ -36,7 +36,6 @@ public class NetworkSpeedIndicatorSettings extends DashboardFragment SeekBarPreferenceCompat mNetworkSpeedSpacing; // 网速间间距 SwitchPreference mNetworkSwapIcon; - SwitchPreference mNetworkSpeedSeparator; SwitchPreference mNetworkAllHide; DropDownPreference mNetworkAlign; DropDownPreference mNetworkStyle; @@ -55,9 +54,7 @@ public void initPrefs() { mNetworkIcon = findPreference("prefs_key_system_ui_statusbar_network_speed_icon"); mNetworkAllHide = findPreference("prefs_key_system_ui_statusbar_network_speed_hide_all"); mNetworkSwapIcon = findPreference("prefs_key_system_ui_statusbar_network_speed_swap_places"); - mNetworkSpeedSeparator = findPreference("prefs_key_system_ui_status_bar_no_netspeed_separator"); mNetworkSpeedSpacing = findPreference("prefs_key_system_ui_statusbar_network_speed_spacing_margin"); - mNetworkSpeedSeparator.setVisible(!isMoreHyperOSVersion(1f)); setNetworkMode(mNetworkMode); mNetworkStyle.setOnPreferenceChangeListener(this); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/AboutFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/AboutFragment.java index f1f58c8a2..594ddf076 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/AboutFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/AboutFragment.java @@ -250,7 +250,7 @@ public void initPrefs() { if (lIIllII != null) { lIIllII.setTitle(BuildConfig.VERSION_NAME + " | " + BuildConfig.BUILD_TYPE); - if (isMoreHyperOSVersion(1f)) lIIllII.setSummary(R.string.description_hyperos); else lIIllII.setSummary(R.string.description_miui); + lIIllII.setSummary(R.string.description_hyperos); lIIllII.setOnPreferenceClickListener(lIIllll -> { if (lIIllll instanceof SwitchPreference switchPreference) { switchPreference.setChecked(!switchPreference.isChecked()); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/HomePageFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/HomePageFragment.java index 60dbe0173..3c36d88d4 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/HomePageFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/HomePageFragment.java @@ -185,11 +185,6 @@ private void onSearchItemClickListener(ModData ad) { ); } - Preference mCamera; - Preference mSecurityCenter; - Preference mMiLink; - Preference mAod; - Preference mGuardProvider; Preference mHeadtipWarn; Preference mHeadtipNotice; Preference mHeadtipBirthday; @@ -233,39 +228,12 @@ public void initPrefs() { } } }); - mCamera = findPreference("prefs_key_camera_2"); - mSecurityCenter = findPreference("prefs_key_security_center"); - mMiLink = findPreference("prefs_key_milink"); - mAod = findPreference("prefs_key_aod"); - mGuardProvider = findPreference("prefs_key_guardprovider"); mHeadtipWarn = findPreference("prefs_key_headtip_warn"); mHeadtipNotice = findPreference("prefs_key_headtip_notice"); mHeadtipBirthday = findPreference("prefs_key_headtip_hyperceiler_birthday"); mHeadtipHyperCeiler = findPreference("prefs_key_headtip_hyperceiler"); mHeadtipTip = findPreference("prefs_key_headtip_tip"); - if (isHyperOSVersion(1f)) { - mSecurityCenter.setTitle(R.string.security_center_hyperos); - } else { - if (isPad()) { - mSecurityCenter.setTitle(R.string.security_center_pad); - } else { - mSecurityCenter.setTitle(R.string.security_center); - } - } - - if (isMoreHyperOSVersion(1f)) { - mCamera.setFragment("com.sevtinge.hyperceiler.ui.fragment.app.CameraNewFragment"); - mAod.setTitle(R.string.aod_hyperos); - mMiLink.setTitle(R.string.milink_hyperos); - mGuardProvider.setTitle(R.string.guard_provider_hyperos); - } else { - mCamera.setFragment("com.sevtinge.hyperceiler.ui.fragment.app.CameraFragment"); - mAod.setTitle(R.string.aod); - mMiLink.setTitle(R.string.milink); - mGuardProvider.setTitle(R.string.guard_provider); - } - setPreference(); mainActivityContextHelper = new MainActivityContextHelper(requireContext()); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/HomepageEntrance.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/HomepageEntrance.java index e4f70b2e5..d509275fa 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/HomepageEntrance.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/HomepageEntrance.java @@ -53,11 +53,6 @@ public class HomepageEntrance extends DashboardFragment implements Preference.On private final String TAG = "HomepageEntrance"; private static EntranceState entranceState = null; - Preference mSecurityCenter; - Preference mMiLink; - Preference mAod; - Preference mGuardProvider; - @Override public int getPreferenceScreenResId() { return R.xml.prefs_set_homepage_entrance; @@ -100,25 +95,6 @@ public void initPrefs() { } } }); - mSecurityCenter = findPreference("prefs_key_security_center_state"); - mMiLink = findPreference("prefs_key_milink_state"); - mAod = findPreference("prefs_key_aod_state"); - mGuardProvider = findPreference("prefs_key_guardprovider_state"); - if (isMoreHyperOSVersion(1f)) { - mAod.setTitle(R.string.aod_hyperos); - mMiLink.setTitle(R.string.milink_hyperos); - mGuardProvider.setTitle(R.string.guard_provider_hyperos); - mSecurityCenter.setTitle(R.string.security_center_hyperos); - } else { - mAod.setTitle(R.string.aod); - mMiLink.setTitle(R.string.milink); - mGuardProvider.setTitle(R.string.guard_provider); - if (isPad()) { - mSecurityCenter.setTitle(R.string.security_center_pad); - } else { - mSecurityCenter.setTitle(R.string.security_center); - } - } setPreference(); } diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/SupportVersionFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/SupportVersionFragment.java index dfb83d637..e419920ce 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/SupportVersionFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/helper/SupportVersionFragment.java @@ -30,7 +30,6 @@ public class SupportVersionFragment extends SettingsPreferenceFragment { - private static final String mFSupportMiuiVersion = "14.0(140)"; private static final String mFSupportHyperOsVersion = "1.0 / 2.0"; private static final String mFSupportAndroidVersion = "13(T, 33) / 14(U, 34) / 15(V, 35)"; private static final String mNSupportHyperOsVersion = "1.1"; @@ -55,7 +54,6 @@ public void initPrefs() { private String stringBuilder() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(getString(R.string.help_support_version_desc_1)) - .append("\n\n - MIUI ").append(mFSupportMiuiVersion) .append("\n - HyperOS ").append(mFSupportHyperOsVersion) .append("\n - Android ").append(mFSupportAndroidVersion); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/SafeModeFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/SafeModeFragment.java index 57452089b..f139009ac 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/SafeModeFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/SafeModeFragment.java @@ -65,7 +65,6 @@ public void initPrefs() { mSystemUi = findPreference("prefs_key_system_ui_safe_mode_enable"); mSecurityCenter = findPreference("prefs_key_security_center_safe_mode_enable"); mDemo = findPreference("prefs_key_demo_safe_mode_enable"); - mSecurityCenter.setTitle(isMoreHyperOSVersion(1f) ? R.string.security_center_hyperos : R.string.security_center); mDemo.setVisible(Objects.equals(BuildConfig.BUILD_TYPE, "debug")); mSystemUi.setChecked(mPkgList.contains("systemui")); mSettings.setChecked(mPkgList.contains("settings")); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/development/DevelopmentDebugInfoFragment.java b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/development/DevelopmentDebugInfoFragment.java index 41db38093..61b5cc41d 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/development/DevelopmentDebugInfoFragment.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/ui/fragment/main/settings/development/DevelopmentDebugInfoFragment.java @@ -36,12 +36,12 @@ // import static com.sevtinge.hyperceiler.utils.devicesdk.DeviceSDKKt.getSerial; import static com.sevtinge.hyperceiler.utils.devicesdk.DeviceSDKKt.getSoc; import static com.sevtinge.hyperceiler.utils.devicesdk.MiDeviceAppUtilsKt.isInternational; +import static com.sevtinge.hyperceiler.utils.devicesdk.MiDeviceAppUtilsKt.isLargeUI; import static com.sevtinge.hyperceiler.utils.devicesdk.MiDeviceAppUtilsKt.isPad; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getAndroidVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getBuildDate; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getCurrentUserId; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getHyperOSVersion; -import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getMiuiVersion; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getSystemVersionIncremental; import static com.sevtinge.hyperceiler.utils.devicesdk.SystemSDKKt.getWhoAmI; import static com.sevtinge.hyperceiler.utils.log.LogManager.IS_LOGGER_ALIVE; @@ -107,6 +107,7 @@ public String getDebugInfo() { propertiesDevice.put("ModDevice", getModDevice()); propertiesDevice.put("Characteristics", getCharacteristics()); propertiesDevice.put("Pad", String.valueOf(isPad())); + propertiesDevice.put("Large Screen", String.valueOf(isLargeUI())); propertiesDevice.put("FingerPrint", getFingerPrint()); propertiesDevice.put("Locale", getLocale()); propertiesDevice.put("Language", getLanguage()); @@ -117,7 +118,6 @@ public String getDebugInfo() { } try { propertiesSystem.put("AndroidSdkVersion", String.valueOf(getAndroidVersion())); - propertiesSystem.put("MiuiVersion", String.valueOf(getMiuiVersion())); propertiesSystem.put("HyperOsVersion", String.valueOf(getHyperOSVersion())); propertiesSystem.put("SystemVersion", getSystemVersionIncremental()); propertiesSystem.put("InternationalBuild", String.valueOf(isInternational())); diff --git a/app/src/main/java/com/sevtinge/hyperceiler/utils/TileUtils.java b/app/src/main/java/com/sevtinge/hyperceiler/utils/TileUtils.java index 46d8a2abb..52e29b807 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/utils/TileUtils.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/utils/TileUtils.java @@ -65,11 +65,8 @@ public void init() { SystemUiHook(); customTileProvider(); showStateMessage(myTile); - if (isMoreAndroidVersion(34)) { - tileAllName14(mQSFactory); - } else { - tileAllName(mQSFactory); - } + tileAllName14(mQSFactory); + try { myTile.getDeclaredMethod("isAvailable"); findAndHookMethod(myTile, "isAvailable", new MethodHook() { @@ -337,26 +334,6 @@ protected void after(MethodHookParam param) { } } - /* - * 判断是否是自定义磁贴,如果是则在自定义磁贴前加上 Key,用于定位磁贴。 - */ - private void tileAllName(Class QSFactory) { - if (!needOverride()) { - try { - QSFactory.getDeclaredMethod(getCustomTileProvider()[1], String.class); - tileAllNameMode(QSFactory, 1); - } catch (NoSuchMethodException e) { - try { - QSFactory.getDeclaredMethod(getCustomTileProvider()[2], String.class); - tileAllNameMode(QSFactory, 2); - } catch (NoSuchMethodException f) { - logE(TAG, "com.android.systemui", "Don't Have " + getCustomTileProvider()[2], f); - } - logE(TAG, "com.android.systemui", "Don't Have " + getCustomTileProvider()[1], e); - } - } - } - /*这是上面方法的模组*/ private void tileAllNameMode(Class QSFactory, int num) { findAndHookMethod(QSFactory, getCustomTileProvider()[num], String.class, new MethodHook() { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/utils/api/miuiStringToast/MiuiStringToast.kt b/app/src/main/java/com/sevtinge/hyperceiler/utils/api/miuiStringToast/MiuiStringToast.kt index b03c90371..12e67b9c7 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/utils/api/miuiStringToast/MiuiStringToast.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/utils/api/miuiStringToast/MiuiStringToast.kt @@ -80,18 +80,13 @@ object MiuiStringToast { .setParam(str) .setStatusBarStrongToast("show_custom_strong_toast") .onCreate() - if (isMoreHyperOSVersion(1f)) { - val service = context.getSystemService(Context.STATUS_BAR_SERVICE) - service.javaClass.getMethod( - "setStatus", - Int::class.javaPrimitiveType, - String::class.java, - Bundle::class.java - ) - .invoke(service, 1, "strong_toast_action", bundle) - } else { - Toast.makeText(context, text, Toast.LENGTH_SHORT).show() - } + val service = context.getSystemService(Context.STATUS_BAR_SERVICE) + service.javaClass.getMethod( + "setStatus", + Int::class.javaPrimitiveType, + String::class.java, + Bundle::class.java + ).invoke(service, 1, "strong_toast_action", bundle) } catch (e: IllegalAccessException) { throw RuntimeException(e) } catch (e: InvocationTargetException) { diff --git a/app/src/main/java/com/sevtinge/hyperceiler/utils/devicesdk/SystemSDK.kt b/app/src/main/java/com/sevtinge/hyperceiler/utils/devicesdk/SystemSDK.kt index 329dc2171..be91f5f27 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/utils/devicesdk/SystemSDK.kt +++ b/app/src/main/java/com/sevtinge/hyperceiler/utils/devicesdk/SystemSDK.kt @@ -34,24 +34,14 @@ fun getWhoAmI(): String = rootExecCmd("whoami") fun getCurrentUserId(): Int = Process.myUserHandle().hashCode() // 仅获取设备信息,不要用于判断 fun getAndroidVersion(): Int = androidSDK -fun getMiuiVersion(): Float = miuiSDK fun getHyperOSVersion(): Float = hyperOSSDK private val androidSDK: Int by lazy { Build.VERSION.SDK_INT } -private val miuiSDK: Float by lazy { - when (getProp("ro.miui.ui.version.name")) { - "V125" -> 12.5f - else -> getProp("ro.miui.ui.version.code").toFloatOrNull() ?: -1f - } -} private val hyperOSSDK: Float by lazy { getProp("ro.mi.os.version.code").toFloatOrNull() ?: 0f } -private val mSupportMiuiVersion: List by lazy { - mutableListOf(14.0f, 816.0f, 818.0f) -} private val mSupportHyperOsVersion: List by lazy { mutableListOf(-1.0f, 1.0f, 2.0f) } @@ -73,21 +63,6 @@ fun isAndroidVersion(code: Int): Boolean = androidSDK == code */ fun isMoreAndroidVersion(code: Int): Boolean = androidSDK >= code -/** - * 判断是否为指定某个 MIUI 版本 - * @param code 传入的 MIUI 版本 Float 数值 - * @return 一个 Boolean 值 - * HyperOS 2.0 已弃用 - */ -fun isMiuiVersion(code: Float): Boolean = miuiSDK == code - -/** - * 判断是否大于某个 MIUI 版本 - * @param code 传入的 MIUI 版本 Float 数值 - * @return 一个 Boolean 值 - * HyperOS 2.0 已弃用 - */ -fun isMoreMiuiVersion(code: Float): Boolean = miuiSDK >= code /** * 判断是否为指定某个 HyperOS 版本 @@ -105,8 +80,7 @@ fun isHyperOSVersion(code: Float): Boolean = hyperOSSDK == code fun isMoreHyperOSVersion(code: Float): Boolean = hyperOSSDK >= code fun isFullSupport(): Boolean { - val isMiuiVersionSupport = mSupportMiuiVersion.contains(miuiSDK) val isHyperOsVersionSupport = mSupportHyperOsVersion.contains(hyperOSSDK) val isAndroidVersionSupport = mSupportAndroidVersion.contains(androidSDK) - return isMiuiVersionSupport && isHyperOsVersionSupport && isAndroidVersionSupport + return isHyperOsVersionSupport && isAndroidVersionSupport } \ No newline at end of file diff --git a/app/src/main/java/com/sevtinge/hyperceiler/utils/search/SearchHelper.java b/app/src/main/java/com/sevtinge/hyperceiler/utils/search/SearchHelper.java index c5384f094..f86fea0dd 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/utils/search/SearchHelper.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/utils/search/SearchHelper.java @@ -30,7 +30,6 @@ import com.sevtinge.hyperceiler.R; import com.sevtinge.hyperceiler.data.ModData; import com.sevtinge.hyperceiler.ui.fragment.app.AodFragment; -import com.sevtinge.hyperceiler.ui.fragment.app.CameraFragment; import com.sevtinge.hyperceiler.ui.fragment.app.CameraNewFragment; import com.sevtinge.hyperceiler.ui.fragment.app.ContentExtensionFragment; import com.sevtinge.hyperceiler.ui.fragment.app.MiCloudServiceFragment; @@ -75,12 +74,9 @@ import com.sevtinge.hyperceiler.ui.fragment.app.systemui.NavigationSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.StatusBarSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.SystemUIOtherSettings; -import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.BatteryDetailIndicatorSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.BatteryStyleSettings; -import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.ClockIndicatorSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.DoubleLineNetworkSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.IconManageNewSettings; -import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.IconManageSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.MobileNetworkTypeSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.NetworkSpeedIndicatorSettings; import com.sevtinge.hyperceiler.ui.fragment.app.systemui.statusbar.NewClockIndicatorSettings; @@ -134,8 +130,8 @@ public static void getAllMods(Context context, boolean force) { parsePrefXml(context, StatusBarSettings.class, R.xml.system_ui_status_bar, R.string.system_ui); parsePrefXml(context, - !isMoreHyperOSVersion(1f) ? IconManageSettings.class : IconManageNewSettings.class, - !isMoreHyperOSVersion(1f) ? R.xml.system_ui_status_bar_icon_manage : R.xml.system_ui_status_bar_icon_manage_new, + IconManageNewSettings.class, + R.xml.system_ui_status_bar_icon_manage_new, R.string.system_ui, R.string.system_ui_statusbar_title ); @@ -164,15 +160,8 @@ public static void getAllMods(Context context, boolean force) { ); parsePrefXml(context, - !isMoreHyperOSVersion(1f) ? ClockIndicatorSettings.class : NewClockIndicatorSettings.class, - !isMoreHyperOSVersion(1f) ? R.xml.system_ui_status_bar_clock_indicator : R.xml.system_ui_status_bar_new_clock_indicator, - R.string.system_ui, - R.string.system_ui_statusbar_title - ); - - // 这里 - parsePrefXml(context, BatteryDetailIndicatorSettings.class, - R.xml.system_ui_status_bar_hardware_detail_indicator, + NewClockIndicatorSettings.class, + R.xml.system_ui_status_bar_new_clock_indicator, R.string.system_ui, R.string.system_ui_statusbar_title ); @@ -275,11 +264,7 @@ public static void getAllMods(Context context, boolean force) { // 其他杂项 parsePrefXmlForDashboardFragment(context, R.xml.analytics); parsePrefXmlForDashboardFragment(context, R.xml.browser); - parsePrefXml( - context, - !isMoreHyperOSVersion(1f) ? CameraFragment.class : CameraNewFragment.class, - !isMoreHyperOSVersion(1f) ? R.xml.camera : R.xml.camera_new - ); + parsePrefXml(context, CameraNewFragment.class, R.xml.camera_new); parsePrefXmlForDashboardFragment(context, R.xml.fileexplorer); parsePrefXmlForDashboardFragment(context, R.xml.incallui); parsePrefXmlForDashboardFragment(context, R.xml.mms); @@ -362,7 +347,7 @@ private static void parsePrefXmlForHome(Context context, Class catPrefsFragme } private static void parsePrefXmlForSecurityCenter(Context context, Class catPrefsFragment, int xmlResId) { - parsePrefXml(context, catPrefsFragment, xmlResId, R.string.security_center); + parsePrefXml(context, catPrefsFragment, xmlResId, R.string.security_center_hyperos); } private static void parsePrefXmlForVarious(Context context, int xmlResId) { @@ -400,10 +385,6 @@ private static void parsePrefXml(Context context, String catPrefsFragment, int x modData.title = getModTitle(res, xml.getAttributeValue(ANDROID_NS, "title")); boolean isPreferenceVisible = Boolean.parseBoolean(xml.getAttributeValue(APP_NS, "isPreferenceVisible")); - if (locationHyper == null) { - locationHyper = getModTitle(res, xml.getAttributeValue(APP_NS, "myLocationHyper")); - locationHyperId = getModId(xml.getAttributeValue(APP_NS, "myLocationHyper")); - } if (locationPad == null) { locationPad = getModTitle(res, xml.getAttributeValue(APP_NS, "myLocationPad")); locationPadId = getModId(xml.getAttributeValue(APP_NS, "myLocationPad")); @@ -414,30 +395,21 @@ private static void parsePrefXml(Context context, String catPrefsFragment, int x } if (!TextUtils.isEmpty(modData.title) && !isPreferenceVisible) { - String internalHyper = internalName == null ? locationHyper : internalName + "/" + locationHyper; String internalPad = internalName == null ? locationPad : internalName + "/" + locationPad; - String internalMiui = internalName == null ? location : internalName + "/" + location; + String internal = internalName == null ? location : internalName + "/" + location; if (locationHyper == null || location == null || (isPad && locationPad == null)) { if (location != null) { - modData.breadcrumbs = internalMiui; + modData.breadcrumbs = internal; modData.catTitleResId = locationId; - } else if (locationHyper != null) { - modData.breadcrumbs = internalHyper; - modData.catTitleResId = locationHyperId; } else if (locationPad != null) { modData.breadcrumbs = internalPad; modData.catTitleResId = locationPadId; } } else { if (!isPad) { - if (isMoreHyperOSVersion(1f)) { - modData.breadcrumbs = internalHyper; - modData.catTitleResId = locationHyperId; - } else { - modData.breadcrumbs = internalMiui; - modData.catTitleResId = locationId; - } + modData.breadcrumbs = internal; + modData.catTitleResId = locationId; } else { modData.breadcrumbs = internalPad; modData.catTitleResId = locationPadId; diff --git a/app/src/main/java/com/sevtinge/hyperceiler/view/RestartAlertDialog.java b/app/src/main/java/com/sevtinge/hyperceiler/view/RestartAlertDialog.java index 071e0c043..50764b3b8 100644 --- a/app/src/main/java/com/sevtinge/hyperceiler/view/RestartAlertDialog.java +++ b/app/src/main/java/com/sevtinge/hyperceiler/view/RestartAlertDialog.java @@ -48,7 +48,7 @@ public RestartAlertDialog(Context context) { private MultipleChoiceView createMultipleChoiceView(Context context) { Resources mRes = context.getResources(); MultipleChoiceView view = new MultipleChoiceView(context); - mAppNameList = Arrays.asList(mRes.getStringArray(!isMoreHyperOSVersion(1f) ? (!isPad() ? R.array.restart_apps_name : R.array.restart_apps_name_pad) : R.array.restart_apps_name_hyperos)); + mAppNameList = Arrays.asList(mRes.getStringArray(R.array.restart_apps_name_hyperos)); mAppPackageNameList = Arrays.asList(mRes.getStringArray(R.array.restart_apps_packagename)); view.setData(mAppNameList, null); view.deselectAll(); diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index 8fd7fa64e..9959214d8 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -21,7 +21,7 @@ تم العثور على نسخة جديدة © 2023-2025 مساهمو Sevtinge و HyperCeiler. - اجعل HyperOS/MIUI عظيم مجدداً! + اجعل HyperOS عظيم مجدداً! إضافة وحذف الملفات الموجودة على التخزين الداخلي للجهاز تستخدم لتقديم خدمات مثل خطوط العرض وخطوط الطول أثناء الاستخدام، من أجل تزويدك بالمزيد من الميزات، قد نتقدم بطلب للحصول على إذن الروت منك. يمكنك الذهاب إلى إدارة الأذونات في أي وقت لتعديل حالة التفويض لجميع الأذونات، يرجى الذهاب إلى مدير الروت الخاص بك للحصول على أذونات الروت. @@ -53,8 +53,8 @@ خدمة السجلات الحالية للجهاز غير طبيعية، وستكون خصائص HyperCeiler محدودة. يرجى استعادة خدمة السجلات ليعمل التطبيق بشكل طبيعي.\nرمز الخطأ: %1$s خدمة السجلات الحالية للجهاز غير طبيعية، وستكون خصائص HyperCeiler محدودة. يرجى استعادة خدمة السجلات ليعمل التطبيق بشكل طبيعي. - الإنجليزية - الرسمي HyperCeiler + العربية + Mohamed Zeroug https://github.com/ReChronoRain الرئيسية مساعدة @@ -219,7 +219,9 @@ شريط الفهرس إلغاء مسح + قيمة غير صالحة. الرجاء التحقق منها وإعادة إدخالها. الشفافية + لون مخصص مونيت الشبكة شريط التمرير @@ -234,6 +236,7 @@ إظهار الشريط الجانبي تحديد إخفاء الشريط الجانبي + قيمة غير صالحة. الرجاء التحقق منها وإعادة إدخالها. اسحب لأسفل للتحديث تم التحديث بنجاح جاري التحديث… @@ -254,10 +257,6 @@ وظيفة مقترح المحرِّر - تسجيل - إطلاق - عمودي - احترافي تفعيل تعطيل تفعيل مخصص @@ -365,8 +364,6 @@ استخدام مؤخرًا استخدام التخزين وقت التثبيت - ثلاث بلاطات كبيرة - بلاطة كبيرة و إثنان صغيرتان الرسمي يأتي بضبابية تخصيص ضبابية الخلفية إغلاق @@ -398,6 +395,7 @@ عرض سطرين\n\nساعة صغيرة في أسفل إشعار الظل\nساعة شريط الحالة في الأسفل ميكي ماوس دب الفراولة + أميرة ديزني خدمة Google Play وضع S-Leo Taplus @@ -424,11 +422,9 @@ الروابط المدعومة فقط تعديل الصوت بشكل افتراضي تعديل فوري للصوت - فصل صوت النظام والاشعارات عن صوت الرنين إزالة قيود أمان الصوت العالي لجميع الحالات فقط عند الاتصال بالسماعات - شريط تمرير صوت الإشعارات مستوى صوت الوسائط قد تتسبب في تجميد شريط تمرير الصوت أو أن يكون مستوى صوت البلوتوث غير طبيعي مضاعف مستوى الصوت @@ -557,52 +553,7 @@ علامة مائية مخصصة للجهاز معلومات الشركة المصنعة معلومات الجهاز - فتح علامة AI المائية - فتح خيار التصوير بالتعريض الطويل - فتح وضع الإستنساخ في الكاميرا - فتح ميزة المرآة التجميلية - فتح وضع تصوير المستندات - فتح وضع تصوير بطاقة الهوية - فتح ميزة الكاميرا المزدوجة - فتح المدة - فتح الفيديو القصير - فتح وضع السوبر مون - فتح وضع البانوراما - فتح وضع البكسل - فتح وضع البورتريه - فتح وضع الحركة البطيئة - فتح وضع الفيديو-سماء - فتح وضع الڤلوگر - فتح وضع الڤلوگر المحترف - فتح وضع الكاميرا السينمائية - فتح خيار التصوير بالتعريض الطويل - فتح وضع التقريب الضئيل - فتح وضع الحلم - فتح خيار الإلتقاط البطيء - فتح خيار التدفق الخلفي للوقت - فتح خيار تجميد الوقت فتح خيار اللتقاط الصور برفع راحة اليد - فتح الألوان المحسنة - فتح وضع المكياج - يسري مفعوله فقط عند استخدام الكاميرا الأمامية - فتح خيار 60 إطار بالثانية (60FPS) - غير متاح في بعض الجودة. يرجى التأكد من أن جهازك مدعوم. - فتح خيار 120 إطار بالثانية (120FPS) - يدعم فقط في جودات 4K. يرجى التأكد من أن جهازك مدعوم. - فتح خيار تقريب الصوت - فتح خيار الـHDR - فتح خيار التحسين بواسطة الـAI - فتح Beautify الجديدة - تأخذ المفعول فقط عند استخدام الكاميرا الأمامية - فتح Master portrait - لا يعمل بشكل صحيح على بعض الأجهزة - فتح RAW - فتح LOG - فتح HEIF - فتح تتبع الحركة في التركيز - فتح التقاط الحركة - فتح ازالة النمش - فتح تأثيرات المكياچ للرجال تمكين خيارات المختبر فتح تتبع العيون في التركيز فرض الحد الأقصى من السطوع عند استخدام الكاميرا @@ -642,6 +593,8 @@ تعطيل إزالة وضع الشبكة فتح VoLTE للشريحة الثانوية استخدام بيانات الجوال أثناء مكالمات VoLTE على شريحة SIM الثانوية + فتح رابط الصوت + فتح الرابط الصوتي لبعض SIMs التي تدعم الاتصال عبر WiFi التنزيلات حظر إنشاء مجلد .xlDownload @@ -669,12 +622,10 @@ إخفاء زر الكاميرا إخفاء الشاشة الذكية الحالي - عرض ثواني الساعة تمويه أزرار شاشة القفل بعد التمكين، يتم تمويه خلفية زر الكاميرا وزر الشاشة السلبية على شاشة القفل، مما قد يؤدي إلى استهلاك طاقة مرتفع.\nيدعم الثيم الافتراضي فقط. نصف قطر الخلفية لون الخلفية - إجبار الساعة على استخدام خطوط النظام انقر مرتين لقفل الشاشة انقر مرتين فوق موقع فارغ لقفل الشاشة إلغاء قفل الإشعارات @@ -711,13 +662,8 @@ إدارة الأيقونات إدارة مؤشر سرعة الشبكة إدارة مؤشر الساعة - مؤشرات الأجهزة تنبيه قوي ذكي تركيز الكلمات - التصاميم - وضع التوافق - تمكين تخطيط ملء الشاشة بالقوة لجميع الشاشات ذات الشكل الخاص - وضع التخطيط نقر مزدوج للنوم شريط مزدوج لشريط الإشارة ثيمات الأيقونات @@ -746,8 +692,6 @@ الأجهزة الشبكة الخصوصية - عرض الأيقونات على الجانب الأيسر - عرض الأيقونات على الجانب الأيمن الـ Wi-Fi الـ Wi-Fi المساعد Wi-Fi إعتياي @@ -790,23 +734,17 @@ مجموعة صندوق الصوت الاستيريو تلفاز سماعة رأس لاسلكية - الحد الأقصى لعدد نقاط الإشعارات الحد الأقصى لعدد أيقونات الإشعارات إخفاء النسبة المئوية للبطارية إخفاء علامة النسبة المئوية للبطارية إخفاء مؤشر الشحن إخفاء أيقونة البطارية تخصيصات البطارية - مؤشر البطارية الـ Wi-Fi شبكة المحمول تبديل الـ Wi-Fi وشبكة المحمول سرعة الإنترنت مشهد الصوت - إجبار إستخدام أيقونة HD الجديدة - يدعم فقط بعض إصدارات النظام - فاصل سرعة الشبكة - الخط العمودي بين الوقت وسرعة الإنترنت لا يُعرض على الأجهزة التي تحتوي على كاميرا مركزة إخفاء شريط الحالة عند التقاط لقطة الشاشة نوع أيقونة بيانات الجوال تمكين التعديل @@ -822,21 +760,9 @@ تعتبر قِيم سرعة الشبكة الأقل من هذا المستوى بطيئة وسيتم عرض أيقونة مؤشر مختلفة (بعض الأيقونات فقط) إخفاء البايت لكل ثانية (*ب/ث) أيقونة المؤشر - وضع ساعة مخصص - تنسيق الساعة - عرض السنة - عرض الشهر - عرض اليوم - عرض الأسبوع - عرض ساعة مزدوجة - عرض فترة الساعة - عرض الثواني - إخفاء المسافة - عرض مزدوج تنسيق الصف المزدوج نموذج تنسيق الساعة حجم الساعة - حجم الساعة في الصف المزدوج صالح فقط عند عرضها في صفين إصلاح اللون تعطيل الرسوم المتحركة لتبديل الساعة في ظل الإشعارات @@ -852,36 +778,6 @@ تنسيق ساعة شريط الحالة تنسيق ساعة صغيرة في ظل الإشعارات تنسيق ساعة شريط الحالة - الطاقة - درجة الحرارة - حجم الخط - عرض المحتويات - إخفاء الأماكن العشرية - إخفاء الوحدات - عرض على اليمين - إظهار التيار بشكل دائم بقيمة إيجابية - إظهار الطاقة بشكل دائم بقيمة إيجابية - عرض في صف واحد - ترتيب عكسي - عرض فقط عند الشحن - فاصل تحديث الحالة - إصلاح درجة حرارة المعالج - أدخل الرقم /sys/devices/virtual/thermal/thermal_zone* - مركزي - زوايا مستديرة - حدود الرؤية - محاذاة عمودية - اللون - لون البطارية وهي مكتملة - لون البطارية وهي منخفضة - لون وضع توفير الطاقة - لون البطارية أثناء الشحن - الإرتفاع - الطرف الأفقي - الشفافية - اللمعان - مستوى البطارية المنخفض - اختبار التصاميم المعلومات تصحيح الأخطاء @@ -902,11 +798,9 @@ إضافة مساحة بيضاء في نهاية كلمات الأغاني اجعل كلمات الأغاني المتحركة مكتملة قدر الإمكان مركز التحكم - بطاقة بطاقة إشعار الوسائط مغناطيس الإشعارات - شفافية الخلفية للبطاقة %1$s مفعل %1$s غير مفعل مفتاح تبديل شبكة 5G @@ -929,21 +823,9 @@ الأعمدة %d عمود(ـات) الأعمدة (بالعرض) - إدخال Xiaomi Smart Play - إدخال Xiaomi Smart Hub - إدخال التحكم بالجهاز - شفافية خلفية تفاصيل التحكم تعطيل الوضع الشفاف تعطيل ضبط خلفية الإشعارات لتكون شفافة - نموذج تشويش الإشعارات - تحسين الإشعارات - ميزة تجريبية. متاحة فقط لأجهزة Android 13 وما فوق. بعد التمكين، سيتم تحسين تشويش الإشعارات في بعض المناطق. قد يحدث مشكلة في تعطل واجهة النظام على بعض الأجهزة. - نصف قطر التشويش - دون إشعار منسدل - نصف قطر الزوايا - لا حاجة لتعديل السمة الافتراضية - قيمة خلفية التشويش - قيمة الخلفية الافتراضية + تحسين تأثير مزج الألوان في لوحة التحكم بالوسائط شريط التقدم إزالة قيود الإجراءات المخصصة لبطاقات إشعار الوسائط موجي @@ -958,6 +840,8 @@ إزالة خلفية مزج الألوان من البطاقة نصف قطر خلفية التشويش التعتيم في طبقة التراكب الخلفية + زر الوسائط + شريط البحث عن الوسائط الإشعارات المدمجة تقليل المسافات الرأسية للإشعارات إعادة توجيه إعدادات الإشعارات @@ -980,8 +864,6 @@ إخفاء الفواصل فقط إخفاء اسم الجهاز إخفاء جميع الأسماء - نمط بلاطة البلوتوث - نقل بلاطة البلوتوث بالقرب من بلاطة الشبكة قائمة إشعارات موسعة فتح معلومات التطبيق، إغلاق التطبيق بالقوة وفتح في نافذة عائمة من قائمة الإشعارات (اسحب الإشعار لليسار لفتحه) مركز التحكم الجديد @@ -1000,18 +882,16 @@ السماح بعرض 10 أو 17 إشعارًا أو أكثر. تحسين خلط ألوان الخلفية في قسم الإشعارات العودة إلى نمط الإشعارات العادي وخلط الألوان + قيمة سطوع العرض + عرض قيمة مستوى الصوت + المحتوى + النسبة المئوية + القيمة الأصلية أخرى شريط الصوت الأصلي قائمة إيقاف التشغيل الأصلية - تستخدم MIUI واجهة قائمة إيقاف التشغيل القديمة، بينما يستخدم HyperOS واجهة قائمة AOSP. - لا يمكن تطبيق التعديلات على شريط الصوت في HyperOS/MIUI على شريط الصوت الأصلي فتح محرر الحافظة AOSP - بعد الفتح، سيتم عرضه مع محرر HyperOS/MIUI. - رسوم متحركة للشحن - نمط رسوم الشحن المتحركة - اختر نمط رسوم الشحن في شاشة القفل أخرى - منع إيقاف البلوتوث مؤقتًا إخفاء زر تقسيم الشاشة إخفاء النقاط الثلاثة الثابتة، بما في ذلك أعلى النافذة الصغيرة وزر المنتصف في الأعلى لوضع الشاشة الأفقية في HyperOS للتابلت (لا يؤثر على استخدام الوظائف). تعطيل زر تقسيم الشاشة @@ -1030,12 +910,16 @@ تخصيص لون السمة تخصيص ألوان السمة بدلاً من سحب الألوان من ورق الحائط النظامي اختيار لون السمة - مؤقت موسع علامة التبديل السريع إشعار تعطيل القائمة البيضاء للإشعارات إزالة قيود الضبابية من القوائم المتقدمة قم بإلغاء قفل ضبابية القوام المتقدمة، والتي يتم تعطيلها بشكل افتراضي للموضوعات التابعة لجهات خارجية في المكون الإضافي لواجهة المستخدم للنظام. + شريط الصوت + اضغط لتوسيع شريط الصوت الثانوي + عند تمكين هذه الميزة، يتم إيقاف تشغيل زر التوسيع + إخفاء أزرار كتم الصوت وعدم الإزعاج + مؤقت موسع تمكين ضبابية شريط الصوت نقل statusbar_gestures.dat إلى دليل MIUI مخصص لنماذج MTK التي تعمل بنظام Android12+. قد يتسبب ذلك في تحميل GPU عالي. @@ -1076,7 +960,6 @@ فتح Xiaomi HyperAI بعد تفعيلها، يتم عرض خيار Xiaomi HyperAI في الإعدادات. دعم ميزات الذكاء الاصطناعي للجهاز يتم تحديده بواسطة Xiaomi. الوظائف المميزة - فتح لقطة شاشة المنطقة مساعد VoIP الشاشة والإضاءة الخلفية فتح دقة الصورة الفائقة @@ -1133,14 +1016,8 @@ إيقاف ظهور مربع الحوار \"تشغيل التحديثات التلقائية\" الأذونات - الحافظة - إخفاء إشعارات التنبيه إيقاف إيقاف التشغيل التلقائي لتشغيل التطبيقات تلقائيًا - قراءة الحافظة باستخدام إشعارات التنبيه - إخفاء الحوار والسماح للتطبيق بقراءة الحافظة بشكل افتراضي - قراءة الحافظة - الإرسال خدمات الاتصال البيني فتح الاتصال بالجهاز دعم إجبارى لبث الكاميرا @@ -1149,7 +1026,6 @@ مسجل الصوت تعطيل العلامة المائية للذكاء الاصطناعي - الشاشة الدائمة الشاشة الدائمة ومحرر قفل الشاشة فتح الحد الزمني لعرض الشاشة الدائمة إعادة تشغيل واجهة النظام لتمكين الميزة بالكامل @@ -1204,8 +1080,7 @@ Xiaomi Cloud Google Google & OneDrive - - مكونات أمان MIUI + مكونات أمان النظام منع تحميل قائمة التطبيقات المثبتة تلقائيًا تعطيل فحص البيئة @@ -1369,7 +1244,6 @@ حجم الأيقونة التطبيقات الحديثة سرعة الرسوم المتحركة - تعطيل تخفيف خلفية الشاشة إلغاء تثبيت التطبيقات المثبتة إخفاء شريط الحالة في التطبيقات الحديثة إخفاء النافذة العائمة عند عكس الشاشة @@ -1480,13 +1354,19 @@ تحسين تأخير تشغيل التطبيق محرر المعرض + تعليمات للاستخدام:\n- الرجاء استخدام v2 hook للإصدارات 1.7.5.0.4 وما بعدها، يرجى استخدام v1 hook للإصدارات الأقل من 1.7.5.0.4 + نوع خطاف محرر المعرض الأساس + المؤلف الكتابة بواسطة الذكاء الاصطناعي + تخصيص الإطار + وظيفة مشتركة فتح ميزات تخصيص ديزني الميزات المفتوحة تشمل ما يلي:\n• الإطارات المخصصة - إطارات مخصصة من ديزني (تتعارض مع الإطارات المخصصة الأخرى)\n• خلفية بوكيه - بوكه ميكي\n• الملصقات - ملصقات ديزني فتح إطارات الصور المخصصة لعيد رأس السنة الصينية لإضافة إطارات صور مخصصة لعيد رأس السنة الصينية بشكل دائم، المطلب الأساسي هو أنك بحاجة إلى إطار صورة مخصص من لايكا أو إطار صورة مخصص من ريدمي. إزالة حد القص الأدنى للصورة + فتح تخصيص الإطار تخصيص نوع الإطار فتح فلتر لايكا يتم دعم بعض الإصدارات فقط @@ -1494,6 +1374,7 @@ مشاركة شاومي إيقاف إغلاق مشاركة شاومي التلقائي + تمكين خَدمات الموقع عند إيقاف مشاركة الملفات فتح وضع النقل السريع الجميع @@ -1567,8 +1448,6 @@ إيقاف إعلانات مركز الألعاب قد يؤدي هذا إلى حدوث خلل في وظائف أخرى - الأمان - الأمان الأمان إدارة التطبيقات البطارية @@ -1580,14 +1459,11 @@ إغلاق نافذة منبثقة Dolby عرض درجة حرارة البطارية عرض صحة البطارية بالتفصيل - حماية الحافظة - تقليل دقة الموقع خدمة GMS مفاتيح Taplus استبدال أيقونة البلاط الداكنة جدًا التحكم في سطوع الفلاش يسمح لك بالتحكم في سطوع الفلاش عن طريق سحب شريط السطوع - إدارة التطبيق للحصول على رقم الهاتف وتسجيل الدخول بنقرة واحدة تبسيط شاشة الأمان الرئيسية إزالة بطاقة التوصية بالوظائف قفل التطبيقات مع تشويش الرقم السري @@ -1730,6 +1606,7 @@ منع GetApps من مراقبة تثبيت وإلغاء تثبيت التطبيقات تعطيل الإعلانات تخطي فحص المخاطر + تعطيل مربع حوار بدأ الدفع السماعات تغيير حالة سماعة الرأس إلى الصوت الأصلي @@ -1750,8 +1627,12 @@ طريقة إدخال Sogou إزالة الحد الأقصى لعدد الحافظات إضافة زر مسح الحافظة + + خدمة تفعيل Xiaomi SIM + تعطيل تفعيل شريحة SIM 2 عند التجوال + يتم دعم البر الرئيسي الصيني فقط + استخدام نهج تصفية التجوال الأكثر عدوانية - الماسح الضوئي الماسح الذكي فتح مسح بطاقة الهوية فتح الترجمة @@ -1761,7 +1642,6 @@ فتح مسح PPT فتح مسح الملفات - Mi AI Super AI تعطيل العلامة المائية للمحادثة @@ -1913,4 +1793,8 @@ معطل تعطيل الاقتراحات تمكين الاقتراحات + التطبيق يعمل بشكل غير طبيعي + %s أعطال متعددة + انقر هنا لعرض التفاصيل + عرض diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 48dd1179d..a607d75eb 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -21,7 +21,7 @@ Nueva versión encontrada © 2023-2025 Sevtinge & HyperCeiler Contributors. - ¡Hagamos HyperOS/MIUI grande otra vez! + ¡Hagamos HyperOS grande otra vez! añadir o eliminar archivos en el almacenamiento interno se usa para proporcionar servicios como ajustar latitud y longitud En el uso, para proporcionarle más características, es posible que solicitemos permiso de Root/Su. Puede ir a administración de permisos en cualquier momento para ajustar el estado de autorización de todos los permisos, y por favor vaya a su administrador de Root/Su para obtener permisos. @@ -30,19 +30,29 @@ aplicaciones del sistema Bienvenido a HyperCeiler, que funciona en Xposed framework, por eso puede utilizarla para descifrar y modificar otras aplicaciones soportadas para obtener mejoras de HyperOS/MIUI. En el uso, para proporcionarle más características, es posible que le solicitemos permiso de Root/Su. Puede ir a su administrador de Root/Su para obtener permisos. Atención + %1$s ha entrado en modo seguro debido a múltiples bloqueos, y las características de HyperCeiler se han desactivado temporalmente. Ver registros de excepciones + Desactivar modo seguro Cancelar Sugerencia + %1$s todavía está en modo seguro y las funciones de HyperCeiler han sido desactivadas. ¿Deshabilitar el modo seguro? Registros de excepciones Archivo Clase Método Línea Mensaje de excepción + Seguimiento de la pila Consejo: Aquí está el consejo predeterminado. Si puede verlo, significa que hay un problema con HyperCeiler, por favor envíelo al desarrollador a tiempo de manera efectiva. La fuente de ROM puede no ser oficial de Xiaomi, pero tal vez algunas funciones no funcionen. Póngase en contacto con el proveedor de ROM para obtener más información. + El dispositivo actual se está ejecutando en una versión del sistema que no está (completamente) adaptada, lo que puede resultar en anomalías en la funcionalidad de HyperCeiler. La verificación de la firma falló, y la versión actual que está utilizando puede no ser de la versión oficial de HyperCeiler, que puede contener código malicioso. + El modo seguro automático puede desconectar algunas aplicaciones a tiempo cuando fallan varias veces para garantizar la seguridad. Esta función requiere el alcance del gancho del marco del sistema para ejecutarse. Recomendamos encender el ámbito del marco del sistema para activar el modo de seguridad automática. + Puede seleccionar texto después de una pulsación larga o doble, o copiarlo y retroalimentarlo al desarrollador. ¡Hoy es el cumpleaños de HyperCeiler!\n¡Gracias por tu apoyo durante el año pasado, y sigamos trabajando juntos este año! + Hoy en la historia: Sevtinge pronunció un discurso importante el 14 de julio de 2022. + El servicio de registro de dispositivo actual es anormal y las características de HyperCeiler serán limitadas. Por favor, restaure el servicio de registro para que se pueda ejecutar normalmente.\nCódigo de error: %1$s + El servicio de registro del dispositivo actual es anormal y las características de HyperCeiler serán limitadas. Por favor, restaure el servicio de registro para que se pueda ejecutar normalmente. Español Mateo795 @@ -62,7 +72,11 @@ aplicaciones del sistema Versión del sistema operativo Tirar hacia abajo la barra de estado para mostrar los accesos directos y las notificaciones del sistema Reiniciar las aplicaciones marcadas fácilmente + ¿Está seguro de que quiere borrar toda la caché de DexKit? + Se ha limpiado correctamente toda la caché de DexKit Configurar entrada de la página de inicio + ¿No encuentras las características de la aplicación? + ¿No puedes encontrar las funciones de la aplicación en la página de inicio? Aplicaciones desinstaladas:\n Aplicaciones deshabilitadas u ocultas:\n Ocultar esta ayuda en la página de inicio @@ -93,8 +107,8 @@ aplicaciones del sistema Compartir preferencias CMD con root Eliminar toda la caché de DexKit - - + Desactivar el diálogo de alertas en vivo del registrador + Intentar arreglar el servicio de registro LSPosed Mostrar Copia y restauración Solución de problemas @@ -170,6 +184,7 @@ aplicaciones del sistema Personalizar el color Transparencia Confirmar la selección + ¿Necesitas otros ajustes? Volver a la página de inicio Volver a la página anterior Volver @@ -189,14 +204,35 @@ aplicaciones del sistema Matiz Luminosidad Saturación + Colapsar la hoja inferior + Expandir la hoja inferior + Expandir a la mitad Cancelar + Borrar + Valor inválido. Por favor compruébelo y vuelva a introducirlo. Transparencia + Color personalizado + Moneta + Cuadrícula + Deslizador + Matiz + Luminosidad Saturación Editar Colecciones + %s seleccionado Colapsar Expandir + Mostrar barra lateral Seleccionar + Ocultar barra lateral + Valor inválido. Por favor compruébelo y vuelva a introducirlo. + Actualizando… + Suelta para actualizar + Eso es todo por ahora + Eso es todo por ahora + Sólo un segundo… + No se pudieron cargar los elementos Margen de arriba Margen del fondo @@ -209,10 +245,6 @@ aplicaciones del sistema Función Recomendado Editar - Grabar videos - Tomar fotos - Retrato - Pro Activar Desactivar Activar personalizado @@ -224,6 +256,7 @@ aplicaciones del sistema Ventanas pequeñas Regular las ubicaciones de guardar Solo en últimas versiones se funciona + Usar texturas avanzadas Predeterminado Expandir Fijar ancho de contenido @@ -319,29 +352,32 @@ aplicaciones del sistema Frecuencia de uso Almacenamiento usado Tiempo de instalación - Tres pegatinas grandes - Una pegatina grande y dos pequeñas Desenfocado predeterminado Desenfocado personalizado Cerrar Modo predeterminado del sistema Forzar brillo máximo Forzado + Activar normalmente + Activar a la izquierda + Activar a la derecha Cerrar Modo de escritura predeterminado Modo I de escritura Apagar Estilo I de 5G Estilo II de 5G + Construir en azulejo de datos móviles Sin desenfoque Desenfoque de HyperOS/MIUI + Desenfoque AOSP (autoimplementado por aplicación) Desenfoque de AOSP Valor y unidad se muestran en una línea Valor y unidad se muestran en dos filas La velocidad de red del enlace de subida y bajada se muestra en una línea La velocidad de red del enlace de subida y bajada se muestra en dos filas Pantalla de una sola línea\n\nSolo reloj en la barra de estado - + Pantalla de dos líneas\n\nMini reloj de la barra de notificaciones en la parte superior\nReloj de la barra de estado en la parte inferior Mickey Mouse Mermelada de fresa Servicio de Google Play @@ -368,10 +404,9 @@ aplicaciones del sistema Solo enlaces soportados Ajustar volumen de forma predeterminada Ajustar volumen de forma instantánea - Control independiente de volumen Quitar restricciones de seguridad de volumen alto Para todos los casos - Deslizador de volumen de notificación + Sólo cuando los auriculares están conectados Nivel de volumen de media Puede causar que el desplazamiento de la barra de volumen se congele o que el volumen de Bluetooth sea anormal Ajustar el volumen de media con niveles @@ -440,6 +475,8 @@ aplicaciones del sistema Desactivar la verificación del bloqueo de la pantalla cada 72 horas \"Desactivar para verificar\" puede desactivarse Permitir que todas las aplicaciones usen el modo oscuro + Forzar la activación de texturas avanzadas + Toast de texturas avanzadas Deshabilitar verificación de MIUI lite Se permite administrar todas las notificaciones Captura de pantalla rápida @@ -464,6 +501,7 @@ aplicaciones del sistema Se permiten aplicaciones con APIs inferiores a 23 Desactivar comprobaciones persistentes Desactivar el agente de verificación del paquete + por ejemplo, Protección de Google Play Usar el instalador de paquetes de Android Navegador @@ -477,54 +515,10 @@ aplicaciones del sistema Marca de agua personalizada Información del fabricante Información del dispositivo - Desbloquear marca de agua de IA - Desbloquear exposición larga - Desbloquear modo de clon - Desbloquear espejo de bolsillo - Desbloquear modo de documento - Desbloquear modo de tarjeta ID - Desbloquear cámara dual - Desbloquear fotografía de lapso de tiempo - Desbloquear videos cortos - Desbloquear el modo de súperluna - Desbloquear el modo de panorama - Desbloquear el modo de píxel súperalto - Desbloquear el modo de retrato - Desbloquear movimiento lento - Desbloquear video-cielo - Desbloquear Vlog - Desbloquear Vlog Pro - Desbloquear cámara de película - Desbloquear exposición larga - Desbloquear zoom deslizante - Desbloquear sueño paralelo - Desbloquear obturador lento - Desbloquear vuelta de tiempo - Desbloquear congelación de tiempo Desbloquear obturador gestual - Desbloquear avanza de colores - Desbloquear maquillaje - Funciona solo cuando se utiliza la cámara frontal - Desbloquear 60FPS - No disponible en algunas calidades, asegúrese de que el móvil soporta las otras - Desbloquear 120FPS - Sólo funciona con la calidad de 4K, asegúrese de que el móvil lo soporta - Desbloquear zoom de audio - Desbloquear HDR - Desbloquear avanza de IA - Desbloquear nuevo embellecimiento - Funciona solo cuando se utiliza la cámara frontal - Desbloquear lente de maestro - No puede funcionar bien en algunos dispositivos - Desbloquear RAW - Desbloquear LOG - Desbloquear HEIF - Desbloquear enfoque de todo - Desbloquear captura de deportes - Desbloquear eliminación de lunares - Desbloquear ajustes de maquillaje para hombres Activar opciones de laboratorio Desbloquear enfoque ocular + Personalizar el color de tema Calendario Desbloquear suscripción @@ -553,6 +547,9 @@ aplicaciones del sistema Prohibir la creación de la carpeta .xlDownload Evitar que el administrador de descarga genere la carpeta .xlDownload en root del almacenamiento interno + IU de Descargas + Mostrar siempre el enlace de descarga completo + También arreglar que algunas tareas de descarga no pueden ser copiadas Interfaz del sistema Pantalla bloqueada @@ -572,10 +569,9 @@ aplicaciones del sistema Ocultar la cámara Ocultar la pantalla inteligente Corriente - Mostrar segundos en reloj Desenfocar los botones de cámara y pantalla inteligente + Radio del fondo Color de fondo - Forzar el reloj usar el tipo de letra del sistema Doble toque en la pantalla de bloqueo Tocar dos veces en un área vacía para bloquear la pantalla Ocultar la notificación del modo No molestar @@ -606,12 +602,7 @@ aplicaciones del sistema Administración de iconos Administración de indicadores de velocidad de red Administración de indicadores de reloj - Indicadores de hardware Toast Inteligente - Disposición - Modo de compatibilidad - Activar forzosamente el diseño de pantalla completa para todas las pantallas especiales - Modo de disposición Doble toque para apagar la pantalla Barra de señal de fila doble Tema de iconos @@ -640,8 +631,6 @@ aplicaciones del sistema Dispositivos Red Privacidad - Se muestra el lado izquierdo del icono - Se muestra el lado derecho del icono Wi-Fi Wi-Fi auxiliar Estándar de Wi-Fi @@ -682,23 +671,17 @@ aplicaciones del sistema Grupo de cajas de sonido Stereo Televisión Auricular inalámbrico - Número máximo de puntos de notificaciones Número máximo de iconos de notificaciones Ocultar porcentaje de batería Ocultar signo de porcentaje de batería Ocultar indicador de carga Ocultar icono de batería Personalización de batería - Indicador de batería Wi-Fi Red móvil Intercambiar iconos de Wi-Fi y red móvil Velocidad de internet Escena de sonido - Forzar el uso de nuevo icono de HD - Solo funciona en algunas versiones de sistema - Separador de velocidad de red - La línea vertical entre el tiempo y la velocidad de Internet no se muestra en dispositivos con cámara centrada Ocultar barra de estado al tomar captura de pantalla Icono de tipo de red móvil Activar modificación @@ -714,21 +697,9 @@ aplicaciones del sistema Los valores de velocidad de red por debajo de este nivel se consideran lentos y se mostrará un icono de indicador diferente (solo algunos iconos) Ocultar Byte por segundo (*b/s) Icono del indicador - Modo de reloj personalizado - Formato de reloj - Mostrar año - Mostrar mes - Mostrar día - Mostrar semana - Mostrar doble hora - Mostrar período de reloj - Mostrar segundos - Ocultar espacio - Mostrar en dos filas Alineamiento de dos filas Ejemplo de formato de reloj Tamaño de reloj - Tamaño del reloj de dos filas Funciona solo cuando se muestra en dos filas Corregir color Deshabilite la animación de transición del reloj deslizante en el Centro de notificaciones @@ -736,35 +707,6 @@ aplicaciones del sistema Mostrar Formato del reloj de la barra de estado Disposición del reloj de la barra de estado - Potencia relacionada - Temperatura relacionada - Tamaño de fuente - Mostrar contenidos - Ocultar la parte decimal - Ocultar unidades - Mostrar a la derecha - Siempre se muestra el valor positivo de corriente - Se muestra en una fila - Invertir orden - Se muestra solo en carga - Intervalo de actualización de estado - Cambiar el método de adquisición de la temperatura de CPU - Introduzca el número de /sys/devices/virtual/thermal/thermal_zone* - Centrado - Esquina redondeada - Limitar visibilidad - Se alinean verticalmente - Color - Color de batería llena - Color de batería baja - Color del modo de ahorrar batería - Color de carga - Altura - Margen horizontal - Transparencia - Brillante - Nivel de batería baja - Prueba Disposición Información Debug @@ -774,10 +716,8 @@ aplicaciones del sistema Texto Este es un largo texto que será salida en forma de desplazamiento Centro de control - Tarjeta Pegatinas - Notificación - Transparencia del fondo de tarjeta + Centro de notificaciones %1$s está activado %1$s está desactivado Interruptor de red 5G @@ -786,6 +726,8 @@ aplicaciones del sistema Barra de estado se vuelve automáticamente Color de fondo Color de icono + Habilitar la personalización del mosaico pequeño + Habilitar la personalización del mosaico grande Después de abrir, hacer clic en pegatinas y automáticamente se vuelve la barra de estado Eliminar títulos Filas @@ -794,19 +736,6 @@ aplicaciones del sistema Columnas %d Columnas Columnas (Horizontal) - Entrada de MiPlay - Entrada de Mi Hub inteligente - Entrada del control de dispositivo - Transparencia del control de fondo de detalles - Configuraciones de notificación - Optimización de notificación - Función experimental, solo disponible en Android 13 o superior. Después de activar, el desenfoque de notificaciones en algunas áreas se optimizará\nPuede haber un problema de bloqueo de la interfaz del sistema en algunos modelos. - Radio de desenfoque - Sin notificaciones desplegables - Radio de esquina - El tema predeterminado no se necesita ajustar - Valor de fondo desenfocado - Valor de fondo predeterminado Optimizar el efecto de mezcla de colores del panel de control de medios Barra de progreso Ondeado @@ -839,8 +768,6 @@ aplicaciones del sistema Solo se oculta el divisor Mostrar el nombre del dispositivo Se ocultan todos - Estilo de pegatina de Bluetooth - Mover la pegatina de Bluetooth a cerca de la de red Menú de notificaciones extendido Abrir información de la aplicación, cerrarla y abrirla en ventana flotante desde el menú de notificación (deslizar la notificación a la izquierda para abrirla) Centro de control nuevo @@ -853,15 +780,14 @@ aplicaciones del sistema No añadido Eliminar restricciones de notificación de burbaja No hay restricciones en el desenfoque de fondo para materiales prémium de Xiaomi solo para la eliminación en temas no oficiales + Contenido + Porcentaje + Valor de origen Otros Barra de volumen de AOSP - La modificación de la barra de volumen de Xiaomi no se aplica a la barra de volumen de AOSP + Menú de apagado nativo Desbloquear el editor de portapapeles AOSP - Animación de carga - Estilo de animación de carga - Seleccione el estilo de animación de carga de la pantalla de bloqueo Otros - Evitar que el bluetooth se apague temporalmente Ocultar el botón de ventana fácil Ocultar el botón de ventana fácil centrado en la parte superior de la pantalla horizontal de HyperOS para Pad Sólo para tabletas @@ -878,10 +804,10 @@ aplicaciones del sistema Personalizar el color de tema Personalizar colores de tema en lugar de extraer color del fondo de pantalla del sistema Seleccionar el color de tema - Temporizador extendido Pestaña de interruptor rápido Notificación Desactivar lista blanca de notificaciones + Temporizador extendido Activar desenfoque de la barra de volumen Solo para Android 12+ y MTK, pero puede causar alta carga de GPU @@ -913,8 +839,9 @@ aplicaciones del sistema Conexión & compartimiento Nueva página de NFC Después de abrirse, la aplicación de pago predeterminada en los modelos no soportados no puede ser Xiaomi Monedero + HyperAI de Xiaomi + Desbloquear HyperAI de Xiaomi Funciones destacadas - Desbloquear la captura de un área Asistente de VoIP Mostrar & Pantalla de bloqueo Desbloquear súperresolución @@ -946,6 +873,7 @@ aplicaciones del sistema Activar tema de Pad Activar tema de Fold + Desactivar anuncios Actualización Activar disfrazar versión en el actualizador @@ -961,22 +889,18 @@ aplicaciones del sistema Introduzca el código de modelo del dispositivo que quiere para especificar el dispositivo, que puede ayudarle a usted para obtener ROM de otros modelos, lo cual es extremadamente peligroso Permisos - Portapapeles - Ocultar Toast - Leer el portapapeles usando Toast - Ocultar el diálogo y permitir que la aplicación lea el portapapeles por defecto - Leer el portapapeles - Proyectar la pantalla Servicios de interconexión Desbloquear interconexión de dispositivo Forzar el soporte para la transmisión de cámara Bloquear la creación de carpetas de hpplay + Grabador de sonido + Desactivar marca de agua de IA - Pantalla siempre activa Editor de \"se muestra siempre\" y la pantalla de bloqueo Desbloquear el límite de tiempo de visualización de la pantalla siempre activada + Reinicie la interfaz de usuario del sistema para activar completamente la función Desbloquear Aod Aon Taplus @@ -1004,7 +928,9 @@ aplicaciones del sistema Mi Canvas Eliminar restricciones en el uso en móviles + LPA IMEI personalizado + Asegúrese de que ha introducido correctamente el IMEI. Un IMEI incorrecto puede hacer que el eSIM no esté disponible o anormal. No nos hacemos responsables de las consecuencias que puedan derivarse de ello. Galería Desbloquear el rango dinámico alto @@ -1026,10 +952,10 @@ aplicaciones del sistema Servicio de Xiaomi Cloud Google Google & OneDrive - - Componentes de seguridad + Componentes de seguridad del sistema Evitar la subida automática de la lista de aplicaciones instaladas + Deshabilitar verificación de entorno Lanzador del sistema Gestos y Navegación @@ -1069,6 +995,7 @@ aplicaciones del sistema Ninguna Disposición Pantalla de inicio + Indicador Base Barra de búsqueda Indicador de página @@ -1122,7 +1049,7 @@ aplicaciones del sistema Insensidad de color Cantidad de aplicaciones en una columna de carpeta %d Columnas - + Distancia de carpeta desde el margen lateral de la pantalla Espacio horizontal de carpeta Posición del título Usar la anchura de toda la carpeta @@ -1148,6 +1075,7 @@ aplicaciones del sistema Icono y nombre Icono Animación de iconos + Desenfoque de aplicación Nombre Texto desplazable Los nombres de aplicaciones que son demasiado largas desplazarán en lugar de presentarse en filas @@ -1171,10 +1099,12 @@ aplicaciones del sistema Parámetros de animación personalizada Amortecimento Rigidez + Ocultar texto del informe en el diálogo de desinstalación + Color de fondo del mensaje de notificación personalizado Color personalizado + Tamaño de iconos Tareas recientes Velocidad de animación - Desactivar que se obscurece el fondo de pantalla Desbloquear aplicaciones fijadas Ocultar barra de estado en Tareas recientes Ocultar botón de Ventanas pequeñas @@ -1196,6 +1126,8 @@ aplicaciones del sistema Se oculta el icono de limpieza cuando no hay tarjeta Desenfoque del fondo Mostrar lanzador como fondo + Tamaño de fondo del lanzador + Ocultar aplicaciones en Recientes Widget Animación de widget Se muestran widgets de HyperOS/MIUI @@ -1246,6 +1178,7 @@ aplicaciones del sistema Iconos grandes con esquinas redondeadas Administración de iconos del lanzador Prohibir Toast de \"por favor deslícese de nuevo\" + Ocultar barra de estado cuando la aplicación está bloqueada Está prohibido llamar a la barra lateral cuando está fijada Saltar a la pantalla de bloqueo cuando no está fijado Aplicaciones fijadas @@ -1268,6 +1201,7 @@ aplicaciones del sistema Ninguno Desenfoque (con animación simple) Desbloquear más opciones para configuraciones del inicio Tal vez las funciones desbloqueadas no estén disponibles, y algunas funciones necesitan soporte subyacente del sistema + Optimizar el retraso de inicio de la aplicación Editor de Galería Funciones básicas @@ -1280,9 +1214,11 @@ aplicaciones del sistema Personalizar el tipo de marco Desbloquear filtros de Leica Solo en algunas versiones se funciona + Desbloquear AIGC Mi Share No se permite el cierre automático de Mi Share + Habilitar servicios de ubicación cuando el compartir de archivos está apagado Desbloquear transferencia de turbo Todos @@ -1304,12 +1240,14 @@ aplicaciones del sistema Se muestra más información sobre el paquete Se muestra más información sobre la aplicación que se está instalando No permitir subir información de la aplicación + La verificación de seguridad no será posible si está desactivada Servicio de NFC Desactivar el sonido de notificación de NFC Se permite reconocimiento cuando la pantalla está apagada Visor de HTML + Desactivar el control de la nube Asistente personal Widget de Pad/Fold @@ -1319,6 +1257,7 @@ aplicaciones del sistema Estilo del fondo Valor del desenfoque del fondo de la pantalla inteligente Color del fondo de la pantalla inteligente + Desbloquear límite de conteo de widgets Batería y rendimiento Personalizar FPS de aplicaciones @@ -1345,9 +1284,8 @@ aplicaciones del sistema Personalizar el modelo de la captura de pantalla con marco de móvil Ingrese un código de modelo + Esto puede causar que otras funciones sean anormales - Seguridad - Centro de seguridad de Tablet Herramientas de seguridad Administración de aplicaciones Ahorro de batería @@ -1358,14 +1296,11 @@ aplicaciones del sistema Cerrar la ventana emergente de Dolby Mostrar temperatura de batería Mostrar estado detallado de la batería - Proteger el portapapeles - Menor precisión de posicionamiento Servicio de GMS Interruptores de Taplus Reemplazo de icono de pegatina de modo de exteriormente oscuro Control de brillo de linterna Se permite controlar el brillo de la linterna por el deslizador de brillo - Administrar las aplicaciones que obtiene su número de teléfono móvil para iniciar sesión con un solo clic Usar el PIN sin orden de aplicaciones Se cambia aleatoriamente la secuencia del teclado de PIN de bloqueo de aplicaciones Desbloquear el ajuste inteligente del brillo de la luz de relleno @@ -1398,6 +1333,7 @@ aplicaciones del sistema Se bloquean 100 puntos y se deshabilita la optimización Saltar límite de cuenta Saltar la espera de la confirmación para la mayoría de opciones peligrosas oficiales + Omitir la página de advertencia Desenfoque de la barra lateral Eliminar restricciones de notificación de burbaja Ocultar el aviso de batería baja @@ -1439,6 +1375,8 @@ aplicaciones del sistema Función de barra lateral Se inician juegos rápidamente Al iniciarse el juego, cuya animación de pantalla de apertura pasa a una velocidad de 3 veces, que solo funciona con algunos juegos + Saltar seguridad SIM de la cuenta Xiaomi + Puede utilizar esta función incluso sin iniciar sesión en su cuenta de Xiaomi Información de aplicación de AOSP Añadir entrada de información de aplicación de AOSP Administrador de aplicaciones de AOSP @@ -1487,6 +1425,7 @@ aplicaciones del sistema Prohibir el uso de iconos de terceros Haz que el escritorio esté más limpio Desactivar el monitor de paquetes + Desactivar anuncios Auriculares Aumentar la frecuencia de muestreo @@ -1502,8 +1441,10 @@ aplicaciones del sistema Método de entrada Sogou Eliminar el límite en la cantidad de portapapeles + Añadir botón de borrar portapapeles + - Escáner + Escánear de IA Desbloquear tarjeta de identificación escaneada Desbloquear traducción Desbloquear OCR @@ -1512,9 +1453,14 @@ aplicaciones del sistema Desbloquear escaneo de PPT Desbloquear archivos escaneados - Mi IA + Súper IA Desactivar marca de agua en charlas + Activador de voz + Permitir la grabación del despertador con voz sin internet + Permite la grabación de palabras desde el despertador con voz cuando esté desconectado + Establecer precisión para despertador con detección de voz + Los valores más altos son más difíciles de detectar. El valor por defecto es 70%, para la palabra clave XATX es 0%. Después de ajustar, necesita reiniciar la aplicación de destino y volver a inscribir su palabra de activación. Otro Mi Hub Inteligente @@ -1646,6 +1592,8 @@ aplicaciones del sistema Ajustes Modo avión Brillo automático + SIM 1 de VoWiFi + SIM 2 de VoWiFi Agregar hook Seleccionar modo Proyectos de código abierto @@ -1656,4 +1604,8 @@ aplicaciones del sistema Desactivar registro Desactivar sugerencias Activar sugerencias + La aplicación se está ejecutando anormalmente + %s bloqueos múltiples + Haga clic para ver los detalles + Ver diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 66df2ec69..091db70e5 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -19,7 +19,7 @@ --> - Jadikan HyperOS/MIUI Hebat Lagi! + Jadikan HyperOS Hebat Lagi! menambah dan menghapus file pada penyimpanan internal perangkat digunakan untuk menyediakan layanan latitude dan longitude Selama penggunaan, untuk memberi Anda lebih banyak fitur, kami mungkin meminta izin Root/Su dari Anda. Anda dapat membuka Manajemen Izin kapan saja untuk menyesuaikan status otorisasi semua izin, dan silakan buka manajer Root/Su Anda untuk meng-izinkan. @@ -187,10 +187,6 @@ Fungsi Menyarankan Editor - Catatan - Tembakan - Potret - Pro Mengaktifkan Cacat Pengaktifan khusus @@ -293,8 +289,6 @@ Frekuensi penggunaan Penyimpanan bekas Waktu instalasi - Tiga ubin besar - Satu ubin besar dan dua ubin kecil Resmi hadir dengan blur Latar belakang khusus buram Menutup @@ -343,9 +337,7 @@ Hanya mendukung tautan Sesuaikan volume secara default Penyesuaian volume instan - Kontrol volume independen Hapus batasan keamanan volume tinggi - Penggeser volume notifikasi Tingkat volume media Hal ini dapat menyebabkan pengguliran bilah volume terhenti atau volume Bluetooth menjadi tidak normal Pengganda tingkat volume @@ -448,52 +440,7 @@ Tanda air perangkat khusus Informasi Pabrikan Informasi Perangkat - Buka kunci tanda air AI - Buka kunci eksposur panjang - Buka kunci mode Klon - Buka kunci cermin saku - Buka kunci mode Dokumen - Buka kunci mode Kartu ID - Buka kunci kamera ganda - Buka Kunci Durasi - Buka kunci video pendek - Buka kunci mode Super-bulan - Buka kunci mode Panorama - Buka kunci mode Piksel - Buka kunci mode Potret - Buka kunci Gerakan lambat - Buka kunci Video-langit - Buka kunci Vlog - Buka kunci Vlog Pro - Buka kunci kamera Film - Buka kunci Long-exp - Buka kunci zoom Dolly - Buka Kunci Mimpi - Buka kunci Rana Lambat - Buka kunci aliran balik Waktu - Buka kunci Pembekuan waktu Buka kunci rana Palm - Buka kunci Peningkatan warna - Buka kunci Riasan - Hanya berlaku saat menggunakan kamera depan - Buka kunci 60FPS - Tidak tersedia dalam beberapa kualitas, pastikan perangkat Anda didukung - Buka kunci 120FPS - Hanya mendukung kualitas 4K, pastikan perangkat Anda didukung - Buka kunci pembesaran Audio - Buka kunci HDR - Buka kunci peningkatan AI - Buka kecantikan baru - Hanya berlaku saat menggunakan kamera depan - Buka kunci lensa Master - Tidak dapat berfungsi dengan baik pada beberapa perangkat - Buka kunci RAW - Buka kunci LOG - Buka kunci HEIF - Buka kunci fokus trek Gerak - Buka kunci penangkapan gerak - Buka kunci Hapus tahi lalat - Buka kunci Sesuaikan efek riasan untuk pria Aktifkan opsi Lab Buka kunci Lacak mata @@ -542,9 +489,7 @@ Sembunyikan kamera Sembunyikan layar pintar Saat ini - Jam menunjukkan detik Kamera buram dan tombol layar pintar - Paksa jam menggunakan font sistem Ketuk dua kali layar kunci Ketuk dua kali lokasi kosong untuk mengunci layar Sembunyikan notifikasi mode zen @@ -574,12 +519,7 @@ Manajemen ikon Manajemen indikator kecepatan jaringan Manajemen indikator jam - Indikator perangkat keras Roti Bakar Kuat yang Cerdas - Tata Letak - Modus kompatibilitas - Aktifkan secara paksa tata letak layar penuh untuk semua layar berbentuk khusus - Modus tata letak Ketuk dua kali untuk tidur Bilah sinyal baris ganda Tema ikon @@ -608,8 +548,6 @@ Perangkat Jaringan Privasi - Sisi kiri ikon muncul - Sisi kanan ikon muncul Wifi Wi-Fi budak Standar Wi-Fi @@ -652,23 +590,17 @@ Grup Stereo Kotak Suara Televisi Headset nirkabel - Jumlah maksimum titik notifikasi Jumlah maksimum ikon notifikasi Sembunyikan persentase baterai Sembunyikan tanda persentase baterai Sembunyikan indikator pengisian daya Sembunyikan ikon baterai Kustomisasi baterai - Indikator baterai Wifi Jaringan Seluler Tukar Wi-Fi dan Jaringan Seluler Kecepatan internet Adegan suara - Paksa untuk menggunakan ikon HD baru - Hanya mendukung beberapa versi sistem - Pemisah kecepatan jaringan - Garis vertikal antara waktu dan kecepatan internet tidak ditampilkan pada perangkat dengan kamera terpusat Sembunyikan bilah status saat mengambil tangkapan layar Ikon tipe jaringan seluler Aktifkan Modifikasi @@ -684,21 +616,9 @@ Nilai kecepatan jaringan di bawah level ini dianggap lambat dan ikon indikator berbeda akan ditampilkan (hanya beberapa ikon) Sembunyikan akhiran Byte per detik (*b/s) Ikon indikator - Mode jam khusus - Format jam - Tampilkan tahun - Tampilkan bulan - Tampilkan hari - Tampilkan minggu - Tampilkan jam ganda - Tampilkan periode jam - Tampilkan detik - Sembunyikan ruang - Tampilkan ganda Perataan baris ganda Contoh format jam Ukuran jam - Ukuran jam baris ganda Hanya valid jika ditampilkan dalam dua baris Perbaiki warna Nonaktifkan animasi transisi jam slide di Pusat Pemberitahuan @@ -713,35 +633,6 @@ Format jam bilah status Format jam mini bilah notifikasi Pengaturan jam bilah status - Terkait dengan kekuatan - Terkait suhu - Ukuran huruf - Tampilkan isinya - Sembunyikan tempat desimal - Sembunyikan unit - Tunjukkan di sebelah kanan - Arus selalu menunjukkan nilai positif - Tampilan baris tunggal - Urutan terbalik - Tampilkan hanya saat mengisi daya - Interval pembaruan status - Perbaiki suhu CPU - Masukkan nomor /sys/devices/virtual/thermal/thermal_zone* - terpusat - Sudut membulat - Batasi visibilitas - Sejajarkan secara vertikal - Warna - Warna baterai penuh - Warna baterai lemah - Warna mode hemat daya - Warna pengisian daya - Tinggi - Margin horisontal - Transparansi - Bersinar - Tingkat baterai rendah - Tes Tata Letak Informasi Men-debug @@ -751,11 +642,9 @@ Teks Ini adalah teks panjang yang akan ditampilkan dalam bentuk bergulir Pusat kendali - Kartu Kartu Pemberitahuan Media magnet Pemberitahuan - Transparansi latar belakang kartu %1$s aktif %1$s tidak aktif Sakelar jaringan 5G @@ -772,21 +661,8 @@ Kolom %d Daftar Kolom (Lanskap) - Entri MiPlay - Entri hub pintar Mi - Entri kontrol perangkat - Kontrol Detail Nilai keburaman latar belakang Nonaktifkan Mode Transparan Nonaktifkan pengaturan latar belakang notifikasi menjadi transparan - Model Buram Pemberitahuan - Optimalisasi notifikasi - Fungsi eksperimental, hanya tersedia untuk model Android 13 dan yang lebih baru. Setelah diaktifkan, notifikasi buram di beberapa area akan dioptimalkan\nMungkin ada masalah antarmuka sistem crash pada beberapa model. - Radius Buram - Tanpa pemberitahuan dropdown - Radius Sudut - Tema default tidak perlu disesuaikan - Nilai Latar Belakang Buram - Nilai Latar Belakang Default Optimalkan efek pencampuran warna pada media panel kontrol Bergelombang Ramping @@ -817,8 +693,6 @@ Kustomisasi nama operator Hanya pembatas yang disembunyikan Sembunyikan semua nama - Gaya ubin Bluetooth - Pindahkan ubin bluetooth di dekat ubin jaringan Menu notifikasi yang diperluas Buka info aplikasi, tutup paksa aplikasi dan buka di jendela mengambang dari menu notifikasi (geser notifikasi ke kiri untuk membukanya) Pusat kendali baru @@ -833,14 +707,8 @@ Tidak ada batasan keburaman latar belakang untuk materi premium resmi hanya untuk penghapusan tema pihak ketiga Lainnya Bilah volume asli - Modifikasi bilah volume Xiaomi tidak berlaku untuk bilah volume asli Buka kunci editor papan klip AOSP - Setelah dibuka, itu akan muncul bersama dengan editor MIUI/HyperOS. - Mengisi animasi - Gaya animasi pengisian daya - Pilih gaya animasi pengisian daya layar kunci Lainnya - Cegah bluetooth dimatikan sementara Sembunyikan tombol Jendela Kenyamanan Sembunyikan tombol jendela praktis yang berada di tengah bagian atas layar lanskap HyperOS untuk Pad Nonaktifkan tombol Layar belah @@ -859,10 +727,10 @@ Sesuaikan warna tema Sesuaikan warna tema alih-alih mengambil warna dari wallpaper sistem Pilih warna tema - Pengatur waktu diperpanjang Tab peralihan cepat Pemberitahuan Nonaktifkan daftar putih notifikasi + Pengatur waktu diperpanjang Aktifkan kekaburan bilah volume Hanya untuk model Android12+ MTK, mungkin terdapat beban GPU yang tinggi @@ -896,7 +764,6 @@ Halaman NFC Baru Setelah dibuka, aplikasi pembayaran default untuk model yang tidak didukung tidak dapat memilih Xiaomi Wallet Fungsi unggulan - Buka kunci tangkapan layar area Asisten VoIP Tampilan & Layar kunci Buka kunci resolusi Super @@ -952,21 +819,14 @@ Nonaktifkan pop-up dialog \"Aktifkan pembaruan otomatis\" Izin - papan klip - Sembunyikan Tip Roti Bakar Nonaktifkan mati otomatis dari mulai otomatis - Baca clipboard menggunakan petunjuk Toast - Sembunyikan dialog dan izinkan aplikasi membaca clipboard secara default - Baca papan klip - Pemeran Layanan Interkonektivitas Buka kunci interkoneksi Perangkat Dukungan paksa untuk streaming kamera Blokir pembuatan folder hpplay - Tampilan selalu aktif Tampilan Selalu Aktif dan Editor Layar Kunci Buka kunci batas waktu tampilan layar selalu aktif Mulai ulang UI Sistem untuk mengaktifkan fitur sepenuhnya @@ -1018,8 +878,7 @@ Layanan Xiaomi Cloud Google Google & OneDrive - - Komponen keamanan MIUI + Komponen Keamanan Sistem Cegah pengunggahan otomatis daftar aplikasi yang diinstal @@ -1171,7 +1030,6 @@ Sembunyikan teks laporan Terkini Kecepatan animasi - Nonaktifkan peredupan wallpaper Buka kunci aplikasi yang disematkan Sembunyikan bilah status di tampilan tugas Sembunyikan jendela mengambang aplikasi pencerminan layar @@ -1340,8 +1198,6 @@ Silakan masukkan kode model - Keamanan - Pusat keamanan tablet Alat Keamanan Manajemen aplikasi Penghemat Baterai dan Baterai @@ -1352,14 +1208,11 @@ Tutup jendela pop-up Dolby Tampilkan suhu baterai Tampilkan kesehatan baterai secara detail - Lindungi papan klip - Akurasi posisi lebih rendah Layanan RUPS Sakelar Taplus Penggantian ikon ubin yang sangat gelap Kontrol kecerahan senter Memungkinkan Anda mengontrol kecerahan senter dengan menyeret penggeser kecerahan - Kelola aplikasi untuk mendapatkan nomor ponsel dan masuk dengan satu klik Applock rusak PIN pesanan Ubah urutan papan tombol PIN kunci aplikasi secara acak Buka kunci Sesuaikan kecerahan cahaya isi secara otomatis @@ -1497,8 +1350,8 @@ Metode masukan Sogou Hapus batasan jumlah clipboard + - Pemindai Buka kunci pindaian kartu ID Buka kunci terjemahan Buka kunci OCR @@ -1507,7 +1360,6 @@ Buka kunci pemindaian PPT Buka kunci file pindaian - Mi AI Nonaktifkan tanda air obrolan diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 7d4d72dfa..e7146201d 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -18,8 +18,9 @@ ~ Copyright (C) 2023-2025 HyperCeiler Contributions --> + It - Rendiamo HyperOS/MIUI ottimo di nuovo! + Rendiamo HyperOS ottimo di nuovo! aggiungi ed elimina file nella memoria interna del dispositivo usato per fornire servizi come latitudine e longitudine Durante l\'uso, in modo da poterti fornire più funzionalità, potremmo chiederti i permessi di Root/SU. Puoi andare su Gestione permessi in qualsiasi momento per gestire tutte le autorizzazioni, e per favore controlla il tuo manager Root/SU per i permessi di Root/SU. @@ -184,10 +185,6 @@ Funzione Raccomandato Editor - Registra - Scatto - Ritratto - Pro Attivo Disabilita Attivazione personalizzata @@ -289,8 +286,6 @@ Frequenza di utilizzo Memoria utilizzata Data di installazione - Tre piastrelle grandi - Una grande e due piastrelle piccole Ufficiale è dotato di sfocatura Sfocatura sfondo personalizzata Chiudi @@ -337,9 +332,7 @@ Supporta solo i link Regola il volume di default Regolazione istantanea del volume - Controllo indipendente del volume Rimuovi le restrizioni di sicurezza ad alto volume - Cursore del volume notifiche Livello volume multimediale Può causare il blocco dello scorrimento della barra del volume o l\'anomalia del volume del Bluetooth Moltiplicatore del livello volume @@ -441,52 +434,7 @@ Filigrana del dispositivo personalizzata Informazioni sul produttore Informazioni sul dispositivo - Sblocca filigrana AI - Sblocca lunga esposizione - Sblocca modalità clone - Sblocca specchio tascabile - Sblocca la modalità Documento - Sblocca la modalità carta ID - Sblocca doppia fotocamera - Sblocca Durata - Sblocca video brevi - Sblocca la modalità Super-Luna - Sblocca modalità Panorama - Sblocca modalità Pixel - Sblocca modalità Ritratto - Sblocca Slow motion - Sblocca Video-sky - Sblocca Vlog - Sblocca Vlog Pro - Sblocca fotocamera film - Sblocca lunga esposizione - Sblocca zoom Dolly - Sblocca Sogno - Sblocca otturatore lento - Sblocca tempo di back-flow - Sblocca congelamento Tempo Sblocca scatto con palmo - Sblocca miglioramento colore - Sblocca Trucco - Ha effetto solo quando si utilizza la fotocamera frontale - Sblocca 60FPS - Non disponibile in alcune qualità, assicurati che il tuo dispositivo sia supportato - Sblocca 120FPS - Supporta solo le qualità 4K, assicurati che il tuo dispositivo sia supportato - Sblocca zoom audio - Sblocca HDR - Sblocca miglioramento IA - Sblocca nuova bellezza - Ha effetto solo quando si utilizza la fotocamera frontale - Sblocca Master-lens - Potrebbe non funzionare su alcuni dispositivi - Sblocca RAW - Sblocca LOG - Sblocca HEIF - Sblocca messa a fuoco nel tracciamento del movimento - Sblocca acquisizione in movimento - Sblocca Rimuovi moli - Sblocca Regola effetti di trucco per gli uomini Abilita opzioni sperimentali (Lab) Sblocca tracciamento degli occhi @@ -535,9 +483,7 @@ Nascondi fotocamera Nascondi carrello smart Attuale - Mostra secondi nell\'orologio Sfoca pulsanti fotocamera e carrello intelligente - Forza l\'uso di caratteri di sistema nell\'orologio Doppio tocco per bloccare lo schermo Tocca 2 volte su uno spazio vuoto nella schermata di blocco Nascondi notifica modalità zen @@ -568,12 +514,7 @@ Gestione Icone Gestione Indicatore Di Velocità Di Rete Gestione Indicatore Orologio - Indicatori Hardware Toast notifica intelligente - Layout - Modalità di compatibilità - Abilitare forzatamente il layout a schermo intero per tutti gli schermi a forma speciale - Modalità layout Doppio tocco per spegnere lo schermo Barra del segnale a doppia riga Tema icone @@ -602,8 +543,6 @@ Dispositivi Rete Privacy - Il lato sinistro dell\'icona viene mostrato - La parte destra dell\'icona viene mostrata Wi-Fi Slave Wi-Fi Wi-Fi standard @@ -646,23 +585,17 @@ Gruppo Suoni Box Stereo TV Cuffie Wireless - Numero massimo di punti di notifica Numero massimo di icone di notifica Nascondi percentuale batteria Nascondi percentuale batteria Nascondi indicatore di ricarica Nascondi icona batteria Personalizzazione della batteria - Indicatore Batteria Wi-Fi Rete mobile Scambia Wi-Fi e rete mobile Velocità di connessione Scena audio - Forza l\'uso della nuova icona HD - Supporta solo alcune versioni di sistema - Separatore velocità di rete - La linea verticale tra orologio e velocità di internet non viene visualizzata sui dispositivi con fotocamera al centro Nascondi la barra di stato quando si cattura uno screenshot Icona tipo di rete mobile Abilita Modifica @@ -678,21 +611,9 @@ I valori di velocità di rete sotto questo livello sono considerati lenti e verrà visualizzato un indicatore differente (solo alcune icone) Nascondi byte al secondo suffisso (*b/s) Icona dell\'indicatore - Modalità orologio personalizzata - Formato orologio - Mostra anno - Mostra mese - Mostra giorno - Mostra settimana - Mostra doppia ora - Mostra periodo orologio - Mostra i secondi - Nascondi spazi - Mostra il doppio Allineamento a doppia riga Esempio formato orologio Dimensione orologio - Dimensione orologio a doppia riga Valido solo se visualizzato su due righe Fix color Disabilita l\'animazione di transizione dell\'orologio all\'apertura del centro notifiche @@ -706,35 +627,6 @@ Formato orologio barra di stato Formato mini orologio barra delle notifiche Disposizione orologio barra di stato - Potenza correlata - Temperatura correlata - Dimensione carattere - Mostra contenuti - Nascondi posizioni decimali - Nascondi unità - Mostra a destra - La corrente mostra sempre un valore positivo - Visualizzazione singola riga - Ordine inverso - Mostra solo durante la carica - Imposta l\'intervallo di aggiornamento - Correggi temperatura CPU - Inserisci il numero di /sys/devices/virtual/thermal/thermal_zone* - Centrato - Angoli arrotondati - Limita visibilità - Allinea verticalmente - Colore - Colore batteria carica - Colore con batteria scarica - Colore modalità risparmio energetico - Colore durante la carica - Altezza - Margine orizzontale - Trasparenza - Brillantezza - Batteria scarica - Test Layout Informazioni Debug @@ -744,11 +636,8 @@ Scrivi Questo è un lungo pezzo di testo che sarà mostrato durante lo scorrimento Centro di Controllo - Scheda Scheda Notifiche Media - Magnet Notifica - Trasparenza sfondo carta %1$s è attivo %1$s è spento Commutatore di rete 5G @@ -763,21 +652,8 @@ Colonne %d lista Colonne (orizzontale) - Elemento MiPlay - Elemento Mi smart hub - Elemento controllo dispositivo - Controllo dettaglio Valore sfocatura sfondo Disabilita Modalità Trasparente Disabilita l\'impostazione trasparenza nello sfondo delle notifiche - Modello sfocatura notifiche - Ottimizzazione delle notifiche - Funzione sperimentale, disponibile solo per i modelli Android 13 e versioni successive. Dopo l\'abilitazione, la sfocatura delle notifiche in alcune aree verrà ottimizzata\nSu alcuni modelli potrebbe verificarsi un problema di arresto anomalo dell\'interfaccia utente del sistema. - Raggio sfocatura - Senza notifica a discesa - Raggio angolo - Non è necessario modificare il tema predefinito - Valore sfondo sfocato - Valore sfondo predefinito Ottimizza l\'effetto di miscelazione dei colori del pannello di controllo multimediale Barra di avanzamento Rimuovi la restrizione sull\'applicazione di azioni personalizzate per le schede di notifica multimediale @@ -811,8 +687,6 @@ Personalizzazione nome operatore Solo i divisori sono nascosti Nascondi tutti i nomi - Stile riquadro Bluetooth - Sposta il riquadro Bluetooth vicino al riquadro della rete Menu di notifica esteso Apri informazioni sull\'app, forza la chiusura dell\'app e aprila in una finestra mobile dal menu di notifica (scorri la notifica verso sinistra per aprirla) Nuovo centro di controllo @@ -825,14 +699,8 @@ Non esiste alcuna restrizione sulla sfocatura dello sfondo per i materiali premium ufficiali solo per la rimozione di temi di terze parti Altro Barra del volume nativa - La modifica della barra del volume di Xiaomi non si applica alla barra del volume nativa Sblocca l\'editor degli appunti AOSP - Dopo lo sblocco, verrà visualizzato insieme all\'editor MIUI/HyperOS. - Animazione di ricarica - Stile di animazione di ricarica - Seleziona lo stile di animazione di ricarica della schermata di blocco Altro - Impedisci la disattivazione temporanea del Bluetooth Nascondi il pulsante della finestra Comodità Nascondi i tre punti permanenti, inclusa la parte superiore del piccolo e il pulsante al centro della parte superiore dello schermo orizzontale di HyperOS for Pad (non influisce sull\'uso delle funzioni) Nascondi il gesto inferiore della piccola finestra @@ -847,10 +715,10 @@ Personalizza tema colore Personalizza i colori del tema invece di estrarre i colori dallo sfondo del sistema Scegli il colore del tema - Timer esteso Scheda cambio rapido Notifica Disabilita whitelist notifiche + Timer esteso Abilita sfocatura barra volume Solo per i modelli Android12+ MTK, lì potrebbe essere elevato il carico della GPU @@ -882,7 +750,6 @@ Nuova pagina NFC Dopo l\'apertura, l\'applicazione di pagamento predefinita per i modelli non supportati non può selezionare Xiaomi Wallet Funzioni in primo piano - Schermata dell\'area di sblocco Assistente VoIP Visualizza e amp; Schermata di blocco Sblocca risoluzione super @@ -896,6 +763,7 @@ Installa i permessi delle app sconosciute senza cercare nell\'elenco delle applicazioni Utilizza i permessi internazionali build, passa direttamente all\'interruttore di autorizzazione dell\'applicazione corrispondente “visualizzata sopra le altre applicazioni” Autorizzazioni dei servizi di accessibilità senza cercare nell\'elenco delle applicazioni + Opzioni sviluppatore Forza la visualizzazione delle app bloccate nella cache Una volta abilitata, questa funzione può si trova in \"Opzioni sviluppatore\", ma la sua funzionalità non è garantita @@ -931,20 +799,13 @@ Disabilita pop-up della finestra di dialogo \"Attiva aggiornamenti automatici\" Permessi - Appunti - Nascondi suggerimenti Toast - Leggi negli appunti utilizzando i suggerimenti di Toast - Nascondi la finestra di dialogo e consenti all\'app di leggere gli appunti per impostazione predefinita - Leggi appunti - Trasmetti Servizi di interconnettività Sblocca l\'interconnessione dei dispositivi Supporto forzato per lo streaming della fotocamera Blocca la creazione di cartelle hpplay - Display sempre attivo Display sempre attivo e editor schermata di blocco Sblocca il limite di tempo di visualizzazione dello schermo sempre attivo Sblocca Aod Aon @@ -994,8 +855,7 @@ Server di backup Xiaomi Cloud Servizio Google - - Componenti di sicurezza MIUI + Componenti di sicurezza del sistema Impedisci il caricamento automatico dell\'elenco delle app installate @@ -1137,7 +997,6 @@ Rigidità Recenti Velocità di animazione - Disabilita oscuramento dello sfondo Sblocca app aggiunte Nascondi la barra di stato nella visualizzazione attività Nascondi la finestra mobile dell\'app di mirroring dello schermo @@ -1310,8 +1169,6 @@ Inserisci il codice del dispositivo e il dispositivo colorato deve essere riempito con un suffisso, ad esempio:\n- Xiaomi 13, inserisci il contenuto è fuxi \n- Versione rosa Xiaomi 14, compilare il contenuto è houji_PK - Sicurezza - Centro sicurezza tablet Strumenti di sicurezza Gestione app Risparmio batteria e batteria @@ -1322,14 +1179,11 @@ Chiudi la finestra pop-up Dolby Mostra la temperatura della batteria Mostra lo stato dettagliato della batteria - Proteggi gli appunti - Riduci la precisione di posizionamento Servizio GMS Interruttori Taplus Sostituzione dell\'icona del riquadro molto scuro Torcia controllo della luminosità Ti permette di controllare la luminosità della torcia trascinando il cursore della luminosità - Gestisci l\'applicazione per ottenere il numero di cellulare e accedi con un clic PIN AppLock fuori servizio Cambia casualmente il PIN di blocco dell\'app sequenza tastierino Sblocca Regola automaticamente la luminosità della luce di riempimento @@ -1469,8 +1323,8 @@ Metodo di immissione Sogou Rimuovi il limite al numero di appunti + - Scanner Sblocca scansione carta d\'identità Sblocca traduzione Sblocca OCR @@ -1479,7 +1333,6 @@ Sblocca scansiona PPT Sblocca scansiona file - Mi AI Disabilita filigrana chat diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index b6fc39bf4..85afbc22b 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -19,9 +19,8 @@ --> 新しいバージョンがあります - © 2023-2025 Sevtinge & HyperCeiler Contributors. - Make HyperOS/MIUI Great Again! + Make HyperOS Great Again! デバイスの内部ストレージ上のファイルを追加および削除 緯度や経度などのサービスを提供するために使用 使用中、より多くの機能を提供するために root/su 権限の許可を求める場合があります。アクセス許可の管理に移動すると、いつでもすべてのアクセス許可を変更できます。root/su 権限については、お使いの root/su マネージャーにアクセスして変更してください。 @@ -252,10 +251,6 @@ 機能 おすすめ 編集者 - 録画 - スクショ - ポートレート - プロ 有効化 無効 カスタムを有効化 @@ -363,8 +358,6 @@ 使用頻度 ストレージの使用量 インストール日時 - 3つの大きなタイル - 大きいタイル1枚と小さいタイル2枚 公式のぼかし カスタム背景ぼかし オフ @@ -420,11 +413,9 @@ リンクのみ対応 デフォルトで音量を調整 即座な音量調整 - 独立した音量コントロール 大音量の警告を無効化 すべての条件で有効 ヘッドフォン接続時にのみ有効 - 通知の音量スライダー メディアの音量レベル オンにすると、音量バーのスクロールがフリーズしたり、Bluetooth の音量が異常になったりする場合があります 音量のステップ数 @@ -552,52 +543,7 @@ デバイス透かしのカスタム メーカー情報 デバイス情報 - AI の透かしをアンロック - 長時間露出をアンロック - クローンモードをアンロック - ポケットミラーをアンロック - ドキュメントモードをアンロック - ID カードモードをアンロック - デュアルカメラをアンロック - タイムラプス撮影をアンロック - ショートビデオをアンロック - スーパームーンモードをアンロック - パノラマモードをアンロック - 超解像度モードをアンロック - ポートレートモードをアンロック - スローモーションをアンロック - ビデオスカイをアンロック - Vlog をアンロック - Vlog Pro をアンロック - フィルムカメラをアンロック - 長時間露光ディレイをアンロック - ドリーズームをアンロック - パラレルドリームをアンロック - スローシャッターをアンロック - タイムワープをアンロック - タイムスタシスをアンロック 手のひらジェスチャー撮影をアンロック - 色の強化をアンロック - メイクアップをアンロック - フロントカメラを使用している場合にのみ効果があります - 60FPS をアンロック - 一部の品質では使用できません。お使いのデバイスが対応していることを確認してください - 120FPS をアンロック - 4K 品質の場合にのみ対応しています。お使いのデバイスが対応していることを確認してください - オーディオズームをアンロック - HDR をアンロック - AI モードをアンロック - 新しいビューティーモードをアンロック - フロントカメラを使用している場合にのみ効果があります - マスターレンズをアンロック - 一部のデバイスでは正常に動作しません - RAW をアンロック - LOG をアンロック - HEIF をアンロック - モーショントラッキングフォーカスをアンロック - モーションキャプチャをアンロック - ほくろ除去をアンロック - 男性用のメイクアップ効果をアンロック ラボオプションを有効化 目のトラッキングをアンロック カメラ使用時に明るさを最大にする @@ -661,11 +607,9 @@ カメラを非表示 スマートスクリーンを非表示 電流 - 時計に秒を表示 カメラとサイドパネルのボタンをぼかす 背景の半径 背景の色 - システムフォントを時計に強制使用する ロック画面のダブルタップ 空の場所をダブルタップすると画面をロックします Zen モードの通知を非表示 @@ -700,13 +644,8 @@ アイコンの管理 ネットワーク速度インジケータの管理 時計の設定 - ハードウェアインジケーター スマートトースト 歌詞のフォーカス - レイアウト - 互換モード - すべての特殊な形状の画面で、フルスクリーンレイアウトを強制的に有効にします - レイアウトモード ダブルタップでスリープ 二行のシグナルバー アイコンテーマ @@ -735,8 +674,6 @@ デバイス ネットワーク プライバシー - アイコンを左側に表示 - アイコンを右側に表示 Wi-Fi 補助 Wi-Fi Wi-Fi 標準規格 @@ -779,23 +716,17 @@ サウンドボックスのグループステレオ テレビ ワイヤレスヘッドセット - 通知ドットの最大数 表示する通知アイコンの最大数 バッテリー残量を非表示 バッテリー残量の%を非表示 充電中のインジケーターを非表示 バッテリーアイコンを非表示 バッテリーのカスタマイズ - バッテリーインジケーター Wi-Fi モバイルネットワーク Wi-Fi とモバイルネットワークの表示を入れ替える インターネットの速度 サウンドシーン - 新しい HD アイコンを強制的に使用する - 一部の新しいシステムバージョンでのみ対応しています - ネットワーク速度のセパレーター - 中央カメラのデバイスでは、時間とインターネット速度の間の垂直線は表示されません スクリーンショット撮影時にステータスバーを非表示にする モバイルネットワークタイプのアイコン 変更を有効化 @@ -811,21 +742,9 @@ このレベル以下のネットワーク速度は低速とみなされ、別のインジケータアイコンが表示されます(一部のアイコンのみ) バイト毎秒の接尾辞 (*b/s) を非表示 インジケーターアイコン - カスタムクロックモード - 時計のフォーマット - 年を表示 - 月を表示 - 日付を表示 - 曜日を表示 - デュアル時計を表示 - 午前と午後を表示 - 秒を表示 - スペースを非表示 - 二行で表示 二行の配置 時計形式の例 時計のサイズ - 二行の時計のサイズ 2 行で表示されている場合にのみ有効です 色を修正 通知センターでのスライド時計遷移アニメーションを無効化 @@ -841,36 +760,6 @@ ステータスバーの時計の形式 通知バーのミニ時計の形式 ステータスバーの時計の配置 - 電源関連 - 温度関連 - フォントのサイズ - コンテンツを表示 - 小数点以下を非表示 - 単位を非表示 - 右側に表示 - 電流を常に正の値で表示 - 電力は常に正の値を表示します - 単一行表示 - 順序を逆にする - 充電時のみ表示 - 状態の更新間隔 - CPU の温度を修正 - /sys/devices/virtual/thermal/thermal_zone* の数を入力してください - 中央 - 角を丸く - 可視性を制限 - 垂直方向に配置 - - フル充電時の色 - 低バッテリーの色 - 省電力モード時の色 - 充電時の色 - 高さ - 横方向の余白 - 透過 - シャイン - 低バッテリーレベル - テスト レイアウト 情報 デバッグ @@ -883,11 +772,9 @@ ステータスバーの時計を隠す タップで時計を表示 コントロールセンター - カード メディア通知カード 便利ツール 通知 - カード背景の透明度 %1$s はオンです %1$s はオフです 5G ネットワークスイッチ @@ -908,21 +795,8 @@ %d 件のリスト 列数 (横画面) - MiPlay エントリ - Mi スマートハブのエントリ - デバイス制御項目 - コントロールセンター詳細の背景ぼかしの値 透明モードを無効化 通知の背景を透明にする設定を無効にします - 通知のぼかしモデル - 通知の最適化 - 実験的な機能で、Android 13以上のモデルでのみ利用可能です。有効にすると、一部の領域での通知のぼかしが最適化されます。\n一部のモデルではシステム UI がクラッシュする場合があります。 - ぼかしの半径 - ドロップダウン通知がない場合 - 角の丸み - デフォルトのテーマでは調整する必要はありません - 背景ぼかしの値 - デフォルトの背景値 メディアコントロールパネルの色混合効果を最適化 プログレスバー メディア通知カードでのカスタムアクションのアプリ制限を解除 @@ -958,8 +832,6 @@ 区切り文字のみ非表示 デバイス名の表示 すべての名前を非表示 - Bluetooth タイルのスタイル - Bluetooth タイルをネットワークタイルの近くに移動する 拡張通知メニュー アプリ情報を開く、強制停止、フローティングウィンドウで開く機能を通知メニューに追加します (通知を左にスワイプすると開けます) 新しいコントロールセンター @@ -977,15 +849,8 @@ その他 ネイティブ音量バー ネイティブシャットダウンメニュー - MIUI はレガシーメニュー UI を使用しますが、HyperOS は AOSP メニュー UI を使用します - Xiaomi の音量バーへの変更はネイティブの音量バーには適用されません AOSP クリップボードエディタをアンロック - アンロック後は MIUI/HyperOS エディタと一緒にポップアップします - 充電時のアニメーション - 充電アニメーションのスタイル - ロック画面の充電アニメーションのスタイルを選択します その他 - Bluetooth が一時的にオフにされないようにする コンビニエンスウインドウボタンを非表示 三つのドットとスモールウィンドウの上部、HyperOS for Pad 横画面時の上部中央にあるボタンを非表示にします。機能には影響しません コンビニエンスウィンドウボタンを無効化 @@ -1004,10 +869,10 @@ テーマカラーをカスタマイズ 壁紙から色を抽出する代わりに、テーマカラーをカスタマイズします テーマカラーを選択 - 拡張されたタイマー クイックスイッチタブ 通知 通知のホワイトリストを無効化 + 拡張されたタイマー 音量バーのぼかしを有効化 Android 12 以降の MTKモデルのみ対応です。GPU 負荷が高くなる可能性があります @@ -1046,7 +911,6 @@ Xiaomi HyperAI Xiaomi HyperAI をアンロック 注目の機能 - 部分的なスクリーンショットをアンロック VoIP アシスタント ディスプレイとロック画面 超解像をアンロック @@ -1103,14 +967,8 @@ 「自動更新を有効にする」ダイアログのポップアップを無効化 権限 - クリップボード - トーストのヒントを隠す 自動起動の自動停止を禁止 - クリップボード読み取りのトーストヒント - ダイアログを非表示にし、アプリがデフォルトでクリップボードを読み込むことを許可します - クリップボードの読み取り - キャスト 相互接続サービス デバイスの相互接続をアンロック カメラストリーミングの強制サポート @@ -1119,7 +977,6 @@ サウンドレコーダー AI のウォーターマークを無効化 - 常時オンディスプレイ 常時表示とロック画面エディター 常時オンディスプレイの時間制限をアンロック この機能を完全に有効にするには、システム UI を再起動してください @@ -1173,8 +1030,7 @@ Xiaomi クラウドサービス Google Google & OneDrive - - MIUI セキュリティコンポーネント + システムセキュリティコンポーネント インストール済みアプリリストの自動アップロードを防止 @@ -1331,7 +1187,6 @@ アイコンのサイズ アプリ履歴 アニメーションの速度 - 壁紙の調光を無効化 固定アプリのロックを解除 アプリ履歴のステータスバーを非表示 画面ミラーリングアプリフローティングウィンドウを隠す @@ -1527,8 +1382,6 @@ システムサービスプラグイン Game Center 広告を無効化 - セキュリティ - タブレットのセキュリティセンター セキュリティツール アプリの管理 バッテリーセーバーとバッテリー @@ -1539,14 +1392,11 @@ Dolby ポップアップウィンドウを閉じる バッテリーの温度を表示 詳細なバッテリー健康状態を表示 - クリップボードの保護 - おおまかな位置情報 GMS サービス Taplus スイッチ さらに輝度を下げるタイルのアイコンを置換 フラッシュライトの明るさ制御 明るさスライダーをドラッグしてフラッシュライトの明るさを制御できるようにします - 電話番号を使って簡単ログインするアプリを管理 アプリロックのPINの順序をランダムにする Magic Share の省電力モードを無効化 プレビュー画像のぼかしを無効化 @@ -1706,8 +1556,8 @@ Sogou 入力方法 クリップボードの150個上限を削除 クリアのクリップボードボタンを追加 + - スキャナー AI スキャナー ID カードのスキャンをアンロック 翻訳をアンロック @@ -1717,7 +1567,6 @@ PPT のスキャンをアンロック ファイルのスキャンをアンロック - Mi AI スーパー AI チャットの透かしを無効化 diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index bae7d4ebc..20d3f4c2e 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -21,7 +21,7 @@ Znaleziono nową wersję © 2023-2025 Sevtinge & Współtwórcy HyperCeiler. - Uczyńmy HyperOS/MIUI znów wielkim! + Uczyńmy HyperOS znów wielkim! dodawanie i usuwanie plików z pamięci wewnętrznej urządzenia używane do świadczenia usług takich jak szerokość i długość geograficzna Podczas użytkowania, w celu zapewnienia Ci większej liczby funkcji, możemy poprosić o uprawnienia Root. Możesz w dowolnym momencie przejść do menedżera uprawnień, aby dostosować status autoryzacji wszystkich uprawnień, a także prosimy o przejście do swojego menedżera Root, aby przyznać uprawnienia Root. @@ -156,12 +156,12 @@ Tłumacz Dyskusja Pozostałe - Grupa QQ + Grupa na QQ Kanał QQ Grupa na Telegramie Kanał na Telegramie Kod źródłowy - Ten projekt jest open source opartym na licencji AGPL-3.0 + Ten projekt jest otwartym źródłem opartym na licencji AGPL-3.0 Oficjalna strona Crowdin Pomóż nam przetłumaczyć HyperCeilera na Twój język @@ -219,7 +219,9 @@ Pasek indeksu Anuluj Wyczyść + Nieprawidłowa wartość. Proszę sprawdzić ją i wprowadzić ponownie. Przezroczystość + Własny kolor Monet Siatka Suwak @@ -234,6 +236,7 @@ Pokaż pasek boczny Wybierz Ukryj pasek boczny + Nieprawidłowa wartość. Proszę sprawdzić ją i wprowadzić ponownie. Przeciągnij w dół, aby odświeżyć Pomyślnie odświeżono Odświeżanie… @@ -254,10 +257,6 @@ Funkcja Zalecane Edytor - Film - Zdjęcie - Portret - Profesjonalny Włącz Wyłącz Włącz niestandardowe @@ -365,8 +364,6 @@ Ostatnio używane Zużycie pamięci Czas instalacji - Trzy duże płytki - Jedna duża i dwie małe płytki Oficjalne zawiera rozmycie Niestandardowe rozmycie tła Zamknij @@ -398,6 +395,7 @@ Wyświetlanie w dwóch liniach\n\nMini zegar w powiadomieniach na górze\nZegar na dole Myszka Miki Truskawkowy Miś + Księżniczka Disney Usługi Google Play Tryb S-Leo Taplus @@ -424,11 +422,9 @@ Wspiera tylko linki Ustaw głośność jako domyślną Natychmiastowa regulacja głośności - Niezależna regulacja głośności Usuń ostrzeżenie dotyczące dużej głośności We wszystkich przypadkach Tylko gdy podłączone są słuchawki - Suwak głośności powiadomień Poziom głośności multimediów Po włączeniu przewijanie paska głośności może się zawiesić lub głośność Bluetooth może działać nieprawidłowo Mnożnik poziomu głośności @@ -557,52 +553,7 @@ Własny znak wodny urządzenia Informacje o producencie Informacje o urządzeniu - Odblokuj znak wodny SI - Odblokuj długą ekspozycję - Odblokuj tryb klonowania - Odblokuj małe lusterko - Odblokuj tryb dokumentu - Odblokuj tryb dowodu tożsamości - Odblokuj podwójną kamerę - Odblokuj tryb poklatkowy - Odblokuj krótkie filmy - Odblokuj tryb Superksiężyca - Odblokuj tryb panoramy - Odblokuj tryb super rozdzielczości - Odblokuj tryb portretowy - Odblokuj zwolnione tempo - Odblokuj wideo-niebo - Odblokuj tryb VLOG - Odblokuj tryb VLOG PRO - Odblokuj efekty filmowe - Odblokuj długie opóźnienie ekspozycji - Odblokuj magiczny zoom - Odblokuj równoległą rzeczywistość - Odblokuj wolną migawkę - Odblokuj podróże w czasie - Odblokuj zatrzymanie czasu Odblokuj migawkę dłoni - Odblokuj ulepszone kolory - Odblokuj makijaż - Działa tylko w przypadku korzystania z przedniego aparatu - Odblokuj 60FPS - Niedostępne w niektórych wersjach. Upewnij się, że Twoje urządzenie jest obsługiwane. - Odblokuj 120FPS - Obsługiwane tylko w jakości 4K. Upewnij się, że Twoje urządzenie jest obsługiwane. - Odblokuj zbliżenie audio - Odblokuj HDR - Odblokuj aparat SI - Odblokuj nowe Upiększanie - Działa tylko w przypadku korzystania z przedniego aparatu - Odblokuj główny obiektyw - Nie działa poprawnie na niektórych urządzeniach - Odblokuj RAW - Odblokuj LOG - Odblokuj format HEIF - Odblokuj ostrość śledzenia ruchu - Odblokuj przechwytywanie ruchu - Odblokuj usuwanie pieprzyków - Odblokuj adaptację makijażu dla mężczyzn Włącz opcje laboratoryjne Odblokuj ostrość śledzenia oczu Wymuś maksymalną jasność podczas używania aparatu @@ -642,6 +593,8 @@ Wyłącz tryb usuwania sieci Odblokuj VoLTE dla drugiej karty SIM Używa danych mobilnych podczas połączeń VoLTE na wtórnej karcie SIM + Odblokuj łącze głosowe + Odblokuj łącze głosowe dla niektórych kart SIM obsługujących połączenia Wi-Fi Pobrania Blokuj tworzenie folderu .xlDownload @@ -669,12 +622,10 @@ Ukryj aparat Ukryj inteligentny ekran Przepływ - Pokaż sekundy na zegarze Rozmycie przycisków ekranu blokady Po włączeniu tło przycisków na ekranie blokady będą rozmyte, co może powodować wysokie zużycie energii.\nObsługiwany tylko domyślny motyw. Rozmycie tła Kolor tła - Wymuś użycie systemowych czcionek przez zegar Zablokuj ekran podwójnym dotknięciem Kliknij dwukrotnie puste miejsce, aby zablokować ekran Odblokuj limit powiadomień @@ -711,13 +662,8 @@ Zarządzaj ikonami Zarządzaj wskaźnikiem szybkości sieci Zarządzaj wskaźnikiem zegara - Wskaźniki sprzętowe Inteligentne szybkie powiadomienia Skoncentruj słowa piosenek - Układ - Tryb zgodności - Wymusza włączenie układu pełnoekranowego dla wszystkich ekranów o specjalnych kształtach - Tryb układu Dwukrotnie dotknij, aby uśpić Dwurzędowy pasek sygnału Motywy ikon @@ -746,8 +692,6 @@ Urządzenia Sieć Prywatność - Pokaż ikony po lewej stronie - Pokaż ikony po prawej stronie Wi-Fi Dodatkowe Wi-Fi Standard Wi-Fi @@ -790,23 +734,17 @@ Grupa głośników stereo Telewizor Bezprzewodowy zestaw słuchawkowy - Maksymalna ilość kropek powiadomień Maksymalna ilość ikon powiadomień Ukryj procent baterii Ukryj wskaźnik procentowy baterii Ukryj wskaźnik ładowania Ukryj ikonę baterii Personalizacja baterii - Wskaźnik baterii Wi-Fi Sieć mobilna Zamień Wi-Fi i sieć mobilną Prędkość Internetu Scena dźwiękowa - Wymuś użycie nowej ikony HD - Obsługuje tylko niektóre wersje systemu - Separator prędkości sieci - Pionowa linia między czasem a szybkością internetu nie jest wyświetlana na urządzeniach z centralnie umieszczoną kamerą Ukryj pasek stanu podczas wykonywania zrzutu ekranu Ikona sieci komórkowej Włącz modyfikację @@ -822,21 +760,9 @@ Wartości prędkości sieci poniżej tego poziomu są uważane za powolne, a wyświetlana będzie inna ikona wskaźnika (tylko niektóre ikony) Ukryj sufiks bajtów na sekundę (*b/s) Ikona wskaźnika - Niestandardowy tryb zegara - Format zegara - Pokaż rok - Pokaż miesiąc - Pokaż dzień - Pokaż tydzień - Pokaż podwójną godzinę - Pokaż okres zegara - Pokaż sekundy - Ukryj spację - Pokaż podwójnie Podwójne wyrównanie wierszy Przykładowy format zegara Rozmiar zegara - Rozmiar podwójnego wiersza zegara Obowiązuje tylko wtedy, gdy jest wyświetlany w dwóch wierszach Napraw kolor Wyłącz animację przejścia zegara przy przewijaniu w pasku powiadomień @@ -852,36 +778,6 @@ Format zegara paska stanu Format mini zegara w pasku powiadomień Układ zegara na pasku stanu - Powiązane z mocą - Powiązane z temperaturą - Rozmiar czcionki - Pokaż zawartość - Ukryj miejsca dziesiętne - Ukryj jednostki - Wyświetl z prawej strony - Natężenie zawsze wyświetla wartość dodatnią - Moc zawsze wyświetla wartość dodatnią - Wyświetl w jednej linii - Odwróć kolejność - Pokaż tylko podczas ładowania - Częstotliwość aktualizacji statusu - Napraw temperaturę CPU - Wprowadź numer z /sys/devices/virtual/thermal/thermal_zone* - Wyśrodkowany - Zaokrąglone rogi - Ogranicz widoczność - Wyrównaj pionowo - Kolor - Kolor pełnej baterii - Kolor niskiego poziomu baterii - Kolor trybu oszczędzania baterii - Kolor ładowania - Wysokość - Poziomy margines - Przezroczystość - Błyszczący - Niski poziom baterii - Test Układ Informacja Debugowanie @@ -902,11 +798,9 @@ Dodaj spację na końcu tekstu piosenki Uczynia przewijanie tekstów jak najbardziej kompletnym Centrum sterowania - Karta Karta powiadomienia multimedialnego Magnet Powiadomienie - Przezroczystość tła karty %1$s jest wł. %1$s jest wył. Przełącznik sieci 5G @@ -929,21 +823,8 @@ Kolumny %d kolumn Kolumny (poziomo) - Xiaomi Smart Play - Inteligentne Centrum Xiaomi - Sterowanie urządzeniem - Kontroluj wartość rozmycia tła Wyłącz tryb przezroczysty Wyłącza ustawienie tła powiadomienia na przezroczyste - Model rozmycia powiadomień - Optymalizacja powiadomień - Funkcja eksperymentalna. Dostępna tylko dla modeli z Androidem 13 i nowszym. Po jej włączeniu rozmycie powiadomień w niektórych obszarach zostanie zoptymalizowane. Może wystąpić problem z awarią interfejsu systemowego na niektórych modelach. - Promień rozmycia - Bez rozwijanego powiadomienia - Zaokrąglenie rogów - Domyślny motyw nie musi być dostosowany - Wartość rozmycia tła - Domyślna wartość tła Optymalizuj efekt mieszania kolorów w panelu sterowania multimediami Pasek postępu Usuń ograniczenia niestandardowych akcji dla kart powiadomień multimediów @@ -959,6 +840,8 @@ Usuń mieszane tło kolorów z karty Promień rozmycia tła Przezroczystość warstwy tła nakładki + Przycisk multimedialny + Suwak multimediów Kompaktowe powiadomienia Zmniejsza pionowe odstępy powiadomień Przekieruj ustawienia powiadomień @@ -981,8 +864,6 @@ Tylko separatory są ukryte Wyświetl nazwę urządzenia Ukryj wszystkie nazwy - Styl kafelka Bluetooth - Przesuń kafelek Bluetooth w pobliżu kafelka sieci Rozszerzone menu powiadomień Otwórz informacje o aplikacji, wymuś zamknięcie aplikacji i otwórz ją w oknie pływającym z menu powiadomień (przesuń powiadomienie w lewo, aby je otworzyć) Nowe centrum kontroli @@ -1001,18 +882,16 @@ Zezwalaj na wyświetlanie 10, 17 lub więcej powiadomień. Optymalizuj mieszanie kolorów tła powiadomień Przywróć standardowe mieszanie kolorów powiadomień + Wyświetl wartość jasności + Wyświetl wartość głośności + Treść + Procent + Wartość początkowa Pozostałe Natywny pasek głośności Natywne menu wyłączenia - MIUI używa starszego menu UI, podczas gdy HyperOS używa interfejsu menu AOSP. - Modyfikacje paska głośności w HyperOS/MIUI nie mogą być zastosowane do natywnego paska głośności Odblokuj edytor schowka AOSP - Po odblokowaniu będzie pojawiać się razem z edytorem HyperOS/MIUI. - Animacja ładowania - Styl animacji ładowania - Wybierz styl animacji ładowania ekranu blokady Pozostałe - Zapobiegaj tymczasowemu wyłączeniu Bluetooth Ukryj przycisk \"Podziel ekran\" Ukrywa trzy stałe kropki, w tym te na górze małego okna oraz przycisk w środku góry ekranu HyperOS dla poziomego widoku na Padzie (nie wpływa to na używanie funkcji). Wyłącz przycisk \"Podziel ekran\" @@ -1031,12 +910,16 @@ Dostosuj kolor motywu Dostosuje kolory motywu, zamiast pobierać je z tapety systemowej Wybierz kolor motywu - Rozszerzony timer Szybkie przełączanie karty Powiadomienie Wyłącz białą listę powiadomień Usuń ograniczenia rozmycia dla zaawansowanych tekstur Odblokuj rozmycie zaawansowanych tekstur, które jest domyślnie wyłączone dla motywów firm trzecich we wtyczce System UI. + Pasek głośności + Naciśnij, aby rozwinąć drugi pasek głośności + Gdy ta funkcja jest włączona, przycisk rozwijania jest wyłączony + Ukryj przyciski wyciszenia i trybu Nie Przeszkadzać + Rozszerzony timer Włącz rozmycie paska głośności Przenieś statusbar_gestures.dat do rejestru MIUI Tylko dla modeli Android 12+ z procesorem MTK. Może wystąpić wysokie obciążenie GPU. @@ -1077,7 +960,6 @@ Odblokuj Xiaomi HyperAI Po włączeniu tej opcji w Ustawieniach zostanie wyświetlona opcja Xiaomi HyperAI. Wsparcie dla funkcji AI urządzenia jest określone przez Xiaomi. Wyróżnione funkcje - Odblokuj obszar zrzutu ekranu Asystent VoIP Wyświetlanie i jasność Odblokuj superrozdzielczość @@ -1134,14 +1016,8 @@ Wyłącz okno pop-up dialogu \"Włącz automatyczne aktualizacje\" Uprawnienia - Schowek - Ukryj podpowiedzi Wyłącz automatyczne wyłączanie auto-startu - Odczytaj schowek za pomocą podpowiedzi - Ukryj okno dialogowe i zezwalaj aplikacji na domyślne odczytywanie schowka - Odczytywanie schowka - Prześlij ekran Usługi łączności Odblokuj połączenie urządzeń Wymuszone wsparcie dla strumieniowania aparatu @@ -1150,7 +1026,6 @@ Dyktafon Wyłącz znak wodny SI - Ekran zawsze włączony Ekran zawsze włączony i edytor Ekranu blokady Odblokuj limit czasu wyświetlania Uruchom ponownie interfejs systemu, aby w pełni włączyć funkcję @@ -1205,8 +1080,7 @@ Chmura Xiaomi Google Google i OneDrive - - Komponenty bezpieczeństwa MIUI + Komponenty bezpieczeństwa systemu Zapobiegaj automatycznemu przesyłaniu listy zainstalowanych aplikacji Wyłącz sprawdzanie środowiska @@ -1370,7 +1244,6 @@ Rozmiar ikon Ostatnie Prędkość animacji - Wyłącz przyciemnianie tapety Odblokuj przypięte aplikacje Ukryj pasek stanu w Ostatnich Ukryj okno pływające podczas mirroringu ekranu @@ -1481,13 +1354,19 @@ Optymalizuj opóźnienie uruchamiania aplikacji Edytor galerii + Instrukcja użycia:\n- Użyj haka v2 dla wersji 1.7.5.0.4 i nowszych, a haka v1 dla wersji niższych niż 1.7.5.0.4 + Typ haka edytora galerii Podkład + Autorstwo Autoryzacja SI + Dostosuj ramkę + Wspólna funkcja Odblokuj funkcje personalizacji Disney Odblokowania obejmują następujące funkcje:\n• Niestandardowe ramki Disney (w konflikcie z innymi ramkami niestandardowymi)\n• Tło Mickey Mokeh\n• Naklejki Disney Odblokuj niestandardowe ramki zdjęciowe na Chiński Nowy Rok Aby na stałe dodać niestandardową ramkę zdjęciową na Chiński Nowy Rok, warunkiem jest posiadanie niestandardowej ramki zdjęciowej Leica lub niestandardowej ramki zdjęciowej Redmi. Usuń minimalny limit przycinania obrazu + Odblokuj dostosowywanie ramki Dostosuj typ ramki Odblokuj filtr Leica Obsługiwane są tylko niektóre wersje @@ -1569,8 +1448,6 @@ Wyłącz reklamy Game Center Może to powodować nieprawidłowe działanie innych funkcji - Panel sterowania - Bezpieczeństwo Bezpieczeństwo Zarządzaj aplikacjami Bateria @@ -1582,14 +1459,11 @@ Zamknij okno pop-up Dolby Pokaż temperaturę baterii Pokaż szczegółowy stan baterii - Ochrona schowka - Dokładność niższego położenia Usługa GMS Przełączniki Taplus Zastąpienie bardzo ciemnej ikony kafelka Kontrola jasności latarki Zezwala na kontrolę jasności latarki poprzez przesuwanie suwaka jasności - Zarządzaj aplikacją, aby uzyskać numer telefonu i zalogować się jednym kliknięciem Uprość ekran główny Bezpieczeństwa Usuń kartę rekomendacji funkcji Blokada aplikacji z zatartym PIN-em @@ -1753,8 +1627,12 @@ Metoda wprowadzania Sogou Usuń ograniczenie liczby schowków Dodaj przycisk czyszczenia schowka + + Usługa aktywacji kart SIM Xiaomi + Wyłącz aktywację karty SIM 2 podczas roamingu + Obsługiwane tylko w Chinach kontynentalnych + Zastosuj bardziej agresywne filtrowanie roamingu - Skaner Skaner SI Odblokuj skan dowodu tożsamości Odblokuj tłumaczenie @@ -1764,7 +1642,6 @@ Odblouj skanowanie prezentacji Odblokuj skanowanie plików - Mi SI Super SI Wyłącz znak wodny czatu @@ -1916,4 +1793,8 @@ Wyłączone Wyłącz sugestie Włącz sugestie + Aplikacja działa nieprawidłowo + %s awarii(rie) + Kliknij, aby wyświetlić szczegóły + Wyświetl diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index e8c0bf983..ad1697a0a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -21,7 +21,7 @@ Nova versão encontrada © 2023-2025 Sevtinge & Contribuidores do HyperCeiler. - Torne o HyperOS/MIUI ótimo novamente! + Torne o HyperOS ótimo novamente! adicionar e excluir arquivos no armazenamento interno do dispositivo ser usado para fornecer serviços como latitude e longitude Durante o uso, para fornecer mais recursos, podemos solicitar permissão Root/Su. Você pode acessar o Gerenciador de permissões a qualquer momento para ajustar o status de autorização de todas as permissões e ir ao seu gerenciador Root/Su para obter permissões Root/Su. @@ -219,7 +219,9 @@ Barra de índice Cancelar Limpar + Valor inválido. Por favor, verifique e digite novamente. Transparência + Cor customizada Monet Grade Slider @@ -234,6 +236,7 @@ Mostrar barra lateral Selecionar Ocultar barra lateral + Valor inválido. Por favor, verifique e digite novamente. Puxe para baixo para atualizar Atualizado com sucesso Atualizando… @@ -254,10 +257,6 @@ Função Recomendado Editor - Gravação - Disparo - Retrato - Pro Ativar Desativar Ativar personalização @@ -365,8 +364,6 @@ Recentemente usado Armazenamento usado Data de instalação - Três blocos grandes - Um bloco grande e dois pequenos Oficial vem com blur Blur de fundo personalizado Fechar @@ -398,6 +395,7 @@ Exibição de duas linhas\n\nMini-relógio da Área de notificações na parte superior\nRelógio da barra de status na parte inferior Mickey Mouse Urso de morango + Princesa da Disney Google Play Service Modo S-Leo Taplus @@ -424,11 +422,9 @@ Suporta apenas links Ajustar volume por padrão Ajuste de volume instantâneo - Controle de volume independente Remover restrições de segurança de volume alto Para todos os casos Apenas quando o fone de ouvido estiver conectado - Controle deslizante do volume de notificação Nível do volume de mídia Isso pode fazer com que a rolagem da barra de volume congele ou o volume do Bluetooth fique anormal Multiplicador de nível de volume @@ -557,52 +553,7 @@ Marca d’água do dispositivo personalizada Informação do fabricante Informação do dispositivo - Desbloquear Marca d\'água por IA - Desbloquear Longa exposição - Desbloquear modo Clonar - Desbloquear Espelho de bolso - Desbloquear modo Documentos - Desbloquear modo Cartão de identificação - Desbloquear Câmera dupla - Desbloquear Duração - Desbloquear Vídeo curto - Desbloquear modo Superlua - Desbloquear modo Panorama - Desbloquear modo Pixel - Desbloquear modo Retrato - Desbloquear Câmera lenta - Desbloquear Video-céu - Desbloquear VLOG - Desbloquear VLOG PRO - Desbloquear Câmera de filme - Desbloquear Longa exposição - Desbloquear Zoom mágico - Desbloquear Sonho - Desbloquear Disparo lento - Desbloquear Fluxo de tempo - Desbloquear Congelar tempo Desbloquear Disparo com palma da mão - Desbloquear Cores aprimoradas - Desbloquear Maquiagem - Tem efeito apenas ao usar a câmera frontal - Desbloquear 60FPS - Não está disponível em algumas qualidades. Por favor, verifique se o seu dispositivo é compatível. - Desbloquear 120FPS - Suporta apenas qualidade 4K. Por favor, verifique se o seu dispositivo é compatível. - Desbloquear Zoom por áudio - Desbloquear HDR - Desbloquear Aprimoramento de IA - Desbloquear Embelezador - Tem efeito apenas ao usar a câmera frontal - Desbloquear Retrato master - Não funciona corretamente em alguns dispositivos - Desbloquear RAW - Desbloquear LOG - Desbloquear HEIF - Desbloquear Rastreamento de foco - Desbloquear Rastrear movimento - Desbloquear Remoção de verrugas - Desbloquear Ajustar efeitos de maquiagem para homens Ativar Opções de laboratório Desbloquear Foco de rastreamento ocular Forçar brilho máximo ao usar a câmera @@ -642,6 +593,8 @@ Desativar remoção do modo de rede Desbloquear Vice slot VoLTE Use os dados móveis durante chamadas VoLTE no SIM secundário + Desbloquear Link de voz + Desbloqueie o Link de voz para alguns SIMs que suportam Chamada por Wi-Fi Downloads Bloquear a criação da pasta .xlDownload @@ -669,12 +622,10 @@ Ocultar câmera Ocultar tela inteligente Corrente - Exibir segundos do relógio Desfocar botões da Tela de bloqueio Após ativar, o fundo da câmera e do botão negativo da Tela de bloqueio ficam desfocados, o que pode causar alto consumo de energia.\nSuporta apenas o tema padrão. Raio de fundo Cor de fundo - Forçar o relógio a usar fontes do sistema Toque duas vezes na Tela de bloqueio Toque duas vezes em um local vazio para bloquear a tela Desbloquear restrição de notificação @@ -711,13 +662,8 @@ Gerenciar ícones Gerenciar indicador de velocidade da rede Gerenciar indicador de relógio - Indicadores de hardware Dica inteligente Letras de foco - Layout - Modo de compatibilidade - Ative forçosamente o layout de tela inteira para todas as telas de formato especial - Modo de layout Toque duas vezes para desligar a tela Barra de sinal de duas linhas Tema do ícone @@ -746,8 +692,6 @@ Dispositivos Rede Privacidade - Exibir ícones do lado esquerdo - Exibir ícones do lado direito Wi-Fi Wi-Fi auxiliar Padrão Wi-Fi @@ -790,23 +734,17 @@ Grupo de caixa de som estéreo TV Fone de ouvido sem fio - Número máximo de pontos de notificação Número máximo de ícones de notificação Ocultar porcentagem da bateria Ocultar sinal de porcentagem da bateria Ocultar indicador de carregamento Ocultar ícone da bateria Personalização da bateria - Indicador de bateria Wi-Fi Rede móvel Trocar Wi-Fi e rede móvel Velocidade da internet Cena sonora - Forçar o uso do novo ícone HD - Suporta apenas algumas versões do sistema - Separador de velocidade de rede - A linha vertical entre o tempo e a velocidade da internet não é exibida em dispositivos com notch centralizado Ocultar barra de status ao fazer uma captura de tela Ícone do tipo de rede móvel Ativar modificação @@ -822,21 +760,9 @@ Os valores da velocidade de rede abaixo desse nível são considerados lentos e um indicador diferente será exibido (apenas alguns ícones) Ocultar sufixo de bytes por segundo (*b/s) Ícone indicador - Modo de relógio personalizado - Formato do relógio - Exibir ano - Exibir mês - Exibir dia - Exibir semana - Exibir hora dupla - Exibir período do relógio - Exibir segundos - Ocultar espaço - Exibir duplo Alinhamento de duas linhas Exemplo do formato de relógio Tamanho do relógio - Tamanho do relógio de duas linhas Válido somente quando exibido em duas linhas Corrigir cor Desativar animação de transição do relógio @@ -852,36 +778,6 @@ Formato do relógio da barra de status Formato do mini-relógio da Área de notificações Arranjo do relógio da barra de status - Relacionado à energia - Relacionado à temperatura - Tamanho da fonte - Exibir conteúdo - Ocultar casas decimais - Ocultar unidades - Exibir à direita - A corrente sempre exibe um valor positivo - A potência sempre exibe um valor positivo - Exibir em linha única - Ordem reversa - Exibir apenas ao carregar - Intervalo de atualização de status - Corrigir temperatura da CPU - Digite o número de /sys/devices/virtual/thermal/thermal_zone* - Centralizado - Cantos arredondados - Limitar visibilidade - Alinhar verticalmente - Cor - Cor da bateria cheia - Cor da bateria baixa - Cor do modo da Economia de bateria - Cor do carregamento - Altura - Margem horizontal - Transparência - Brilhante - Nível de bateria baixa - Teste Layout Informação Depurar @@ -902,11 +798,9 @@ Adicionar espaço em branco no final da letra Torne a rolagem das letras o mais completa possível Centro de controle - Cartão Cartão de notificação de mídia Magnético - Notificação - Transparência do fundo do cartão + Área de notificações %1$s está ativado %1$s está desativado Interruptor de rede 5G @@ -929,21 +823,8 @@ Colunas %d colunas Colunas (Paisagem) - Entrada do Xiaomi Smart Play - Entrada do Xiaomi Smart Hub - Entrada de controle do dispositivo - Valor do blur do detalhe de fundo do controle Desativar modo transparente Desative a configuração do plano de fundo da notificação para ser transparente - Modelo do blur de notificação - Otimização de notificação - Recurso experimental. Disponível apenas para modelos Android 13 e superiores. Após a ativação, o blur de notificação em algumas áreas será otimizado. Pode haver um problema de travamento da UI do Sistema em alguns modelos. - Raio do blur - Sem notificação suspensa - Raio do canto - O tema padrão não precisa ser ajustado - Valor do blur de fundo - Valor padrão de fundo Otimizar mistura de cores no painel de controle de mídia Barra de progresso Remover restrições personalizadas para notificação de mídia @@ -959,6 +840,8 @@ Remover fundo de cores misturadas do cartão Raio do blur da imagem de fundo Opacidade da camada de sobreposição do fundo + Botão de mídia + Barra de busca de mídia Notificações compactas Reduza o espaçamento vertical das notificações Redirecionar configurações de notificação @@ -981,8 +864,6 @@ Ocultar apenas o delimitador Exibir nome do dispositivo Ocultar todos os nomes - Estilo do ícone Bluetooth - Mova o ícone do Bluetooth para perto do ícone de rede Menu de notificação estendido Abra as informações do app, force a parada do app e abra em uma janela flutuante no menu de notificação (deslize a notificação para a esquerda para abri-la) Novo centro de controle @@ -1001,18 +882,16 @@ Permite exibir 10, 17 ou mais notificações. Otimizar mistura de cores de fundo do destaque da notificação Reverte para a mistura normal de cores do estilo de notificação + Exibir valor do brilho + Exibir valor do volume + Conteúdo + Percentagem + Valor de origem Outros Barra de volume nativa Menu de energia nativo - MIUI usa a interface de menu herdada, enquanto o HyperOS usa a interface de menu AOSP. - Modificações na barra de volume do HyperOS/MIUI não podem ser aplicadas à barra de volume nativa Desbloquear editor da área de transferência AOSP - Após o desbloqueio, ele aparecerá junto com o editor HyperOS/MIUI. - Animação de carregamento - Estilo da animação de carregamento - Selecione o estilo da animação de carregamento da Tela de bloqueio Outros - Impedir que o Bluetooth seja desligado temporariamente Ocultar botão de Tela dividida Oculte os três pontos permanentes, incluindo a parte superior da janela pequena e o botão no meio da parte superior da tela horizontal do HyperOS para Pad (não afeta o uso das funções). Desativar botão de Tela dividida @@ -1031,15 +910,17 @@ Personalizar cores do tema Personalize as cores do tema em vez de retirar as cores do plano de fundo do sistema Escolha a cor do tema - Timer estendido Guia de troca rápida Notificação Desativar lista de permissões de notificação Remover as restrições de blur das Texturas avançadas Desbloqueie o blur das Texturas avançadas, que está desativado por padrão para temas de terceiros no Plug-in da IU do Sistema. + Barra de volume + Pressionar para expandir a barra de volume secundária + Timer estendido Ativar blur na barra de volume Mover statusbar_gestures.dat para o diretório MIUI - Somente para modelos Android12+ MTK. Pode haver alta carga na GPU. + Pode haver alta carga na GPU. Gerenciamento de chamadas Permitir encaminhamento de chamadas através do código MMI @@ -1077,7 +958,6 @@ Desbloquear Xiaomi HyperAI Após ativar, exibe a opção Xiaomi HyperAI nas Configurações. O suporte para os recursos de IA do dispositivo é determinado pela Xiaomi. Funções em destaque - Desbloquear captura de tela da área Assistente VoIP Tela e brilho Desbloquear Super resolução @@ -1134,14 +1014,8 @@ Desativar pop-up de diálogo \"Ativar atualizações automáticas\" Permissões - Área de transferência - Ocultar dicas rápidas Desativar desligamento automático do início automático - Ler área de transferência usando dicas rápidas - Oculte a caixa de diálogo e permita que o app leia a área de transferência por padrão - Ler área de transferência - Transmitir Serviços de interconectividade Desbloquear Interconexão do dispositivo Suporte forçado para streaming de câmera @@ -1150,7 +1024,6 @@ Gravador Desativar marca d\'água IA - Tela sempre ativa Tela ambiente e editor da Tela de bloqueio Desbloquear limite de tempo de exibição da Tela ambiente Reinicie a UI do Sistema para ativar totalmente o recurso @@ -1205,8 +1078,7 @@ MiCloud Google Google e OneDrive - - Componentes de segurança da MIUI + Componentes de segurança do sistema Impedir o upload automático da lista de apps instalados Desativar verificação de ambiente @@ -1370,7 +1242,6 @@ Tamanho do ícone Recentes Velocidade da animação - Desativar escurecimento do plano de fundo Desbloquear apps fixados Ocultar barra de status nos Recentes Ocultar janela flutuante ao espelhar tela @@ -1482,12 +1353,16 @@ Editor da Galeria Fundação + Autoria Autoria de IA + Personalizar o quadro + Função conjunta Desbloquear recursos de personalização da Disney Os desbloqueios incluem os seguintes recursos:\n• Molduras personalizadas - Molduras personalizadas da Disney (em conflito com outras molduras personalizadas)\n• Fundo Bokeh - Mickey Mokeh\n• Adesivos - Adesivos da Disney Desbloquear molduras do Ano Novo Chinês Para adicionar permanentemente uma moldura personalizada do Ano Novo Chinês, o pré-requisito é que você precise de uma moldura personalizada Leica ou de uma moldura personalizada Redmi. Remover limite mínimo de corte de imagem + Desbloquear Personalizar o quadro Personalizar tipo de moldura Desbloquear filtro Leica Apenas algumas versões são suportadas @@ -1569,8 +1444,6 @@ Desativar anúncios do Game Center Isso pode fazer com que outras funções sejam anormais - Segurança - Segurança Segurança Gerenciar apps Bateria @@ -1582,14 +1455,11 @@ Fechar janela pop-up Dolby Exibir temperatura da bateria Exibir saúde da bateria detalhada - Proteger área de transferência - Precisão de localização mais baixa Serviço GMS Interruptores Taplus Substituir ícone de bloco muito escuro Controle do brilho da lanterna Permite que você controle o brilho da lanterna arrastando o controle deslizante de brilho - Gerenciar app para obter o número de telefone e faça login com um clique Simplificar a tela inicial do Segurança Remove o cartão de recomendação de funções Bloqueio de apps com PIN embaralhado @@ -1753,8 +1623,10 @@ Método de entrada Sogou Remover limite do número de áreas de transferência Adicionar botão limpar área de transferência + + Serviço de ativação do SIM Xiaomi + Apenas o Continente Chinês é suportado - Scanner Scanner IA Desbloquear Escanear cartão ID Desbloquear Tradução @@ -1764,7 +1636,6 @@ Desbloquear Escanear PPT Desbloquear Escanear arquivos - Mi AI Super Mi AI Desativar marca d\'água no chat @@ -1916,4 +1787,6 @@ Desativado Desativar sugestão Ativar sugestão + Clique para ver detalhes + Ver diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 480fe964f..2588c67d5 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -21,7 +21,7 @@ Есть новая версия © 2023-2025 Sevtinge & Вклад HyperCeiler. - Сделайте HyperOS/MIUI снова великой! + Сделайте HyperOS снова великой! добавление и удаление файлов в памяти устройства используется для предоставления таких услуг, как широта и долгота Во время использования, чтобы предоставить вам больше функций, мы можем запросить у вас разрешение Root/Su. Вы можете в любое время перейти к управлению разрешениями, чтобы настроить статус авторизации всех разрешений, а также обратиться к своему менеджеру Root/Su за разрешениями Root/Su. @@ -219,7 +219,9 @@ Индексная панель Отмена Очистка + Неправильное значение. Пожалуйста, проверьте и введите снова. Прозрачность + Пользовательский цвет Monet Сетка Ползунок @@ -234,6 +236,7 @@ Показать боковую панель Выбрать Скрыть боковую панель + Неправильное значение. Пожалуйста, проверьте и введите снова. Потянуть вниз для обновления Успешно обновлено Обновление… @@ -254,10 +257,6 @@ Функции Рекомендованное Редактор - Видео - Фото - Портрет - ПРО Активировать Отключено Настройка дока @@ -365,8 +364,6 @@ Частота использования Занимаемое место Время установки - Три большие плитки - Одна большая и две маленькие плитки Официально поставляется с размытием Своё значение размытия фона Закрыть @@ -398,6 +395,7 @@ Отображение в две строки\n\nМини-часы в панели уведомлений сверху\nЧасы в строке состояния снизу Микки Маус Клубничный мишка + Принцесса Disney Сервис Google Play Режим S-Leo Переключатели Taplus @@ -424,11 +422,9 @@ Только поддерживаемые ссылки Настройка громкости по умолчанию Мгновенная регулировка громкости - Независимый регулятор громкости Убрать предупреждение безопасности для высокой громкости Включено во всех случаях Включено только при подключении наушников - Ползунок громкости уведомлений Уровень громкости мультимедиа Это может привести к зависанию прокрутки панели громкости или неправильному уровню громкости Bluetooth Множитель уровня громкости @@ -557,52 +553,7 @@ Пользовательский водяной знак Информация о производителе Информация об устройстве - Умный водяной знак - Длинная выдержка - Режим Клон - Карманное зеркало - Режим Документ - Режим ID-карта - Двойная камера - Замедленная съемка - Короткие видео - Супер-луна - Панорама - Режим Pixel - Портрет - Замедленная съемка - Video-sky - Vlog - Vlog Pro - Кино-камера - Длительная выдержка - Масштабирование - Мечты - Замедленная выдержка - Обратный поток - Заморозка Снимок ладонью - Улучшение цвета - Макияж - Работает только с фронтальной камерой - 60 FPS - Недоступно в некоторых качествах, убедитесь, что ваше устройство поддерживается - 120 FPS - Поддерживает только качество 4K, убедитесь, что ваше устройство поддерживается - Фокусировка микрофона - HDR - AI улучшения - Новая красота - Работает только с фронтальной камерой - Мастер-объектив - Может не работать на некоторых устройствах - RAW - LOG - HEIF - Следящий автофокус - Захват движения - Удалить родинки - Настройка макияжа для мужчин Тестовые функции Следить за глазами Установить максимальную яркость при использовании камеры @@ -642,6 +593,8 @@ Отключить \"Удалить сетевой режим\" Интернет во время вызовов VoLTE Используйте мобильные данные во время вызовов VoLTE на дополнительной SIM-карте + Разблокировать голосовую ссылку + Разблокировать голосовую ссылку для некоторых SIM-карт, поддерживающих WiFi-вызов. Диспетчер загрузки Заблокировать создание папки .xl Download @@ -669,12 +622,10 @@ Скрыть камеру Скрыть умный экран Ток - Показывать секунды на часах Размытие камеры и кнопки умного экрана После включения фон камеры и кнопки отрицательного экрана на экране блокировки размыты, что может привести к высокому энергопотреблению. Поддерживается только тема по умолчанию. Радиус фона Цвет фона - Заставить часы использовать системные шрифты Блокировка экрана двойным нажатием Дважды коснитесь пустого места, чтобы заблокировать экран Разблокировать ограничение на уведомления @@ -711,13 +662,8 @@ Управление иконками Управление индикатором скорости сети Управление индикатором часов - Индикаторы оборудования Умное всплывающее уведомление Фокус текста - Отображение - Режим совместимости - Принудительно включить полный экран для всех специальных экранов - Режим сетки Блокировка двойным нажатием Двухрядная индикаторная панель Темы значков @@ -746,8 +692,6 @@ Устройства Сеть Конфиденциальность - Отображение иконок слева - Отображение иконок справа Wi-Fi Дополнительный Wi-Fi Стандарт Wi-Fi @@ -790,23 +734,17 @@ Стерео группы звуковых блоков Телевизор Беспроводная гарнитура - Максимальное количество пунктов уведомлений Максимальное количество значков уведомлений Скрыть процент заряда Скрыть процент заряда батареи Скрыть индикатор зарядки Скрыть значок батареи Настройка значка батареи в строке состояния - Индикатор батареи Wi-Fi Мобильная сеть Поменять местами Wi-Fi и мобильную сеть Скорость интернета Звуковой режим - Принудительно использовать новый HD - Требуется последняя версия системы, некоторые модели, возможно, не были обновлены - Разделитель скорости сети - Вертикальная линия между временем и скоростью интернета не отображается на устройствах с центральной камерой Скрывать строку состояния при создании скриншота Значок типа мобильной сети Включить модификации @@ -822,21 +760,9 @@ Значения скорости сети ниже этого уровня считаются низкими и будет отображаться другой значок индикатора (только часть значков). Скрыть суффикс байт в секунду (*b/s) Значок индикатора - Свой режим часов - Формат часов - Показывать год - Показывать месяц - Показывать дату - Показывать неделю - Показывать двойные часы - Отображение периода времени - Показывать секунды - Скрыть пространство - Показать в две строки Выравнивание двойных строк Пример формата часов Размер часов - Размер двойной строки Действителен только когда отображается две строки Исправить цвет Отключите анимацию перехода по времени слайда в \"Центр уведомлений\" @@ -852,36 +778,6 @@ Формат часов в строке состояния Формат мини-часов на панели уведомлений Расположение часов в строке состояния - Энергопотребление - Температура - Размер шрифта - Показать содержимое - Скрыть знаки после запятой - Скрывать единицы измерения - Показывать справа - Ток всегда показывает положительное значение - Мощность всегда показывает положительное значение - Отображать в одной строке - Обратный порядок - Показывать только при зарядке - Интервал обновления состояния - Фиксировать температуру процессора - Введите количество для /sys/devices/virtual/thermal/thermal_zone* - По центру - Закругленные углы - Ограничение видимости - Выровнять по вертикали - Цвет - Цвет 100% заряда - Цвет разряженной батареи - Цвет режима энергосбережения - Цвет зарядки - Высота - Горизонтальный интервал - Прозрачность - Подсветка - Низкий уровень заряда батареи - Тест Отображение Информация Отладка @@ -902,11 +798,9 @@ Добавить пробел в конце текста Сделайте прокручиваемый текст максимально полным Центр управления - Карта Карточка мультимедийного уведомления Магнит Уведомления - Прозрачность фона карты %1$s вкл. %1$s выкл. Сетевой коммутатор 5G @@ -929,21 +823,8 @@ Столбцы Ряд: %d Кол-во столбцов (ландшафт) - Mi Play - Умный хаб - Элемент управления устройством - Значение размытия фона элемента управления Отключить прозрачный режим Отключить настройку прозрачности фона уведомлений - Настройка размытия уведомлений - Оптимизация уведомлений - Экспериментальная функция доступна только для моделей Android 13 и более поздних версий. После включения размытие уведомлений в некоторых областях будет оптимизировано. На некоторых моделях может возникнуть проблема сбоя системного интерфейса. - Степень размытия - Без раскрывающегося уведомления - Радиус угла - Тема по умолчанию не нуждается в настройке - Значение размытия фона - Фоновое значение по умолчанию Оптимизировать эффект смешивания цветов на панели управления мультимедиа Индикатор выполнения Удалить ограничение на применение специальных действий для карточек мультимедийных уведомлений @@ -959,6 +840,8 @@ Удалить смешанный цветной фон с карты Радиус размытия фонового изображения Непрозрачность слоя наложения фона + Кнопка \"Медиа\" + Панель поиска медиа Компактные уведомления Уменьшить вертикальные отступы уведомлений Перенаправить настройки уведомлений @@ -981,8 +864,6 @@ Скрывать только разделители Отображение имени устройства Скрыть все имена - Стиль плитки Bluetooth - Переместить Bluetooth-плитку рядом с сетевой плиткой Расширенное меню уведомлений Добавляет новые действия в меню уведомления (открывается по свайпу влево) - открыть информацию о приложении и принудительно закрыть приложение Новый центр управления @@ -1001,18 +882,16 @@ Разрешить отображение 10, 17 или более уведомлений. Оптимизация смешивания цветов фона подсветки уведомлений Вернуться к обычному стилю смешивания цветов уведомлений + Значение яркости дисплея + Отображать значение громкости + Содержание + Проценты + Оригинальное значение Прочее Встроенная панель громкости Меню выключения от AOSP - MIUI использует устаревший пользовательский интерфейс меню, а HyperOS использует пользовательский интерфейс меню AOSP - Модификация панели громкости Xiaomi не применяется к встроенной панели громкости Разблокировать редактор буфера обмена AOSP - После разблокировки он появится вместе с редактором MIUI/HyperOS. - Анимация заряда - Стиль анимации зарядки - Выберите стиль анимации зарядки на экране блокировки Прочее - Предотвратить временное отключение Bluetooth Скрыть кнопку управления окнами Скрыть кнопку с тремя точками Отключить кнопку мульти окон @@ -1031,12 +910,16 @@ Настройка цвета темы Настройка цвета темы вместо получения цвета из системных обоев Выберите цвет темы - Расширенный таймер Вкладка быстрого переключения Уведомление Отключить белый список уведомлений Убрать ограничения размытия из расширенных текстур Разблокировать размытие расширенных текстур, которое по умолчанию отключено для сторонних тем в плагине SystemUI. + Панель громкости + Нажмите, чтобы развернуть дополнительную панель громкости. + Когда эта функция включена, кнопка \"Развернуть\" отключается. + Скрыть кнопки отключения звука и \"Не беспокоить\" + Расширенный таймер Включить размытие полосы громкости Переместить statusbar_gestures.dat в каталог MIUI Только для моделей MTK с Android 12+, возможна высокая загрузка графического процессора @@ -1077,7 +960,6 @@ Разблокировать Xiaomi HyperAI После включения? в настройках отображается опция Xiaomi HyperAI. Поддержка функций AI устройства определяется Xiaomi. Избранные функции - Скриншот области разблокировки Помощник по VoIP Отображение и экран блокировки Сверхвысокое разрешение @@ -1134,14 +1016,8 @@ Отключить всплывающее окно диалога \"Включить автоматические обновления\" Разрешения - Буфер обмена - Скрыть всплывающие подсказки Автоотключение автозапуска запрещено - Использовать всплывающие подсказки для чтения содержимого буфера обмена - Скрывает диалоговое окно и позволяет приложению считывать буфер обмена по умолчанию - Чтение буфера обмена - Cast Сервисы подключения Разблокировать подключение устройства Принудительная поддержка вещания камеры @@ -1150,7 +1026,6 @@ Запись звука Отключить водяной знак AI - Дисплей всегда включен (AOD) AOD Разблокирует ограничение по времени отображения постоянно включенного экрана Перезапустите интерфейс системы, чтобы полностью включить функцию @@ -1205,8 +1080,7 @@ Облачный сервис Xiaomi Google Google и OneDrive - - Безопасность MIUI + Компоненты безопасности системы Запретить автозагрузку списка установленных приложений Отключить проверку окружения @@ -1370,7 +1244,6 @@ Размер иконки Недавние Скорость анимации - Отключить затемнение обоев Разблокировать закрепленные приложения Скрыть строку состояния в режиме просмотра задач Скрыть плавающее окно приложения зеркалирования экрана @@ -1481,13 +1354,19 @@ Оптимизация задержки запуска приложения Редактор галереи + Инструкции по использованию:\n- Пожалуйста, используйте хук v2 для версий 1.7.5.0.4 и более поздних, и пожалуйста, используйте хук v1 для версий ниже 1.7.5.0.4. + Тип хука редактора галереи Foundation + Авторизация Авторизация ИИ + Настройте рамку + Совместная функция Разблокировать возможности настройки Disney Разблокировка включает следующие функции: - Пользовательские рамки - Пользовательские рамки Disney (конфликтуют с другими пользовательскими рамками) - Фон Боке - Микки Моке - Стикеры - Наклейки Disney Разблокировать пользовательские рамки для фото, посвященные китайскому Новому году Чтобы навсегда добавить специальную рамку для изображения китайского Нового года, необходимо, чтобы вам нужна специальная рамка для изображения Leica или специальная рамка для изображения Redmi. Разблокировать минимальное ограничение на обрезку изображения + Разблокируйте и настройте рамку Изменить тип фрейма Разблокировать фильтр Leica Поддерживаются только некоторые версии @@ -1495,6 +1374,7 @@ Mi Share Отключить автозакрытие Mi Share + Включайте службы определения местоположения, когда общий доступ к файлам отключен. Разблокировать турбоперенос Все @@ -1568,8 +1448,6 @@ Отключить рекламу в \"Центр игр\" Это может привести к нарушению других функций - Безопасность - Центр безопасности Безопасность Управление приложениями Энергосбережение и батарея @@ -1581,14 +1459,11 @@ Закройте всплывающее окно Dolby Показывать температуру батареи Показать подробную информацию о состоянии батареи - Защита буфера обмена - Более низкая точность позиционирования Служба GMS Переключатели таплуса Замена иконки очень темной плитки Управление яркостью фонарика Позволение управлять яркостью фонарика путем перетаскивания ползунка яркости - Управляйте приложением, чтобы получить номер телефона для быстрого доступа Упростить главный экран безопасности Удалить функцию рекомендации карты Хаотичная последовательность PIN-кода для блокировки приложения @@ -1752,8 +1627,12 @@ Метод ввода Sogou Снимите ограничение на количество буфера обмена Добавить кнопку очистки буфера обмена + + Служба активации SIM-карт Xiaomi + Отключить активацию SIM 2 при роуминге + Поддерживается только материковая часть Китая + Используйте более агрессивный подход к фильтрации роуминга - Сканер AI Сканер Сканировать ID-карты Переводчик @@ -1763,7 +1642,6 @@ Сканировать презентации Сканировать файлы - Mi AI Супер AI Отключить водяной знак чата @@ -1915,4 +1793,8 @@ Отключить журнал Отключить предложение Включить предложение + Приложение работает ненормально + %s множественные сбои + Нажмите, чтобы просмотреть детали. + Просмотреть diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 697b91f9d..6f8bcedb9 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -19,7 +19,7 @@ --> - HyperOS/MIUI\'yi Yeniden Harika Hale Getirin! + HyperOS\'yi Yeniden Harika Hale Getirin! cihazın dahili depolama alanınındaki dosyaları ekle ve sil enlem ve boylam gibi hizmetleri sağlamak için kullanılır Kullanım sırasında, size daha fazla özellik sunabilmek için sizden Root/Su izni talep edebiliriz. Tüm izinlerin yetki durumunu ayarlamak için istediğiniz zaman İzin Yönetimi\'ne gidebilirsiniz ve Root/Su izinlerini vermek için lütfen Root/Su yöneticinize gidin. @@ -176,10 +176,6 @@ İşlev Önerilen Düzenleyici - Kayıt - Çekim - Portre - Pro Etkinleştir Kapat Özelleştirmeyi aç @@ -287,8 +283,6 @@ Kullanım sıklığı Kullanılan depolama alanı Yükleme zamanı - Üç büyük düğme - Bir büyük ve iki küçük düğme Resmi bulanıklık Özel arkaplan bulanıklığı Kapat @@ -342,11 +336,9 @@ Yalnızca bağlantıları destekler Ses seviyesini varsayılan olarak ayarla Anında ses ayarı - Bağımsız ses kontrolü Yüksek hacimli güvenlik kısıtlamalarını kaldırın Tüm durumlar için Yalnızca kulaklık bağlıyken - Bildirim ses kaydırıcısı Medya ses seviyesi Ses çubuğunun kaydırılmasının donmasına veya Bluetooth ses seviyesinin anormal olmasına neden olabilir Ses seviyesi çarpanı @@ -466,52 +458,7 @@ Özel cihaz filigranı Üretici bilgileri Cihaz bilgisi - AI filigranının kilidini aç - Uzun pozlamanın kilidini aç - Klon modunun kilidini aç - Cep aynasının kilidini aç - Belge modunun kilidini aç - Kimlik Kartı modunun kilidini aç - Çift kameranın kilidini aç - Kilit Açma Süresi - Kısa videoların kilidini aç - Süper ay modunun kilidini aç - Panorama modunun kilidini aç - Piksel modunun kilidini aç - Portre modunun kilidini aç - Yavaş çekimin kilidini aç - Videonun Kilidini Aç-gökyüzü - Vlog\'un Kilidini Aç - Vlog Pro\'nun kilidini Aç - Film kamerasının kilidini aç - Uzun deneyimin kilidini aç - Dolly zoom\'un kilidini aç - Rüyanın Kilidini Aç - Yavaş deklanşörün kilidini aç - Zamanın geri akışının kilidini aç - Kilit Açma Süresi donuyor Avuç içi deklanşörünün kilidini aç - Renk geliştirmenin kilidini aç - Makyajın Kilidini Aç - Yalnızca ön kamerayı kullanırken etkili olur - 60 FPS\'nin kilidini aç - Bazı özelliklerde mevcut değildir, lütfen cihazınızın desteklendiğinden emin olun - 120 FPS\'nin kilidini aç - Sadece 4K kalitesinde destek, lütfen cihazınızın desteklendiğinden emin olun - Sesli yakınlaştırmanın kilidini aç - HDR\'nin kilidini aç - AI geliştirmenin kilidini açın - Yeni güzelliğin kilidini aç - Yalnızca ön kamerayı kullanırken etkili olur - Ana lensin kilidini aç - Bazı cihazlarda iyi çalışmayabilir - RAW\'ın kilidini aç - Günlüğün kilidini aç - HEIF\'in kilidini aç - Hareket izi odağının kilidini aç - Hareket yakalamanın kilidini aç - Köstebekleri kaldır - Erkekler için makyaj efektlerini ayarlama kilidini aç Laboratuvar seçeneklerini etkinleştir Parça gözlerinin kilidini aç Kamerayı kullanırken maksimum parlaklığı zorla @@ -574,10 +521,8 @@ Camerayı gizle Akıllı ekranı gizle Mevcut - Saat saniyelerini göster Arka plan bulanıklaştırma yarıçapı Arka plan rengi - Saati sistem yazı tiplerini kullanmaya zorla Kilit ekranı için iki kez dokunun Ekranı kilitlemek için boş bir konuma çift dokunun DND modu bildirimini gizle @@ -610,12 +555,7 @@ Simge yöneticisi Ağ hızı göstergesi yönetimi Saat göstergesi yönetimi - Donanım işaretçileri Akıllı Güçlü Toast - Düzen - Uyumluluk Modu - Tam ekran düzenini özel şekilli ekranların tümü için etkinleştir - Düzen modu Çift dokunuşla uyutma Çift sıralı sinyal çubuğu Simge temaları @@ -644,8 +584,6 @@ Cihazlar Gizlilik - Simgenin sol tarafında gösterilir - Simgenin sağ tarafı gösterir Wi-Fi Köle Wi-Fi Wifi standardı @@ -685,23 +623,17 @@ Ses kutusu TV Kablosuz Kulaklık - Maksimum bildirim noktası sayısı Maksimum bildirim simgesi sayısı Pil yüzdesini gizle Pil yüzdesi işaretini sakla Şarj gösterge ışığını gizleme Pil simgesini gizle Pil özelleştirme - Pil göstergesi Wifi Mobil ağ Wi-Fi ve Mobil Ağı Değiştirin İnternet hızı Ses sahnesi - Yeni HD simgesini kullanmaya zorla - Yeni bir sistem sürümü gereklidir. Bazı modeller güncellenmemiş olabilir - Ağ hızı ayırıcı - Zaman ve şebeke hızı arasındaki dikey çizgi, su damlası ekranı olan cihazda görüntülenmez Ekran görüntüsü alırken durum çubuğunu gizleyin Mobil ağ türü simgesi Ağ hızı güncelleme aralığı @@ -715,21 +647,9 @@ Bu seviyenin altındaki ağ hızı değerleri yavaş kabul edilir ve farklı bir gösterge simgesi görüntülenir (yalnızca bazı simgeler) İkinci sonek (*b/s) başına Bayt gizle Gösterge simgesi - Özel saat modu - Saat biçimi - Yılı göster - Ayı göster - Günü göster - Haftayı göster - Çift saati göster - Saat periyodunu göster - Saniyeleri göster - Alanı gizle - Çifte göster Çift sıra hizalama Saat biçimi örneği Saat boyutu - Çift sıra saat boyutu Yalnızca iki satır halinde görüntülendiğinde geçerlidir Renk düzeltme Durum çubuğu saat ayarları senkronize değil @@ -737,45 +657,14 @@ Saniye yenileme anahtarı Bildirim çubuğu saat biçimi Durum çubuğu saat düzenlemesi - Güç ile ilgili - Sıcaklıkla ilgili - Yazı tipi boyutu - İçerikleri göster - Ondalık basamakları gizle - Birimleri gizle - Sağda göster - Akım her zaman pozitif bir değer gösterir - Tek sıra ekran - Ters sıra - Yalnızca şarj olurken göster - Durum güncelleme aralığı - CPU sıcaklığını düzelt - /sys/devices/virtual/thermal/thermal_zone* sayısını girin - Merkez - Yuvarlatılmış köşeler - Görünürlüğü sınırla - Dikey olarak hizala - Renk - Tam dolu pil rengi - Düşük pil rengi - Power saving mode color - Şarj rengi - Yükseklik - Yatay kenar boşluğu - Şeffaf - Parlama - Düşük pil seviyesi - Test Yerleşim Bilgilendirme Hata ayıklama Metin Bu, kaydırma biçiminde çıktısı alınacak uzun bir metin parçasıdır Kontrol merkezi - Kart Mıknatıs Bildirim - Kart arka plan saydamlığı %1$s açık %1$s kapalı 5G ağ anahtarı @@ -790,18 +679,7 @@ Sütunlar %d liste Sütunlar (Yatay) - MiPlay Girişini Gizle - Cihaz kontrol girişi - Ayrıntı Arka Plan bulanıklığı değerini kontrol etme Bildirim arka planının şeffaf olarak ayarlanmasını devre dışı bırak - Bildirim Bulanıklığı Modeli - Bildirim optimizasyonu - Deneysel özellik. Yalnızca Android 13 ve üzeri modeller için kullanılabilir. Etkinleştirdikten sonra, bazı alanlardaki bildirim bulanıklığı optimize edilecektir. Bazı modellerde Sistem Arayüzü çökmesi sorunu olabilir. - Bulanıklık Yarıçapı - Aşağı açılır bildirim olmadan - Köşe Yarıçapı - Arka Plan değerini bulanıklaştır - Varsayılan Arka Plan değeri Medya kontrol panelinin renk karıştırma etkisini optimize edin İlerleme çubuğu Dalgalı @@ -831,7 +709,6 @@ Yalnızca ayırıcılar gizli Cihaz adını görüntüle Tüm isimleri gizle - Bluetooth döşeme stili Genişletilmiş bildirim menüsü Uygulama bilgilerini açın, uygulamayı kapatmaya zorlayın ve bildirim menüsünden kayan pencerede açın (açmak için bildirimi sola kaydırın) Yeni kontrol merkezi @@ -849,15 +726,8 @@ Diğer Yerel ses çubuğu Yerel kapatma menüsü - MIUI eski menü kullanıcı arayüzünü kullanırken HyperOS, AOSP menü kullanıcı arayüzünü kullan. - HyperOS/MIUI\'deki ses çubuğuna yapılan değişiklikler yerel ses çubuğuna uygulanamaz AOSP pano düzenleyicisinin kilidini açın - Kilidi açtıktan sonra HyperOS/MIUI editörüyle birlikte açılır pencere açılacaktır. - Şarj animasyonu - Şarj animasyon stili - Şarj animasyon stili Diğer - Bluetooth\'un geçici olarak kapatılmasını önleyin Bölünmüş ekran düğmesini gizle HyperOS for Pad yatay ekranının üst kısmındaki küçük pencerenin üst kısmı ve üst kısmın ortasındaki düğme dahil olmak üzere üç kalıcı noktayı gizleyin (fonksiyonların kullanımını etkilemez). Bölünmüş ekran düğmesini devre dışı bırak @@ -876,10 +746,10 @@ Tema rengini özelleştirme Sistem duvar kağıdından renk çekmek yerine tema renklerini özelleştirin Tema rengini seçin - Genişletilmiş zamanlayıcı Hızlı geçiş sekmesi Bildirim Bildirim beyaz listesini devre dışı bırak + Genişletilmiş zamanlayıcı Ses çubuğu bulanıklığını etkinleştir Sadece Android12+ MTK modelleri için. Yüksek GPU yükü olabilir. @@ -911,7 +781,6 @@ Yeni NFC sayfası Açıldıktan sonra, desteklenmeyen modeller için varsayılan ödeme uygulaması Xiaomi Cüzdan\'ı seçemiyor Öne çıkan işlevler - Ekran görüntüsü alanı kilidini aç VoIP asistanı Ekran ve parlaklık Süper çözünürlüğün kilidini aç @@ -963,18 +832,12 @@ Bu özellik gerçekten tehlikeli, lütfen günlük olarak kullanmayın İzinler - Pano - Tost İpuçlarını Gizle - İletişim kutusunu gizleyin ve uygulamanın varsayılan olarak panoyu okumasına izin verin - Panoyu oku - Yayınla Cihaz ara bağlantısının kilidini aç Kamera akışı desteğini zorla Hpplay klasörlerinin oluşturulmasını engelleme - Her zaman açık ekran Aod Aon\'un kilidini aç Taplus @@ -1019,8 +882,7 @@ Yedekleme sunucusu Google Google & OneDrive - - MIUI güvenlik bileşenleri + Yüklü uygulama listesinin otomatik olarak yüklenmesini engelle Sistem başlatıcı @@ -1156,7 +1018,6 @@ Özel renk Son Animasyon hızı - Duvar kağıdı kaydırmayı devre dışı bırak Sabitlenmiş uygulamaların kilidini aç Görev görünümünde durum çubuğunu gizle Serbest biçim düğmesini gizle @@ -1334,7 +1195,6 @@ Game Center Reklamlarını Devre Dışı Bırakma - Güvenlik Uygulama yönetimi Pil Tasarrufu ve Pil Gizlilik koruması @@ -1343,13 +1203,10 @@ Kenar Çubuğu Pil sıcaklığını göster Ayrıntılı pil sağlığını göster - Panoyu koru - Daha düşük konumlandırma doğruluğu GMS Hizmeti Taplus anahtarları Çok koyu renkli döşeme simgesi değişimi El feneri parlaklık kontrolü - Cep telefonu numarasını almak ve tek bir tıklama ile giriş yapmak için uygulamayı yönetin Sipariş dışı PIN\'i kilitle Kendi kendine başlayan bulanık önizleme görüntülerini devre dışı bırakma Uygulama kilidi PIN tuş takımı sırasını rastgele değiştir @@ -1465,8 +1322,8 @@ Sogou giriş yöntemi Pano sayısındaki sınırlamayı kaldırın + - Tarayıcı Tarama kimlik kartının kilidini aç Çevirinin kilidini aç OCR\'nin kilidini aç @@ -1475,7 +1332,6 @@ Tarama ppt\'sinin kilidini aç Tarama dosyalarının kilidini aç - Mi AI Sohbet filigranını devre dışı bırak diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index bf249ed30..605383526 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -21,7 +21,7 @@ Có phiên bản mới © 2023-2025 Người đóng góp Sevtinge & HyperCeiler. - Làm cho HyperOS/MIUI trở nên vĩ đại! + Làm cho HyperOS trở nên vĩ đại! thêm và xóa tập tin trên bộ nhớ trong thiết bị được sử dụng để cung cấp các dịch vụ như vĩ độ và kinh độ Trong quá trình sử dụng, để cung cấp cho bạn nhiều tính năng hơn, chúng tôi có thể xin quyền Root/Su. Bạn có thể truy cập Quản lý quyền bất kỳ lúc nào để điều chỉnh trạng thái ủy quyền của tất cả các quyền và vui lòng truy cập trình quản lý Root/Su của bạn để cấp quyền Root/Su. @@ -219,7 +219,9 @@ Thanh chỉ mục Hủy bỏ Xóa + Giá trị không hợp lệ. Vui lòng kiểm tra và nhập lại. Trong suốt + Tuỳ chỉnh màu Monet Lưới Thanh trượt @@ -234,6 +236,7 @@ Hiện thanh bên Chọn Ẩn thanh bên + Giá trị không hợp lệ. Vui lòng kiểm tra và nhập lại. Kéo xuống để làm mới Làm mới thành công Đang làm mới… @@ -254,10 +257,6 @@ Tính năng Đề xuất Trình chỉnh sửa - Quay phim - Chụp - Chụp chân dung - Chuyên nghiệp Kích hoạt Tắt Bật tùy chỉnh @@ -365,8 +364,6 @@ Tần suất sử dụng Bộ nhớ sử dụng Thời gian cài đặt - Ba hàng ô lớn - Một ô lớn và hai ô nhỏ Hiệu ứng làm mờ cài sẵn chính thức Tùy chỉnh làm mờ nền Đóng @@ -398,6 +395,7 @@ Hiển thị hai dòng\n\nĐồng hồ nhỏ trên thanh thông báo ở trên cùng\nĐồng hồ trên thanh trạng thái ở dưới cùng Chuột Mickey Gấu dâu + Công chúa Disney Dịch vụ Google Play Chế độ S-Leo Taplus @@ -425,11 +423,9 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoChỉ hỗ trợ các liên kết Điều chỉnh âm lượng mặc định Cài đặt điều chỉnh âm lượng - Kiểm soát âm lượng độc lập Tắt cảnh báo âm lượng quá lớn Đã bật cho mọi trường hợp Chỉ kích hoạt khi tai nghe được kết nối - Cột chỉnh âm lượng thông báo Mức âm lượng Nó có thể khiến cuộn thanh âm lượng bị đơ hoặc âm lượng Bluetooth bất thường Hệ số bước âm lượng @@ -559,52 +555,7 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTùy chỉnh hình mờ thiết bị Thông tin nhà sản xuất Thông tin thiết bị - Mở khóa Dấu chìm AI - Mở khóa Phơi sáng lâu - Mở khóa Bản sao - Mở khóa Gương trang điểm - Mở khóa Tài liệu - Mở khóa Thẻ căn cước - Mở khóa Máy ảnh kép - Mở khóa Chuyển động nhanh ban đêm - Mở khóa Video ngắn - Mở khóa Siêu trăng - Mở khóa Chụp toàn cảnh - Mở khóa Siêu phân giải - Mở khóa Chân dung - Mở khóa Chuyển động chậm - Mở khóa Video bầu trời - Mở khóa Vlog - Mở khóa Vlog Pro - Mở khóa Khung phim - Mở khóa Phơi sáng lâu - Mở khóa Thu phóng ma thuật - Mở khóa Thế giới song song - Mở khóa Màn trập chậm - Mở khóa Ngược dòng thời gian - Mở khóa Đóng băng thời gian Mở khóa Cử chỉ chụp ảnh - Mở khóa Màu nâng cao - Mở khóa Gương trang điểm - Chỉ hoạt động với camera trước - Mở khóa 60FPS - Một số chất lượng hình ảnh không khả dụng, một số phần cứngị không hỗ trợ - Mở khóa 120FPS - Chỉ hỗ trợ chế độ 4K, một số phần cứng không hỗ trợ - Mở khóa Thu phóng phím âm lượng - Mở khóa HDR - Mở khóa Chế độ AI - Mở khóa Hiệu ứng làm đẹp mới - Chỉ hoạt động với camera trước - Mở khóa Ống kính Pro - Một số thiết bị hoạt động không bình thường - Mở khóa RAW - Mở khóa Nhật ký - Mở khóa Định dạng HEIF - Mở khóa Theo dõi chuyển động - Mở khóa Chụp chuyển động - Mở khóa Loại bỏ nốt ruồi - Mở khóa Trang điểm nam Mở khóa Tính năng thử nghiệm Mở khóa Theo dõi mắt người Tăng tối đa độ sáng khi sử dụng camera @@ -644,6 +595,8 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTắt xóa chế độ mạng Mở khoá VoLTE sim phụ Sử dụng dữ liệu di động cho cuộc gọi VoLTE trên SIM phụ + Mở khóa liên kết thoại + Mở khóa liên kết thoại cho một số SIM hỗ trợ gọi qua Wi-Fi Tải xuống Chặn tạo thư mục .xlDownload @@ -671,12 +624,10 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoẨn Camera Ẩn Khoá tạp chí Hiện tại - Đồng hồ hiển thị giây Làm mờ phím tắt và thông báo Sau khi bật, nền của camera và nút màn hình điều hướng trên Màn hình khóa sẽ bị mờ, có thể gây tốn điện năng.\nChỉ hỗ trợ chủ đề mặc định. Bán kính nền Màu nền - Buộc đồng hồ dùng phông hệ thống Nhấn đúp để khoá màn hình Nhấn đúp vào vị trí trống để khóa màn hình Mở khóa giới hạn thông báo @@ -713,13 +664,8 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoBiểu tượng Tốc độ mạng Đồng hồ - Phần cứng Lời nhắc thông minh Lời bài hát Focus - Bố cục - Chế độ tương thích - Buộc kích hoạt bố cục toàn màn hình cho các màn hình có hình dạng đặc biệt - Bố cục thanh trạng thái Nhấn đúp để khoá màn hình Cột sóng kép Chủ đề biểu tượng @@ -748,8 +694,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoThiết bị Mạng Riêng tư - Chuyển biểu tượng sang trái - Chuyển biểu tượng sang phải Wi-Fi Biểu tượng Wi-Fi phụ Hiển thị chuẩn Wi-Fi @@ -792,23 +736,17 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoNhóm hộp âm nhạc nổi TV Tai nghe không dây - Số lượng dấu chấm thông báo tối đa Số lượng biểu tượng thông báo tối đa Ẩn XXX% cạnh biểu tượng pin Ẩn hậu tố (%) sau pin Ẩn biểu tượng Sạc Ẩn biểu tượng Pin Tuỳ chỉnh Pin - Chỉ số pin Wi-Fi Mạng di động Đổi vị trí Wi-Fi và mạng di động Tốc độ mạng Âm thanh cảnh báo - Dừng sử dụng biểu tượng HD - Cần có phiên bản hệ thống mới hơn và một số kiểu máy có thể chưa cập nhật - Bộ tách tốc độ internet - Đường kẻ dọc giữa thời gian và tốc độ mạng không hiển thị trên thiết bị có màn hình giọt nước Ẩn thanh trạng thái khi chụp ảnh màn hình Biểu tượng mạng di động Cho phép sửa đổi @@ -824,21 +762,9 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoKhi giá trị tốc độ mạng thấp hơn mức này, nó được coi là chậm và một số biểu tượng chỉ báo sẽ hiển thị các biểu tượng chỉ báo khác nhau Ẩn hậu tố Byte trên giây (*b/s) Biểu tượng chỉ báo - Tùy chỉnh đồng hồ - Định dạng đồng hồ - Hiển thị năm - Hiện tháng - Hiện ngày - Hiện thứ - Hiện giờ kép - Hiển thị SA CH - Hiện giây - Ẩn khoảng cách - Ngày giờ hàng đôi Căn chỉnh hàng đôi Ví dụ về định dạng đồng hồ Kích thước đồng hồ (0 là giá trị gốc) - Kích thước hàng đôi (0 là giá trị gốc) Chỉ hợp lệ khi hiển thị ở hai hàng Cố định màu Tắt hoạt ảnh chuyển tiếp đồng hồ trong trung tâm thông báo @@ -854,36 +780,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoĐịnh dạng đồng hồ trên thanh trạng thái Định dạng đồng hồ nhỏ trên thanh thông báo Sắp xếp đồng hồ trên thanh trạng thái - Về năng lượng - Về nhiệt độ - Cỡ chữ - Hiển thị nội dung - Ẩn số thập phân - Ẩn đơn vị - Hiện thị bên phải - Luôn hiển thị cưởng độ dòng điện - Năng lượng pin luôn hiện giá trị dương - Hiển thị 1 hàng - Đảo thứ tự - Chỉ hiển thị khi sạc - Thời gian làm mới thanh trạng thái - Sửa giới hạn nhiệt CPU - Nhập vào /sys/devices/virtual/thermal/thermal_zone* - Trung tâm - Làm tròn góc - Giới hạn hiển thị - Căn chỉnh theo chiều dọc - Màu sắc - Màu sắc khi pin đầy - Màu sắc khi pin yếu - Màu chế độ tiết kiệm pin - Màu khi sạc - Chiều cao - Lề ngang - Độ trong suốt - Tỏa sáng - Mức pin yếu - Chữ Bố cục Thông tin Gỡ lỗi @@ -904,11 +800,9 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoThêm khoảng trắng vào cuối lời bài hát Làm cho lời bài hát cuộn càng đầy đủ càng tốt Trung tâm điều khiển - Độ trong suốt nền thẻ bổ sung Thẻ thông báo phương tiện Bảng điều khiển Thông báo - Độ trong suốt nền thẻ bổ sung %1$s đang bật %1$s đang tắt Nút bật 5G nhanh @@ -931,21 +825,8 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoCột %d Danh sách Cột (màn hình ngang) - Thẻ Mi Smart Play - Thẻ Mi Smart Hub - Thẻ Nhà thông minh - Giá trị mờ của nền Tắt chế độ trong suốt Tắt cài đặt nền thông báo trong suốt - Thiết lập thông báo - Tối ưu hóa thông báo - Chức năng thử nghiệm, chỉ khả dụng cho Android 13 trở lên. Sau khi bật, thông báo mờ ở một số khu vực sẽ được tối ưu hóa\nCó thể gặp sự cố giao diện hệ thống trên một số thiết bị. - Làm mờ nền thông báo nổi - Không có thông báo thả xuống - Làm làm mờ các góc thông báo - Theme mặc định không cần chỉnh - Giá trị làm mờ nền - Độ trong suốt nền thanh thông báo kéo xuống Tối ưu hóa hiệu ứng trộn màu của bảng điều khiển phương tiện Thanh tiến trình Loại bỏ hạn chế trong việc áp dụng các hành động tùy chỉnh cho thẻ thông báo phương tiện @@ -961,6 +842,8 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoXóa nền màu hỗn hợp khỏi thẻ Bán kính mờ ảnh nền Độ mờ của lớp phủ nền + Phím phương tiện + Phím tua Thu gọn thông báo Giảm khoảng cách thông báo dọc Chuyển hướng cài đặt thông báo @@ -983,8 +866,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoẨn dấu phân cách giữa tên nhà mạng Hiện tên thiết bị Ẩn tên tất cả - Kiểu ô Bluetooth - Ô Bluetooth được di chuyển đến khu vực ô mạng Menu thông báo mở rộng Mở thông tin ứng dụng, buộc đóng ứng dụng và mở trong cửa sổ nổi từ menu thông báo (vuốt thông báo sang trái để mở) Trung tâm điều khiển kiểu mới @@ -1003,18 +884,16 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoCho phép hiển thị 10 tới 17 thông báo trở lên Tối ưu trộn màu nền của đèn thông báo Quay lại kiểu trộn màu thông báo bình thường + Hiện giá trị độ sáng + Hiện giá trị âm lượng + Nội dung + Phần trăm + Giá trị gốc Khác Thanh âm lượng gốc Menu tắt nguồn mặc định - MIUI sử dụng UI menu cũ, trong khi HyperOS sử dụng UI menu AOSP - Việc sửa đổi thanh âm lượng của Xiaomi không áp dụng cho thanh âm lượng gốc Mở khóa trình chỉnh sửa bảng ghi tạm AOSP - Sau khi mở khóa, nó sẽ bật lên cùng với trình chỉnh sửa MIUI/HyperOS. - Hiệu ứng sạc - Hiệu ứng khi sạc - Lựa chọn hiệu ứng sạc màn hình khóa Khác - Ngăn Bluetooth bị tắt tạm thời Ẩn nút Cửa sổ tiện lợi Ẩn nút cửa sổ tiện lợi ở giữa trên cùng trong HyperOS cho màn hình ngang của Pad Tắt nút Chia đôi màn hình @@ -1033,12 +912,16 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTùy chỉnh chủ đề Tùy chỉnh màu chủ đề thay vì kéo chúng từ hình nền Chọn màu chủ đề - Hẹn giờ mở rộng Chuyển đổi tab nhanh Thông báo Tắt danh sách cho phép thông báo Xóa các hạn chế làm mờ khỏi họa tiết nâng cao Mở khóa hiệu ứng làm mờ của họa tiết nâng cao, mặc định bị tắt đối với các chủ đề của bên thứ ba trong Plug-in Giao diện người dùng hệ thống. + Thanh âm lượng + Nhấn để mở rộng thanh âm lượng thứ hai + Khi tính năng này được bật, nút mở rộng sẽ bị tắt + Ẩn nút tắt tiếng và không làm phiền + Hẹn giờ mở rộng Làm mờ thanh âm lượng Di chuyển statusbar_gestures.dat vào thư mục MIUI Chỉ dành cho các mẫu Android12+ MTK, có thể có tải GPU cao @@ -1079,7 +962,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoMở khóa Xiaomi HyperAI Sau khi bật, tùy chọn Xiaomi HyperAI sẽ hiển thị trong Cài đặt. Việc hỗ trợ các tính năng AI của thiết bị sẽ do Xiaomi quyết định. Tính năng đặc biệt - Mở khóa Chụp một phần màn hình Trợ lý VoIP Hiển thị & Màn hình khóa Mở khoá Siêu phân giải @@ -1140,14 +1022,8 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTắt hộp thoại \"Bật cập nhật tự động\" Quyền - Clipboard - Ẩn mẹo nhanh Tự động tắt khi tự khởi động bị cấm - Đọc bảng ghi tạm bằng cách sử dụng hộp gợi ý thông báo - Ẩn hộp thoại và cho phép ứng dụng đọc bảng ghi tạm theo mặc định - Đọc clipboard - Truyền Dịch vụ kết nối Mở khóa Kết nối thiết bị Hỗ trợ bắt buộc cho việc truyền phát camera @@ -1156,7 +1032,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoGhi âm Tắt hình mờ AI - Màn hình Ambient Trình chỉnh sửa màn hình khóa và AOD Mở khóa Giới hạn thời gian Khởi động lại giao diện hệ thống để kích hoạt đầy đủ chức năng @@ -1211,8 +1086,7 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoDịch vụ đám mây Xiaomi Google Google & OneDrive - - Bảo mật MIUI + Thành phần bảo mật hệ thống Ngăn tự động tải lên danh sách ứng dụng đã cài đặt Tắt kiểm tra root @@ -1376,7 +1250,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoKích thước biểu tượng Gần đây Tốc độ của hoạt ảnh - Tắt làm mờ hình nền Mở khóa các ứng dụng được ghim Ẩn thanh trạng thái Ẩn cửa sổ ứng dụng nổi trong màn hình phản chiếu @@ -1487,13 +1360,19 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTối ưu hóa độ trễ khi mở ứng dụng Chỉnh sửa thư viện + Hướng dẫn sử dụng:\n- Vui lòng sử dụng v2 hook cho phiên bản 1.7.5.0.4 trở lên và vui lòng sử dụng v1 hook cho phiên bản thấp hơn 1.7.5.0.4 + Kiểu hook của trình chỉnh sửa thư viện Nền tảng + Người tạo Sáng tạo AI + Tùy chỉnh khung + Chức năng chung Mở khóa các tính năng tùy chỉnh của Disney Các tính năng được mở khóa bao gồm:\n- Khung tùy chỉnh – Khung tùy chỉnh của Disney (xung đột với các khung tùy chỉnh khác)\n- Làm mờ nền – Làm mờ Mickey\n- Hình dán – Hình dán Disney Mở khóa khung ảnh tùy chỉnh năm mới Tết Nguyên đán Để thêm vĩnh viễn khung ảnh tùy chỉnh Tết Nguyên đán, điều kiện tiên quyết là bạn cần có khung ảnh tùy chỉnh Leica hoặc khung ảnh tùy chỉnh Redmi. Mở khóa giới hạn cắt hình + Mở khóa tùy chỉnh khung Tùy chỉnh loại khung hình Mở khóa bộ lọc Leica Chỉ hỗ trợ một số phiên bản @@ -1575,8 +1454,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTắt quảng cáo trong trung tâm trò chơi Điều này có thể khiến các chức năng khác trở nên bất thường - Bảo mật - Trung tâm bảo mật dạng máy tính bảng Công cụ bảo mật Quản lý ứng dụng Pin và hiệu suất @@ -1588,14 +1465,11 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoTắt pop-up Dolby Hiển thị nhiệt độ pin Hiển thị chi tiết tình trạng pin - Bảo vệ khay nhớ tạm - Độ chính xác định vị thấp hơn Dịch vụ Google Công tắc Taplus Thay thế biểu tượng ô rất tối Điều khiển độ sáng đèn pin Cho phép bạn điều khiển độ sáng của đèn pin bằng cách kéo thanh trượt độ sáng - Quản lý ứng dụng truy cập số điện thoại Đơn giản hóa trang chủ của Trung tâm bảo mật Xóa thẻ đề xuất tính năng Mã PIN khoá ứng dụng ngẫu nhiên @@ -1766,8 +1640,12 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoPhương thức nhập Sogou Xóa giới hạn số lượng bảng ghi tạm Thêm nút xóa bảng ghi tạm + + Dịch vụ kích hoạt SIM Xiaomi + Tắt kích hoạt SIM 2 khi đang chuyển vùng + Chỉ hỗ trợ Trung Quốc đại lục + Sử dụng phương pháp lọc chuyển vùng tích cực hơn - Máy quét Máy quét AI Mở khóa Scan danh thiếp Mở khóa Phiên dịch @@ -1777,7 +1655,6 @@ Chức năng này là chức năng thử nghiệm có độ ổn định caoMở khoá Scan tạo file PowerPoint PPT Mở khóa Scan chữ - Mi AI Siêu AI Tắt hình mờ trò chuyện @@ -1930,4 +1807,8 @@ Hãy đảm bảo rằng các ứng dụng hệ thống có siêu dữ liệu is Tắt nhật ký đầu ra Tắt đề xuất Bật đề xuất + Ứng dụng đang chạy bất thường + %s lần crash + Nhấp để xem chi tiết + Xem diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 11f94d1d3..547ecd57a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -18,7 +18,7 @@ --> - Make HyperOS/MIUI Great Again! + Make HyperOS Great Again! 用于xxx 用于提供经纬度等服务 @@ -275,10 +275,6 @@ 功能 推荐 编辑 - 录像 - 拍照 - 人像 - 专业 启用 禁用 启用自定义 @@ -404,9 +400,6 @@ 存储占用 安装时间 - 三排大磁贴 - 一大和二小磁贴 - 官方自带模糊 自定义背景模糊 @@ -478,11 +471,9 @@ 默认调整音量 音量即时调整 - 音量独立控制 移除高音量安全限制 对全部情况启用 仅连接耳机时启用 - 通知音量滑块 媒体音量阶数 可能会导致音量条的滚动卡顿或蓝牙音量异常 音量级数倍增 @@ -615,52 +606,7 @@ 自定义机型水印 厂商信息 机型信息 - 解锁 AI 水印 - 解锁长曝光 - 解锁魔法分身 - 解锁化妆镜 - 解锁文档 - 解锁身份证拍摄 - 解锁前后双景 - 解锁延时摄影 - 解锁短视频 - 解锁超级月亮 - 解锁全景 - 解锁超分辨率模式 - 解锁人像 - 解锁慢动作 - 解锁 Video-sky - 解锁 Vlog - 解锁 Vlog Pro - 解锁电影镜头 - 解锁长曝光延时 - 解锁滑动变焦 - 解锁平行梦境 - 解锁慢快门 - 解锁时光倒流 - 解锁时间静止 解锁手势拍照 - 解锁艳丽模式 - 解锁妆容 - 仅在使用前置摄像头时生效 - 解锁 60FPS - 部分画质下不可用,部分设备硬件不支持 - 解锁 120FPS - 仅 4K 模式支持, 部分设备硬件不支持 - 解锁音源变焦 - 解锁 HDR - 解锁 AI 模式 - 解锁新版美颜 - 仅在使用前置摄像头时生效 - 解锁大师镜头 - 部分设备无法正常工作 - 解锁 RAW - 解锁 LOG - 解锁 HEIF 格式 - 解锁万物追焦 - 解锁运动抓拍 - 解锁祛痣 - 解锁男性妆容适配 启用实验室选项 解锁人眼追焦 使用相机时使屏幕亮度最大 @@ -729,12 +675,10 @@ 隐藏相机 隐藏负一屏 当前电流 - 时钟显示秒数 锁屏按钮背景模糊 启用后相机和负一屏按钮的背景带有模糊,可能存在功耗偏高的情况,仅支持默认主题 背景半径 背景颜色 - 时钟强制使用系统字体 双击锁屏 双击空白位置锁屏 解除通知限制 @@ -773,13 +717,8 @@ 图标 网速指示器 时钟指示器 - 硬件指示器 灵动舞台 焦点歌词 - 布局 - 兼容模式 - 对所有异形屏强制开启完整屏布局 - 布局模式 双击状态栏锁屏 双排移动网络图标 @@ -812,8 +751,6 @@ 互联互通 网络连接 敏感信息 - 图标左侧显示 - 图标右侧显示 WIFI 图标 辅助 WIFI 图标 WIFI 标准 @@ -846,23 +783,17 @@ 隐藏麦克风静音图标 隐藏免提图标 隐藏录音图标 - 通知省略点数最大数量 通知图标最大数量 隐藏电量百分比 隐藏电量百分比符号 隐藏充电指示器 隐藏电池图标 电池自定义 - 电量指示器 WIFI 移动网络 交换 WIFI 与移动网络 网速 声音情景 - 强制使用新 HD 图标 - 仅支持部分系统版本 - 网速分隔符 - 于居中摄像头的设备上不显示时间和网速间的竖线 截屏时隐藏状态栏 移动网络类型图标 汽车 @@ -890,21 +821,9 @@ 网速隐藏 *b/s 单位 指示器图标 - 自定义时钟模式 - 时钟格式 - 显示年份 - 显示月份 - 显示日期 - 显示星期 - 显示时辰 - 显示时段 - 显示秒数 - 隐藏间隔 - 双排显示 双排对齐方式 时钟格式示例 时钟大小 - 双排时钟大小 仅在双排显示下生效 禁用通知中心下滑时钟过渡动画 不同步状态栏时钟设置 @@ -922,38 +841,6 @@ 通知中心迷你时钟格式 状态栏时钟排列 - 功耗相关 - 温度相关 - 字体大小 - 显示内容 - 隐藏小数位 - 隐藏单位 - 右侧显示 - 电流总显示正值 - 功率总显示正值 - 单排显示 - 反序 - 仅在充电时显示 - 状态更新间隔 - 更改 CPU 温度获取源 - 输入 /sys/devices/virtual/thermal/ 文件夹下 thermal_zone* 文件夹后的数字以指定源 - - 居中 - 圆角 - 限制可见性 - 垂直对齐 - 颜色 - 满电量颜色 - 低电量颜色 - 省电模式颜色 - 充电颜色 - 高度 - 水平边距 - 透明度 - 发光 - 低电量水平 - 测试 - 布局 信息 调试 @@ -976,11 +863,9 @@ 让滚动歌词尽可能滚动完整 通知与控制中心 - 卡片 媒体通知卡片 磁贴 通知中心 - 卡片背景透明度 %1$s已开启 %1$s已关闭 5G 网络开关 @@ -999,21 +884,8 @@ 列数 %d 列 列数(横屏) - 小米妙播 - 小米妙享 - 智能生活 - 面板详情背景透明度 禁用透明模式 禁止设置通知背景为非模糊或透明样式 - 通知模糊设置 - 通知优化 - 实验性功能,仅供 Android 13 及以上机型使用,启用后将对部分区域的通知模糊进行优化\n可能会存在部分机型系统界面崩溃的问题 - 通知模糊程度 - 不含下拉通知 - 通知模糊区域圆角 - 默认主题无需调节 - 通知背景透明度 - 下拉通知背景透明度 媒体进度条样式 波浪 圆滑 @@ -1057,8 +929,6 @@ 隐藏分隔线 隐藏全部名称 显示设备名称 - 蓝牙磁贴样式 - 蓝牙磁贴移至网络磁贴区域 扩展通知菜单 从通知菜单打开应用信息、强制关闭应用和浮窗打开 解除通知背景模糊限制 @@ -1087,15 +957,10 @@ 其他 原生音量条 原生关机菜单 - MIUI 为旧版菜单,HyperOS 为原生菜单 - 针对 MIUI/HyperOS 音量条的修改无法作用于原生音量条 + 针对 HyperOS 音量条的修改无法作用于原生音量条 解锁原生剪切板编辑器 - 实验性功能,会导致 MIUI/HyperOS 的编辑器一并弹出 - 充电动画 - 充电动画样式 - 选择锁屏充电动画样式 + 实验性功能,会导致 HyperOS 的编辑器一并弹出 其他 - 禁用蓝牙临时关闭 隐藏快捷窗口按钮 禁用快捷窗口按钮 禁用无极缩放手势 @@ -1166,7 +1031,6 @@ 开启后在设置中展示小米澎湃 AI 入口\n设备 AI 功能支持由小米决定 特色功能 - 解锁区域截屏 解锁网络通话助手 显示与锁屏 @@ -1223,14 +1087,8 @@ 移除 “开启自动更新” 弹窗 权限管理服务 - 剪切板 - 隐藏 Toast 提示 禁止自动关闭自启动 - 使用 Toast 提示读取剪贴板 - 隐藏对话框并允许应用默认读取剪切板 - 读取了剪贴板 - 投屏 互联互通服务 解锁小米妙享 强制支持摄像头流转 @@ -1239,7 +1097,6 @@ 录音机 禁用水印 - 万象息屏 息屏与锁屏编辑 解锁息屏显示时长限制 重启系统界面以完整开启功能 @@ -1291,7 +1148,6 @@ Google Google 与 OneDrive - MIUI 安全组件 系统安全组件 阻止自动上传已安装应用列表 禁用环境检查 @@ -1460,7 +1316,6 @@ 最近任务 动画速度 - 取消壁纸压暗 解锁固定应用 隐藏状态栏 隐藏投送应用浮窗 @@ -1673,8 +1528,6 @@ 禁用游戏中心广告 可能导致其他功能出现异常 - 手机管家 - 平板管家 安全服务 应用管理 省电与电池 @@ -1686,14 +1539,11 @@ 关闭杜比弹窗 显示电池温度 显示具体电池健康度 - 剪贴板隐私保护 - 模糊定位 GMS 开关 传送门开关 极暗磁贴图标替换 手电筒亮度控制 开启手电筒时劫持亮度条,拖动亮度条即可控制手电筒亮度 - 管理应用获取手机号并一键登录 精简手机管家首页 移除以下卡片:\n - 功能推荐\n - 大家都在用 应用锁乱序 PIN @@ -1858,7 +1708,6 @@ 解除剪贴板数量限制 添加清空剪贴板按钮 - 小爱视觉 AI 扫描 解锁扫名片 解锁翻译 @@ -1868,7 +1717,6 @@ 解锁提取 PPT 解锁扫文件 - 小爱同学 超级小爱 禁用对话界面水印 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 2bcce0668..06ed40516 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -19,7 +19,7 @@ --> - 讓 HyperOS/MIUI 再次偉大! + 讓 HyperOS 再次偉大! 在裝置的內部儲存空間新增和刪除檔案 用於提供緯度和經度等服務 喺使用過程中,為咗為您提供更多功能,我哋可能會向您申請 Root/Su 權限。您可隨時前往權限管理調整所有權限嘅授權情況,Root/Su 權限請前往您嘅 Root/Su 管理器進行管理。 @@ -202,10 +202,6 @@ 功能 推薦 編輯 - 錄影 - 拍照 - 人像 - 專業 啟用 停用 啟用自訂 @@ -309,8 +305,6 @@ 使用頻率 存儲佔用 安裝時間 - 三個大磁貼 - 大尺寸磁貼與兩個小磁貼 官方自備模糊 自訂背景模糊 關閉 @@ -364,11 +358,9 @@ 僅支援鏈接 預設調整音量 音量即時調整 - 音量獨立控制 移除高音量安全限制 對全部情況啟用 僅連接耳機時啟用 - 通知音量滑動條 媒體音量階數 可能會導致音量條的滾動卡頓或藍牙音量異常 音量級數倍增 @@ -483,52 +475,7 @@ 自訂設備水印 廠商信息 機型信息 - 解鎖 AI 浮水印 - 解鎖長曝光 - 解鎖魔法分身 - 解鎖化妝鏡 - 解鎖文件 - 解鎖身份證拍攝 - 解鎖前後雙景 - 解鎖延時攝影 - 解鎖短視頻 - 解鎖超級月亮 - 解鎖全景 - 解鎖超解析度模式 - 解鎖人像 - 解鎖慢動作 - 解鎖 Video-sky - 解鎖 VLOG - 解鎖 VLOG Pro - 解鎖電影鏡頭 - 解鎖長曝光延時 - 解鎖滑動變焦 - 解鎖平行夢境 - 解鎖慢快門 - 解鎖時光倒流 - 解鎖時間靜止 解鎖手勢拍照 - 解鎖艷麗模式 - 解鎖妝容 - 僅在使用前置鏡頭時生效 - 解鎖 60FPS - 部分畫質下唔可用,部分設備硬件唔支持 - 解鎖 120FPS - 僅 4K 模式支持, 部分設備硬件唔支持 - 解鎖音源變焦 - 解鎖 HDR - 解鎖 AI 模式 - 解鎖新版美顏 - 僅在使用前置鏡頭時生效 - 解鎖大師鏡頭 - 部分設備無法正常工作 - 解鎖 RAW - 解鎖 LOG - 解鎖 HEIF 格式 - 解鎖萬物追焦 - 解鎖運動抓拍 - 解鎖除痣 - 解鎖男性妝容適配 啟用實驗室選項 解鎖人眼追焦 使用相機時使屏幕亮度最大 @@ -584,9 +531,7 @@ 禁用相機 禁用資訊助理 當前 - 時鐘顯示秒數 相機同負一屏按鈕背景模糊 - 時鐘強制使用系統字體 雙擊鎖屏 雙擊空白處鎖定螢幕 解除通知限制 @@ -620,12 +565,7 @@ 圖標 網速指示器 時鐘指示器 - 硬件指示器 靈動舞台 - 佈局 - 相容模式 - 對所有異形螢幕強制開啟完整螢幕版面配置 - 佈局模式 雙擊狀態欄鎖屏 雙排蜂窩移動網絡圖示 圖示主題 @@ -654,8 +594,6 @@ 裝置 網絡連接 私隱資訊 - 圖標左側顯示 - 圖標右側顯示 Wi-Fi 輔助 WIFI 圖標 Wi-Fi 標準 @@ -698,23 +636,17 @@ 小愛音箱組合立體聲 電視 無線耳機 - 通知點數最大數量 通知圖示最大數量 隱藏電量百分比 隱藏電量百分比符號 隱藏充電指示器 隱藏電池圖示 電池自訂 - 電量指示器 Wi-Fi 移動網絡 交換 WIFI 同移動網絡 網絡速度 聲音情境 - 強制使用新 HD 圖示 - 僅支援部分系统版本 - 網速分隔符號 - 於居中攝像頭嘅設備上唔顯示時間同網速間嘅豎線 截圖時隱藏狀態欄 蜂窩移動網絡類型圖示 啟用修改 @@ -730,21 +662,9 @@ 網速值低於該水平時被認為慢,部分指示器圖示會有所不同 網速隱藏 *b/s 單位 指示器圖示 - 自訂時鐘模式 - 時鐘格式 - 顯示年份 - 顯示月份 - 顯示日期 - 顯示星期 - 顯示時辰 - 顯示時段 - 顯示秒數 - 隱藏間隔 - 雙排顯示 雙排對齊方式 時鐘格式範例 時鐘大小 - 雙排時鐘大小 僅在雙排顯示下生效 修復時鐘反色時的顏色異常 禁用通知中心下滑時鐘過渡動畫 @@ -760,35 +680,6 @@ 狀態欄時鐘格式 通知中心迷你時鐘格式 狀態欄時鐘排列 - 功耗相關 - 溫度相關 - 字體大小 - 顯示內容 - 隱藏小數位 - 隱藏單位 - 右側顯示 - 電流總顯示正值 - 單排顯示 - 反序 - 僅在充電時顯示 - 狀態更新間隔 - 更改 CPU 溫度獲取源 - 輸入 /sys/devices/virtual/thermal/ 資料夾下 thermal_zone* 資料夾後的數位以指定源 - 置中 - 圓角 - 限制可見性 - 垂直對齊 - 顏色 - 滿電量顏色 - 低電量顏色 - 省電模式顏色 - 充電顏色 - 高度 - 水平邊距 - 透明度 - 發光 - 低電量水平 - 測試 佈局 訊息 除錯 @@ -798,11 +689,9 @@ 測試 這是一條長文本,將以滾動形式輸出 通知與控制中心 - 卡片 媒體通知卡片 磁貼 通知中心 - 卡片背景透明度 %1$s已開啟 %1$s已關閉 5G 網絡開關 @@ -821,21 +710,8 @@ 列數 %d 列 列(橫向) - 小米妙播 - 小米妙享 - 智慧生活 - 面板詳情背景透明度 禁用透明模式 禁止將通知背景設為透明 - 通知模糊設置 - 通知優化 - 實驗性功能,僅供 Android 13 及以上機型使用,啟用後將對部分區域嘅通知模糊進行優化\n可能會存在部分機型系統界面崩潰嘅問題 - 通知模糊程度 - 不含下拉通知 - 通知模糊區域圓角 - 默認主題無需調節 - 通知背景透明度 - 下拉通知背景透明度 優化音樂面板背景混色效果 媒體進度條樣式 解除自定義動作應用限制 @@ -871,8 +747,6 @@ 僅隱藏分隔線 顯示設備名稱 隱藏全部名稱 - 藍牙磁貼樣式 - 藍牙磁貼移至網絡磁貼區域 擴展通知選單 從通知選單中打開應用程式信息、強制關閉應用程式和視窗打開 新控制中心 @@ -890,15 +764,8 @@ 其他 原生音量條 原生關機菜單 - MIUI 為舊版菜單,HyperOS 為原生菜單 - 針對 MIUI/HyperOS 音量條嘅修改無法作用於原生音量條 解鎖原生剪貼簿編輯器 - 實驗性功能,會導致 MIUI/HyperOS 嘅編輯器一並彈出 - 充電動畫 - 充電動畫樣式 - 選擇鎖屏充電動畫樣式 其他 - 禁用藍牙臨時關閉 隱藏快捷窗口按鈕 隱藏常駐嘅三個小點,包括小窗頂部同 HyperOS for Pad 橫屏頂部中間嘅按鈕 (唔影響功能使用) 禁用快捷窗口按鈕 @@ -917,10 +784,10 @@ 自訂主題顏色 自訂主題顏色,而不是從桌布中提取顏色 選擇主題顏色 - 擴展計時器 快捷開關標籤 通知 禁用通知白名單 + 擴展計時器 音量條模糊 將 statusbar_gestures.dat 移至 MIUI 目錄 僅供 Android 12 及以上嘅 MTK 機型使用,可能存在 GPU 負載較高嘅情況 @@ -958,7 +825,6 @@ 新版 NFC 頁面 此功能會導致唔支持嘅機型默認付款應用無法選中小米錢包 特色功能 - 解鎖區域截圖 網絡通話助手 顯示與鎖屏 解鎖超解析度增強 @@ -1014,21 +880,14 @@ 移除 “開啟自動更新” 彈窗 權限管理服務 - 剪貼簿 - 隱藏 Toast 提示 禁止自動關閉自啟動 - 使用 Toast 提示讀取剪貼板 - 隱藏對話框並允許應用程式默認讀取剪貼簿 - 讀取了剪貼簿 - 投影 互聯互通服務 解鎖小米妙享 強制支援攝影機串流媒體 阻止建立 hpplay 資料夾 - 萬象息屏 息屏與鎖屏編輯 解鎖息屏顯示時長限制 重啟系統界面以完整開啟功能 @@ -1080,8 +939,7 @@ 小米雲服務 Google Google & OneDrive - - MIUI 安全性群組件 + 系統安全組件 阻止自動上傳已安裝的應用程式列表 @@ -1234,7 +1092,6 @@ 隱藏部分應用喺卸載對話框嘅 \"舉報該應用\" 入口 最近任務 動畫速度 - 取消桌布壓暗 解鎖應用程式固定功能 隱藏狀態欄 隱藏投送應用浮窗 @@ -1423,8 +1280,6 @@ 系統服務組件 禁用遊戲中心廣告 - 手機管家 - 平板管家 安全服務 應用管理 省電與電池 @@ -1435,14 +1290,11 @@ 關閉杜比彈窗 顯示電池溫度 顯示詳細的電池健康狀況 - 剪貼簿隱私保護 - 模糊定位 GMS 服務 傳送門開關 極暗磁貼優化 手電筒亮度控制 開啟手電筒時劫持亮度條,拖動亮度條即可控制手電筒亮度 - 管理應用獲取手機號並一鍵登錄 應用鎖亂序 PIN 禁止妙享省電 禁止自啟模糊預覽圖 @@ -1594,8 +1446,8 @@ 搜狗輸入法 解除剪貼簿數量限制 新增清空剪貼簿按鈕 + - 小愛視覺 解鎖掃名片 解鎖翻譯 解鎖識文字 @@ -1604,7 +1456,6 @@ 解鎖提取 PPT 解鎖掃文件 - 小愛同學 停用聊天浮水印 語音喚醒 diff --git a/app/src/main/res/values-zh-rME/strings.xml b/app/src/main/res/values-zh-rME/strings.xml index ada07039f..a2fbd3eea 100644 --- a/app/src/main/res/values-zh-rME/strings.xml +++ b/app/src/main/res/values-zh-rME/strings.xml @@ -197,10 +197,6 @@ 函数 主人,看看西米露酱给您推荐的... 编辑 - - 拍照 - 人像 - 专业 打开 关掉 自己搞 @@ -308,8 +304,6 @@ 一段时间几次? 学习资料已占用 安装时间 - 三个 E 磁块 - 一个 E 和两个 A 磁块 小米自己搞的模糊 自定义背景模糊度 一定要关掉 @@ -365,11 +359,9 @@ 只有广告链接 默认调节音响 即刻音响调节 - 独立体积控制 减掉高体积安全限制 都要关掉 仅手套耳机大水时 - 通知体积滚动条 媒体体积关卡 它可能会导致系统的音量栏冻结或蓝牙音量丸啦! 音量电平乘法器 @@ -498,52 +490,7 @@ 水印?我全都要! 制造商的名片 设备的名片 - 凭什么不让我用AI水印! - 我就要用长曝光! - 解锁魔法分身 - 解锁化妆镜 - 解锁文档 - 解锁身份证拍摄 - 解锁前后双景 - 解锁延时摄影 - 解锁短视频 - 解锁P图月亮 - 解锁全景 - 解锁超分辨率模式 - 解锁人像 - 解锁慢~~~动~~~作~~~ - 解锁霍格沃兹天空 - 解锁 Vlog - 解锁 Vlog Pro - 解锁电影镜头 - 解锁长曝光延时 - 解锁滑动变焦 - 解锁平行梦境 - 解锁慢快门 - 你要穿越? - 不是哥们,时间冻结? 上锁脚掌慢门 - 解锁颜色增强版 - 装扮全解锁 - 仅在拍摄哥布林时可用 - 我要高帧数! - 某些Bug可能不适用于你的设备,请先确保你的瘦鸡可以支持这个Bug。 - 我要更高的帧数! - 仅在4K画质下可用,请先确保你的瘦鸡可以支持拉姆搞基的花枝。 - 解锁音量大小 - 解锁HDR - 解锁人工智障反向优化图像 - 使哥布林变成帅哥 - 仅在拍摄哥布林时可用 - 打开Damn尸画像 - 一些瘦鸡中可能没法工作 - 解锁生肉 - 解锁木头 - 解锁HEIF格式 - 解锁运动跟踪 - 解锁每一帧都让你丑的魔法🤓👆 - 解锁痔疮消失术 - 解锁男性妆容适配 启用实验室选项 解锁眼动追踪 使用相机时强制瞎眼(啊,我的眼睛!) @@ -607,11 +554,9 @@ 防止版本T0污蔑 隐藏并不聪明的屏幕 当前电流 - 时钟秒数? 都给你砍了(bushi) 糊上锁屏按钮 背景圆角 后背颜色 - 所以时钟也用系统字体的话真的会很好看吗? 屏幕怎么亮了?双击试试 霜鸡空白位置锁屏 别告诉我你开了免打扰😭 @@ -624,8 +569,6 @@ 粗 细 状态不实时显示的栏 你还管上图标了? - 躺外面 - 躺外面模式 双击睡大觉 你都把数据标隐藏了,你还想打开我吗❤️ @@ -650,14 +593,11 @@ 卸载sim 2 图标 Wi-Fe 看看天翼 3G 有多快? - ❤️叫声情景❤️ - 没电了 长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长 %1$s 已打开 %1$s 已关掉 启用5G开关,好让运营商多赚点钱。 人家的里面不好看吗... - X 光半径 加了 没加 还想... 看更多吗❤️ @@ -672,7 +612,6 @@ 神秘咒语 WiFe 详细 解锁咕噜咕噜条目 - 解锁区域视监👁️‍🗨️ 让动作片更流畅 通知设置... 圆圆的... 还想要... 解锁 Moster 模式 @@ -696,7 +635,6 @@ - 烧屏小功能 你想要解锁?不是你配吗,要解锁? @@ -710,7 +648,7 @@ Apiano 店 AI高清写真 - + 能... 能不能... 再快一点... 我的后台卡片呢 @@ -779,9 +717,9 @@ 道路千万条,安全第一条,玩机不规范,亲人两行泪(拨号盘输入\"*#*#MODEMTEST#*#*\"进入MTB界面) + - 人工智障 不自由,毋宁死 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0a7aed6e1..cba6c361b 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -21,7 +21,7 @@ 發現新版本 © 2023-2025 Sevtinge & HyperCeiler 的建設者. - 讓 HyperOS/MIUI 再次偉大! + 讓 HyperOS 再次偉大! 在裝置的內部儲存空間新增和刪除檔案 用於提供緯度和經度等服務 在使用過程中,為了提供您更多功能,我們可能會向您申請 Root/Su 權限。您可以隨時到權限管理調整所有權限的授權狀態,並請到您的 Root/Su 管理員管理 Root/Su 權限。 @@ -254,10 +254,6 @@ 功能 推薦 編輯 - 錄影 - 拍照 - 人像 - 專業 啟用 停用 啟用自訂 @@ -365,8 +361,6 @@ 使用頻率 儲存空間佔用 安裝時間 - 三個大磁貼 - 大尺寸磁貼與兩個小磁貼 官方預設糢糊效果 自訂背景糢糊 關閉 @@ -424,11 +418,9 @@ 僅支援連結 預設調整音量 音量即時調整 - 音量獨立控制 移除高音量安全限制 對所有情境下啟用 僅當連接耳機時啟用 - 通知音量滑動條 媒體音量階數 可能會導致音量條的滾動卡頓或藍牙音量異常 音量級數倍增 @@ -557,52 +549,7 @@ 自訂機型浮水印 廠商資訊 機型資訊 - 解鎖 AI 浮水印 - 解鎖長曝光 - 解鎖魔法分身 - 解鎖化妝鏡 - 解鎖文件 - 解鎖身份證拍攝 - 解鎖前後雙景 - 解鎖延時攝影 - 解鎖短影片 - 解鎖超級月亮 - 解鎖全景 - 解鎖超解析度模式 - 解鎖人像 - 解鎖慢動作 - 解鎖 Video-sky - 解鎖 VLOG - 解鎖 VLOG Pro - 解鎖電影鏡頭 - 解鎖長曝光延時 - 解鎖滑動變焦 - 解鎖平行夢境 - 解鎖慢快門 - 解鎖時光倒流 - 解鎖時間靜止 解鎖手勢拍照 - 解鎖鮮豔模式 - 解鎖妝容 - 僅在使用前置鏡頭時生效 - 解鎖 60FPS - 部分畫質下不可用,部分裝置硬體不支援 - 解鎖 120FPS - 僅 4K 模式支援,部分裝置硬體不支援 - 解鎖音源變焦 - 解鎖 HDR - 解鎖 AI 模式 - 解鎖新版美肌 - 僅在使用前置鏡頭時生效 - 解鎖大師鏡頭 - 部分裝置無法正常工作 - 解鎖 RAW - 解鎖 LOG - 解鎖 HEIF 格式 - 解鎖萬物追焦 - 解鎖運動抓拍 - 解鎖除痣 - 解鎖男性妝容適配 啟用實驗室選項 解鎖人眼追焦 使用相機時強制調整至最大亮度 @@ -669,12 +616,10 @@ 停用相機 停用資訊助理 當前 - 時鐘顯示秒數 相機和智慧助理按鈕背景模糊 啟用後,鎖定螢幕上的相機和負一螢幕按鈕背景會變得模糊,可能會導致功耗較高。\n僅支援預設主題。 背景模糊半徑 背景顏色 - 時鐘強制使用系統字體 雙擊鎖定螢幕 雙擊空白處鎖定螢幕 解除通知限制 @@ -711,13 +656,8 @@ 圖示 網速指示器 時鐘指示器 - 硬體指示器 靈動提示 焦點歌詞 - 佈局 - 相容模式 - 對所有異形螢幕強制開啟完整螢幕版面配置 - 佈局模式 雙擊狀態欄鎖定螢幕 雙排蜂窩移動網路圖示 圖示主題 @@ -746,8 +686,6 @@ 裝置 網路連接 隱私資訊 - 圖示左側顯示 - 圖示右側顯示 Wi-Fi 從 Wi-Fi Wi-Fi 標準 @@ -790,23 +728,17 @@ 小愛音箱組合立體聲 電視 無線耳機 - 通知點數最大數量 通知圖示最大數量 隱藏電量百分比 隱藏電量百分比符號 隱藏充電指示器 隱藏電池圖示 電池自訂 - 電量指示器 Wi-Fi 行動網路 交換 Wi-Fi 與行動網路 網路速度 聲音情境 - 強制使用新 HD 圖示 - 僅支援部分系統版本 - 網速分隔符號 - 於水滴螢幕的裝置上不顯示時間和網速間的分隔號 截圖時隱藏狀態欄 蜂窩移動網路類型圖示 啟用修改 @@ -822,21 +754,9 @@ 網速值低於該水準時被認為慢,部分指示器圖示會有所不同 網速隱藏 *b/s 單位 指示器圖示 - 自訂時鐘模式 - 時鐘格式 - 顯示年份 - 顯示月份 - 顯示日期 - 顯示星期 - 顯示時辰 - 顯示時段 - 顯示秒數 - 隱藏間隔 - 雙排顯示 雙排對齊方式 時鐘格式範例 時鐘大小 - 雙排時鐘大小 僅在雙排顯示下生效 修復時鐘反色時的顏色異常 停用通知中心下滑時鐘過渡動畫 @@ -852,36 +772,6 @@ 狀態欄時鐘格式 通知欄迷你時鐘格式 狀態欄時鐘排列 - 功耗相關 - 溫度相關 - 字體大小 - 顯示內容 - 隱藏小數位 - 隱藏單位 - 右側顯示 - 電流總顯示正值 - 功率始終顯示正值 - 單排顯示 - 反序 - 僅在充電時顯示 - 狀態更新間隔 - 更改 CPU 溫度獲取源 - 輸入 /sys/devices/virtual/thermal/ 資料夾下 thermal_zone* 資料夾後的數位以指定源 - 置中 - 圓角 - 限制可見性 - 垂直對齊 - 顏色 - 滿電量顏色 - 低電量顏色 - 省電模式顏色 - 充電顏色 - 高度 - 水平邊距 - 透明度 - 發光 - 低電量水平 - 測試 佈局 訊息 除錯 @@ -902,11 +792,9 @@ 在歌詞末尾加入空格 讓滾動歌詞盡可能完整 通知與控制中心 - 卡片 媒體通知卡片 磁貼 通知中心 - 卡片背景透明度 %1$s已開啟 %1$s已關閉 5G 網路開關 @@ -929,21 +817,8 @@ 列數 %d 列 列(橫向) - 妙播入口 - 小米妙享 - 智慧生活 - 面板詳情背景透明度 停用透明模式 禁止將通知背景設為透明 - 通知設定 - 通知最佳化 - 實驗性功能,僅向 Android 13 及以上設備使用,啟用後將對部分區域的通知模糊進行最佳化\n可能會存在部分設備系統介面程式崩潰的問題 - 通知模糊程度 - 不含下拉通知 - 通知模糊區域圓角 - 預設主題無需調節 - 通知背景透明度 - 下拉通知背景透明度 最佳化媒體控制面板混色效果 進度條 取消媒體通知卡應用程式自訂操作的限制 @@ -981,8 +856,6 @@ 只隱藏分隔線 顯示裝置名稱 隱藏全部名稱 - 藍牙磁貼樣式 - 調整藍牙磁貼位置至網路磁貼旁 擴展通知選單 從通知選單打開應用程式資訊、強制關閉應用程式和小窗打開 新控制中心 @@ -1004,15 +877,8 @@ 其他 原生音量條 原生電源選單 - MIUI 使用舊版選單 UI,而 HyperOS 使用原生選單 UI - 小米音量條修改不適用於原生音量條 解鎖原生剪貼簿編輯器 - 解鎖後會與 MIUI/HyperOS 編輯器一起彈出 - 充電動畫 - 充電動畫樣式 - 選擇鎖定螢幕充電動畫樣式 其他 - 停用藍牙臨時關閉 隱藏快捷視窗按鈕 隱藏常駐的三個小點,包括小窗應用程式頂部和 HyperOS for Pad 橫向螢幕下頂部中間的快速視窗按鈕(不影響功能使用) 隱藏快捷視窗按鈕 @@ -1031,12 +897,12 @@ 自訂主題顏色 自訂主題顏色,而不是從桌布中提取顏色 選擇主題顏色 - 擴展計時器 快捷開關標籤 通知 停用通知白名單 移除高級材質的模糊限制 解除系統介面模組對第三方主題預設停用高級材質模糊效果 + 擴展計時器 音量條模糊 將 statusbar_gestures.dat 移至 MIUI 目錄 僅供 Android 12 及以上 MTK 裝置使用,可能存在 GPU 負載較高的情形 @@ -1077,7 +943,6 @@ 解鎖小米澎湃 AI 開啟後,設定中會顯示小米澎湃 AI 選項。 對裝置 AI 功能的支援由小米決定。 特色功能 - 解鎖區域截圖 網路通話助手 顯示與鎖定螢幕 解鎖超解析度增強 @@ -1134,14 +999,8 @@ 移除「開啟自動更新」對話框 權限管理服務 - 剪貼簿 - 隱藏 Toast 提示 禁止自動關閉自啟動 - 使用 Toast 提示讀取剪貼簿 - 隱藏對話框並允許應用程式預設讀取剪貼簿 - 讀取了剪貼簿 - 投影 互聯互通服務 解鎖小米妙享 強制支援裝置流轉 @@ -1150,7 +1009,6 @@ 錄音機 停用 AI 浮水印 - 萬象待機 待機與鎖定螢幕編輯 解鎖待機顯示時長限制 重啟系統介面即可完全啟用此功能 @@ -1205,8 +1063,7 @@ 小米雲服務 Google Google & OneDrive - - MIUI 安全性群組件 + 系統安全性群組件 阻止自動上傳已安裝的應用程式列表 停用環境檢查 @@ -1370,7 +1227,6 @@ 圖標大小 最近任務 動畫速度 - 取消桌布壓暗 解鎖應用程式固定功能 隱藏狀態欄 隱藏螢幕鏡像應用程式浮動窗口 @@ -1569,8 +1425,6 @@ 停用遊戲中心廣告 這可能會導致其他功能異常 - 手機管家 - 平板管家 安全服務 應用程式管理 省電與電池 @@ -1582,14 +1436,11 @@ 關閉杜比彈出視窗 顯示電池溫度 顯示詳細的電池健康狀況 - 剪貼簿隱私保護 - 模糊定位 GMS 服務 傳送門開關 極暗磁貼優化 手電筒亮度控制 啟用手電筒時透過拖動亮度條來控制手電筒亮度 - 管理應用程式取得手機號碼並一鍵登入 精簡手機管家首頁 移除功能推薦卡片 應用程式鎖亂序 PIN @@ -1753,8 +1604,8 @@ 搜狗輸入法 解除剪貼簿數量限制 新增清空剪貼簿按鈕 + - 小愛視覺 小愛視覺 解鎖掃名片 解鎖翻譯 @@ -1764,7 +1615,6 @@ 解鎖提取 PPT 解鎖掃文件 - 小愛同學 超級小愛 停用聊天浮水印 diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index c6df90a95..3c5af6bbe 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -93,30 +93,6 @@ @string/various - - @string/system_ui - @string/mihome - @string/system_settings - @string/security_center - - - - - @string/system_ui - @string/mihome - @string/system_settings - @string/security_center_pad - - - @string/system_ui @string/mihome @@ -463,35 +439,12 @@ 3 - @string/array_default @string/home_folder_shade_solid @string/home_folder_shade_gradient - - - @string/array_align_top - @string/array_align_bottom - - - 0 - 1 - - - - @string/array_discrete - @string/array_gradual - @string/array_rainbow - - - 0 - 1 - 2 - - - 0 1 @@ -844,18 +797,6 @@ theme - - @string/array_default - @string/array_bluetooth_tile_style_2rows2cols - @string/array_bluetooth_tile_style_3rows - - - - 1 - 2 - 3 - - 1 2 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 065c90a98..366122500 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -51,7 +51,6 @@ CLOSE_FROM_FEED APP_TO_APP START_FIRST_TASK - CLOSE_TO_DRAG RECT_CENTERX RECT_CENTERY RECT_WIDTH @@ -62,6 +61,8 @@ reduce_brightness,vowifi1,vowifi2,cell,wifi,bt,airplane,autobrightness,mute,screenshot,flashlight,rotation,screenlock,dtmdtm,scanner,papermode,night,quietmode,batterysaver,uwb_shp,aitranslate,aisubtitles,freeformhang,vibrate,hotspot,sync,wirelesspower,nfc,dolbyatomssound,gps,edit,hearingassisttile,controls,wallet,inversion,saver,dark,onehanded,color_correction,user,dnd,settings reduce_brightness,vowifi1,vowifi2,cell,wifi,rotation,airplane,mute,screenshot,bt,autobrightness,screenlock,dtmdtm,night,papermode,quietmode,batterysaver,gps,flashlight,scanner,freeformhang,vibrate,hotspot,sync,wirelesspower,nfc,dolbyatomssound,edit,controls,workmode,wallet,inversion,saver,dark,onehanded,color_correction,user,dnd,settings + Security Center + English 简体中文 繁體中文 (台灣) @@ -78,10 +79,9 @@ Italiano 梗体中文 - Make HyperOS/MIUI Great Again! + Make HyperOS Great Again! Make HyperOS Great Again! - Make MIUI Great Again! add and delete files on device\'s internal storage used to provide services such as latitude and longitude @@ -319,10 +319,6 @@ Function Recommend Editor - Record - Shot - Portrait - Pro Enable Disable Custom enable @@ -430,8 +426,6 @@ Used recently Storage used Installation time - Three big tiles - One big and two small tiles Official comes with blur Custom background blur Close @@ -490,11 +484,9 @@ Only supports links Adjust volume by default Instant volume adjustment - Independent volume control Remove high volume safety restrictions For all cases Only when headphones are connected - Notification volume slider Media volume level It may cause the scrolling of the volume bar to freeze or the Bluetooth volume to be abnormal Volume level multiplier @@ -624,52 +616,7 @@ Custom device watermark Manufacturer information Device information - Unlock AI watermark - Unlock Long exposure - Unlock Clone mode - Unlock Pocket mirror - Unlock Document mode - Unlock ID Card mode - Unlock Dual camera - Unlock Duration - Unlock Short video - Unlock Supermoon mode - Unlock Panorama mode - Unlock Pixel mode - Unlock Portrait mode - Unlock Slow motion - Unlock Video-sky - Unlock Vlog - Unlock Vlog Pro - Unlock Film camera - Unlock Long-exp - Unlock Dolly zoom - Unlock Dream - Unlock Slow shutter - Unlock Time back-flow - Unlock Time freeze Unlock Palm shutter - Unlock Enhanced colors - Unlock Makeup - Takes effect only when using the front camera - Unlock 60FPS - Not available in some qualities. Please make sure that your device was supported. - Unlock 120FPS - Only support when 4K qualities. Please make sure that your device was supported. - Unlock Audio zoom - Unlock HDR - Unlock AI enhance - Unlock new Beautify - Takes effect only when using the front camera - Unlock Master portrait - Doesn\'t work correctly on some devices - Unlock RAW - Unlock LOG - Unlock HEIF - Unlock Motion tracking focus - Unlock Motion capture - Unlock Remove moles - Unlock Adjust makeup effects for men Enable Lab options Unlock Eye tracking focus Force maximum brightness when using camera @@ -738,12 +685,10 @@ Hide camera Hide smart screen Current - Show clock seconds Blur Lock screen buttons After enabling, the background of the camera and negative screen button on the Lock screen is blurred, which may cause high power consumption.\nSupport default theme only. Background radius Background color - Force clock to use system fonts Double-tap the Lock screen Double-tap an empty location to lock the screen Unlock notification restrict @@ -780,13 +725,8 @@ Manage icons Manage network speed indicator Manage clock indicator - Hardware indicators Smart strong toast Focus lyrics - Layout - Compatibility mode - Forcibly enable the full screen layout for all special-shaped screens - Layout mode Double-tap to sleep Double row signal bar Icon themes @@ -815,8 +755,6 @@ Devices Network Privacy - Show icons on the left side - Show icons on the right side Wi-Fi Auxiliary Wi-Fi Wi-Fi standard @@ -859,23 +797,17 @@ Sound box group stereo TV Wireless headset - Maximum number of notification points Maximum number of notification icons Hide battery percentage Hide battery percentage sign Hide charging indicator Hide battery icon Battery customization - Battery indicator Wi-Fi Mobile network Swap Wi-Fi and mobile network Internet speed Sound scene - Force to use new HD icon - Only supports some system versions - Network speed separator - The vertical line between time and internet speed isn\'t displayed on devices with centered camera Hide the status bar when taking a screenshot Mobile network type icon Enable modification @@ -891,21 +823,9 @@ Network speed values below this level are considered slow and a different indicator icon will be displayed (only some icons) Hide byte per second suffix (*b/s) Indicator icon - Custom clock mode - Clock format - Show year - Show month - Show day - Show week - Show double hour - Show clock period - Show seconds - Hide space - Show double Double row alignment Clock format example Clock size - Double row clock size Valid only when displayed in two rows Fix color Disable the slide clock transition animation in Notification shade @@ -921,36 +841,6 @@ Status bar clock format Notification shade mini clock format Status bar clock arrangement - Power related - Temperature related - Font size - Show contents - Hide decimal places - Hide units - Show on the right - The current always shows a positive value - The power always shows a positive value - Single row display - Reverse order - Show only when charging - Status update interval - Fix CPU temperature - Enter number of /sys/devices/virtual/thermal/thermal_zone* - Centered - Rounded corners - Limit visibility - Align vertically - Color - Full battery color - Low battery color - Battery saver mode color - Charging color - Height - Horizontal margin - Transparency - Shine - Low battery level - Test Layout Information Debug @@ -971,11 +861,9 @@ Add whitespace at the end of lyrics Make scrolling lyrics as complete as possible Control center - Card Media notification card Magnet Notification center - Card background transparency %1$s is on %1$s is off 5G network switch @@ -998,21 +886,8 @@ Columns %d cols Columns (Landscape) - Xiaomi Smart Play entry - Xiaomi Smart Hub entry - Device control entry - Control detail background blur value Disable transparent mode Disable setting notification background to be transparent - Notification blur model - Notification optimization - Experimental feature. Only available for Android 13 and above models. After enabling, notification blur in some areas will be optimized. There may be a problem of System UI crash on some models. - Blur radius - Without dropdown notification - Corner radius - The default theme doesn\'t need to be adjusted - Blur background value - Default background value Optimize color mixing effect of the media control panel Progress bar Remove custom action restrictions for media notification cards @@ -1052,8 +927,6 @@ Only dividers are hidden Display device name Hide all names - Bluetooth tile style - Move the Bluetooth tile near the network tile Extended notification menu Open app info, force close app and open in floating window from notification menu (swipe notification to the left to open it) New control center @@ -1081,15 +954,10 @@ Others Native volume bar Native shutdown menu - MIUI uses the legacy menu UI, while HyperOS uses the AOSP menu UI. - Modifications to the volume bar in HyperOS/MIUI cannot be applied to the native volume bar + Modifications to the volume bar in HyperOS cannot be applied to the native volume bar Unlock the AOSP clipboard editor - After unlocking, it will pop-up together with the HyperOS/MIUI editor. - Charge animation - Charging animation style - Select the Lock screen charging animation style + After unlocking, it will pop-up together with the HyperOS editor. Others - Prevent Bluetooth from being turned off temporarily Hide Split screen button Hide the three permanent dots, including the top of the small window and the button in the middle of the top of the HyperOS for Pad horizontal screen (doesn\'t affect the use of functions). Disable Split screen button @@ -1158,7 +1026,6 @@ Unlock Xiaomi HyperAI After turning it on, the Xiaomi HyperAI option is displayed in the Settings. Support for the device\'s AI features is determined by Xiaomi. Featured functions - Unlock area screenshot VoIP assistant Display & brightness Unlock Super resolution @@ -1215,14 +1082,8 @@ Disable pop-up of \"Turn on automatic updates\" dialog Permissions - Clipboard - Hide toast tips Disable auto-shutdown of auto-start - Read the clipboard using toast hints - Hide the dialog and allow the app to read the clipboard by default - Read clipboard - Cast Interconnectivity services Unlock Device interconnection Forced support for camera streaming @@ -1231,7 +1092,6 @@ Sound Recorder Disable AI watermark - Always-on display Always-on display and Lock screen editor Unlock the display time limit of the Always-on display Restart the System UI to fully enable the feature @@ -1286,8 +1146,7 @@ Xiaomi Cloud Google Google & OneDrive - - MIUI security components + System security components Prevent automatic upload of installed app list Disable environment check @@ -1452,7 +1311,6 @@ Recents Animation speed - Disable wallpaper dimming Unlock pinned apps Hide status bar in Recents Hide floating window when screen mirroring @@ -1660,8 +1518,6 @@ Disable Game Center ads This may cause other functions to be abnormal - Security - Security Security Manage apps Battery @@ -1673,14 +1529,11 @@ Close the Dolby pop-up window Show battery temperature Show detailed battery health - Protect clipboard - Lower positioning accuracy GMS Service Taplus switches Very dark tile icon replacement Flashlight brightness control Allows you to control the flashlight brightness by dragging the brightness slider - Manage the app to obtain the mobile phone number and log in with one click Simplify the Security home screen Remove function recommendation card App lock with scrambled PIN @@ -1850,7 +1703,6 @@ Only Chinese mainland is supported Use a more aggressive roaming filtering approach - Scanner AI Scanner Unlock scan ID card Unlock translation @@ -1860,7 +1712,6 @@ Unlock scan PPT Unlock scan files - Mi AI Super AI Disable chat watermark diff --git a/app/src/main/res/xml/aod.xml b/app/src/main/res/xml/aod.xml index a6a681bec..2aecea095 100644 --- a/app/src/main/res/xml/aod.xml +++ b/app/src/main/res/xml/aod.xml @@ -18,17 +18,9 @@ --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/framework_volume.xml b/app/src/main/res/xml/framework_volume.xml index 4373bd476..fba7d32cc 100644 --- a/app/src/main/res/xml/framework_volume.xml +++ b/app/src/main/res/xml/framework_volume.xml @@ -42,17 +42,6 @@ android:key="prefs_key_system_framework_volume_first_press" android:title="@string/system_framework_volume_first_press" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/lbe_security.xml b/app/src/main/res/xml/lbe_security.xml index b76d85964..fc1fa36df 100644 --- a/app/src/main/res/xml/lbe_security.xml +++ b/app/src/main/res/xml/lbe_security.xml @@ -26,17 +26,5 @@ android:key="prefs_key_lbe_auto_start" android:title="@string/lbe_auto_start" /> - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/milink.xml b/app/src/main/res/xml/milink.xml index 8eff497df..ee47bcace 100644 --- a/app/src/main/res/xml/milink.xml +++ b/app/src/main/res/xml/milink.xml @@ -18,8 +18,7 @@ --> + android:title="@string/milink_hyperos" /> + android:title="@string/aod_hyperos" /> + android:title="@string/security_center_hyperos" /> + android:title="@string/milink_hyperos" /> + android:title="@string/aod_hyperos" /> + android:title="@string/guard_provider_hyperos" /> + android:title="@string/security_center_hyperos" /> + android:title="@string/voiceassist_hyper" /> + android:title="@string/scanner_hyper" /> + android:title="@string/security_center_hyperos" /> + app:myLocation="@string/security_center_hyperos"> - - - - - - - - @@ -153,6 +148,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -272,14 +163,6 @@ app:entries="@array/system_ui_control_center_hide_operator" app:entryValues="@array/system_ui_control_center_hide_operator_value" /> - - - - - - - - - - - @@ -146,11 +133,6 @@ - - - + - + - + - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/system_ui_status_bar_clock_indicator.xml b/app/src/main/res/xml/system_ui_status_bar_clock_indicator.xml deleted file mode 100644 index 30aabc13a..000000000 --- a/app/src/main/res/xml/system_ui_status_bar_clock_indicator.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/system_ui_status_bar_hardware_detail_indicator.xml b/app/src/main/res/xml/system_ui_status_bar_hardware_detail_indicator.xml deleted file mode 100644 index ee608f168..000000000 --- a/app/src/main/res/xml/system_ui_status_bar_hardware_detail_indicator.xml +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/system_ui_status_bar_icon_manage.xml b/app/src/main/res/xml/system_ui_status_bar_icon_manage.xml deleted file mode 100644 index c7105f4da..000000000 --- a/app/src/main/res/xml/system_ui_status_bar_icon_manage.xml +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/xml/system_ui_status_bar_icon_manage_new.xml b/app/src/main/res/xml/system_ui_status_bar_icon_manage_new.xml index c16b884c1..9b65b1a7c 100644 --- a/app/src/main/res/xml/system_ui_status_bar_icon_manage_new.xml +++ b/app/src/main/res/xml/system_ui_status_bar_icon_manage_new.xml @@ -219,23 +219,6 @@ - - - - - - diff --git a/app/src/main/res/xml/system_ui_status_bar_network_speed_indicator.xml b/app/src/main/res/xml/system_ui_status_bar_network_speed_indicator.xml index 37d8caa61..2a7d103df 100644 --- a/app/src/main/res/xml/system_ui_status_bar_network_speed_indicator.xml +++ b/app/src/main/res/xml/system_ui_status_bar_network_speed_indicator.xml @@ -60,12 +60,6 @@ android:key="prefs_key_system_ui_statusbar_network_speed_sec_unit" android:title="@string/system_ui_statusbar_network_speed_sec_unit" /> - - + android:title="@string/home_layout"> diff --git a/app/src/main/res/xml/voiceassist.xml b/app/src/main/res/xml/voiceassist.xml index fd8c91e1c..4bd846ae4 100644 --- a/app/src/main/res/xml/voiceassist.xml +++ b/app/src/main/res/xml/voiceassist.xml @@ -18,8 +18,7 @@ -->