Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions app/src/main/java/com/sameerasw/essentials/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -229,12 +229,10 @@ class MainActivity : FragmentActivity() {
updatesViewModel.loadTrackedRepos(context)
}

val isDeveloperModeEnabled by viewModel.isDeveloperModeEnabled


// Dynamic tabs configuration
val tabs = remember(isDeveloperModeEnabled) {
if (isDeveloperModeEnabled) DIYTabs.entries else listOf(DIYTabs.ESSENTIALS, DIYTabs.FREEZE, DIYTabs.DIY)
}
val tabs = remember { DIYTabs.entries }

val defaultTab by viewModel.defaultTab
val initialPage = remember(tabs) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,9 +305,7 @@ fun SettingsContent(viewModel: MainViewModel, modifier: Modifier = Modifier) {

val defaultTab by viewModel.defaultTab
RoundedCardContainer {
val availableTabs = remember(isDeveloperModeEnabled) {
if (isDeveloperModeEnabled) DIYTabs.entries else listOf(DIYTabs.ESSENTIALS, DIYTabs.FREEZE, DIYTabs.DIY)
}
val availableTabs = remember { DIYTabs.entries }
DefaultTabPicker(
selectedTab = defaultTab,
onTabSelected = { viewModel.setDefaultTab(it, context) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,24 +49,11 @@ class ButtonRemapHandler(
val powerManager = service.getSystemService(Context.POWER_SERVICE) as PowerManager
val isScreenInteractive = try { powerManager.isInteractive } catch(e: Exception) { false }

// This usually requires import of the isAod method or similar logic.
// Typically AOD check is: Display.STATE_DOZE or STATE_DOZE_SUSPEND
val isAod = isAodShowing()

val shellReady = com.sameerasw.essentials.utils.ShellUtils.isAvailable(service) && com.sameerasw.essentials.utils.ShellUtils.hasPermission(service)
val devicePathDetected = !prefs.getString("shizuku_detected_device_path", null).isNullOrEmpty()

// If using Shizuku and screen off, verify if we should INTERCEPT or let Shizuku handle it?
// Original logic: returns true (consumes event) if isMapped or isTorchControl.
// Wait, if returns true here, the accessibility service consumes it, so it DOES NOT reach the app?
// Actually, accessibility service `onKeyEvent` returning true means "I handled this, don't pass it to the system/app".
// The original logic checks: "if ... return true".
// It seems this block is to prevent system volume change if we are going to handle it via Shizuku service separately?
// OR, the original logic meant: "If handled by Shizuku InputEventListenerService, we also consume it here so system volume doesn't change?"
// But InputEventListenerService is a separate service.
// The check `if (isButtonRemapUseShizuku ...)` suggests we might skip handling here because Shizuku service handles it?
// NO, the return true means "CONSUME". So if Shizuku is handling it, we consume it here to prevent default volume action?
// Let's stick to the original logic flow.

val useShell = isButtonRemapUseShizuku || com.sameerasw.essentials.utils.ShellUtils.isRootEnabled(service)

Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@
<!-- Updates -->
<string name="status_up_to_date">You are up to date</string>
<string name="warning_pre_release">This is a pre-release version and might be unstable.</string>
<string name="release_notes_format">Release Notes %1$s</string>
<string name="release_notes_format">Release Notes v%1$s</string>
<string name="action_view_on_github">View on GitHub</string>
<string name="action_download_apk">Download APK</string>
<!-- Haptic Types -->
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@
<!-- Updates -->
<string name="status_up_to_date">Vous êtes à jour</string>
<string name="warning_pre_release">Ceci est une version bêta qui peut être instable.</string>
<string name="release_notes_format">Release Notes %1$s</string>
<string name="release_notes_format">Notes de mise à jour v%1$s</string>
<string name="action_view_on_github">Voir sur GitHub</string>
<string name="action_download_apk">Télécharger l\'APK</string>
<!-- Haptic Types -->
Expand Down
62 changes: 31 additions & 31 deletions app/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<string name="screen_off_widget_label">Lege schermuitzetwidget</string>
<string name="app_freezing_tile_label">Apps bevriezen</string>
<string name="flashlight_pulse_tile_label">Zaklamppuls</string>
<string name="check_pre_releases_label">Checken voor voorversies</string>
<string name="check_pre_releases_label">Checken voor vooruitgaven</string>
<string name="check_pre_releases_desc">Kunnen instabiel zijn</string>
<!-- App Lock -->
<string name="settings_section_security">Beveiliging</string>
Expand Down Expand Up @@ -345,8 +345,8 @@
<string name="feat_freeze_desc">Schakel weinig gebruikte apps uit</string>
<string name="feat_watermark_title">Watermerk</string>
<string name="feat_watermark_desc">EXIF-data en logo\'s toevoegen aan foto\'s</string>
<string name="feat_calendar_sync_title">Calendar Sync</string>
<string name="feat_calendar_sync_desc">Sync events to your watch</string>
<string name="feat_calendar_sync_title">Kalenders synchroniseren</string>
<string name="feat_calendar_sync_desc">Gebeurtenissen synchroniseren naar je horloge</string>
<string name="watermark_style_title">Stijl</string>
<string name="watermark_style_overlay">Overlay</string>
<string name="watermark_style_frame">Kader</string>
Expand Down Expand Up @@ -522,34 +522,34 @@
<string name="tab_apps">Apps</string>
<string name="tab_freeze_subtitle">Uitgeschakelde apps</string>
<string name="tab_diy_subtitle">Doe-het-zelf</string>
<string name="tab_apps_subtitle">Find and manage apps</string>
<string name="feat_app_updates_title">App Updates</string>
<string name="tab_app_updates_title">App Updates</string>
<string name="action_add_repo">Add Repository</string>
<string name="action_edit_repo">Edit Repository</string>
<string name="prompt_enter_repo_url">Enter GitHub Repository URL or owner/repo</string>
<string name="action_track">Track</string>
<string name="error_invalid_repo_url">Invalid repository URL or format</string>
<string name="error_no_apk_found">No APK found in the latest release</string>
<string name="error_repo_not_found">Repository not found</string>
<string name="label_latest_release">Latest Release</string>
<string name="action_view_readme">View README</string>
<string name="label_stars">%d Stars</string>
<string name="label_installed_app">Installed app</string>
<string name="label_not_installed">Not installed</string>
<string name="action_pick_app">Pick app</string>
<string name="action_select_app">Select app</string>
<string name="action_untrack">Untrack</string>
<string name="label_pending">Pending</string>
<string name="label_up_to_date">Up-to-date</string>
<string name="feat_app_updates_desc">Track and download the latest releases for your favorite apps directly from GitHub.</string>
<string name="error_invalid_repo_format">Invalid format. Use owner/repo or GitHub URL</string>
<string name="error_generic_search">An error occurred during search</string>
<string name="label_auto">Auto</string>
<string name="label_options">Options</string>
<string name="option_allow_prereleases">Check for pre-releases</string>
<string name="option_notifications">Notifications</string>
<string name="error_rate_limited">GitHub rate limit exceeded. Please try again later.</string>
<string name="tab_apps_subtitle">Vind en beheer apps</string>
<string name="feat_app_updates_title">Appupdates</string>
<string name="tab_app_updates_title">Appupdates</string>
<string name="action_add_repo">Repository toevoegen</string>
<string name="action_edit_repo">Repository bewerken</string>
<string name="prompt_enter_repo_url">Voer de URL van de GitHub-repository of eigenaar/repository</string>
<string name="action_track">Volgen</string>
<string name="error_invalid_repo_url">Ongeldige repository-URL of formaat</string>
<string name="error_no_apk_found">Geen APK gevonden in de laatste versie</string>
<string name="error_repo_not_found">Repository niet gevonden</string>
<string name="label_latest_release">Laatste versie</string>
<string name="action_view_readme">README bekijken</string>
<string name="label_stars">%d sterren</string>
<string name="label_installed_app">Geïnstalleerde app</string>
<string name="label_not_installed">Niet geïnstalleerd</string>
<string name="action_pick_app">Kies app</string>
<string name="action_select_app">Selecteer app</string>
<string name="action_untrack">Niet meer volgen</string>
<string name="label_pending">In behandeling</string>
<string name="label_up_to_date">Actuele versie</string>
<string name="feat_app_updates_desc">Volg en download de laatste versies van je favoriete apps direct vanaf GitHub.</string>
<string name="error_invalid_repo_format">Incorrect formaat. Gebruik eigenaar/repository of de GitHub-URL</string>
<string name="error_generic_search">Er was een fout tijdens het zoeken</string>
<string name="label_auto">Automatisch</string>
<string name="label_options">Opties</string>
<string name="option_allow_prereleases">Checken voor vooruitgaven</string>
<string name="option_notifications">Meldingen</string>
<string name="error_rate_limited">De limiet voor aanvragen van GitHub is bereikt. Probeer het later opnieuw.</string>
<!-- Keyboard Setup -->
<string name="label_keyboard_setup">Toetsenbord instellen</string>
<string name="btn_enable_keyboard">In de instellingen inschakelen</string>
Expand Down
96 changes: 48 additions & 48 deletions app/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,56 +2,56 @@
<resources>
<string name="app_name">Essentials</string>
<string name="label_beta">BETA</string>
<string name="accessibility_service_description"><b>Essentials Accessibility Service</b>\n\nThis service is required for the following advanced features:\n\n<b>• Physical Button Remapping:</b>\nDetects volume button presses even when the screen is off to trigger actions like the Flashlight.\n\n<b>• Per-App Settings:</b>\nMonitors the currently active app to apply specific profiles for Dynamic Night Light, Notification Lighting Colors, and App Lock.\n\n<b>• Screen Control:</b>\nAllows the app to lock the screen (e.g. via Double Tap or Widgets) and detect screen state changes.\n\n<b>• Security:</b>\nPrevents unauthorized changes by detecting window content when the device is locked.\n\n<small>No input text or sensitive user data is collected or transmitted.</small></string>
<string name="app_icon">App icon</string>
<string name="freeze_activity_title">App Freezing</string>
<string name="freeze_activity_subtitle">Disable apps that are rarely used</string>
<string name="freeze_shortcut_short_label">App Freezing</string>
<string name="freeze_shortcut_long_label">Open App Freezing</string>
<string name="frozen_app_shortcut_label">Frozen App</string>
<string name="screen_off_widget_label">Empty screen off widget</string>
<string name="app_freezing_tile_label">App Freezing</string>
<string name="flashlight_pulse_tile_label">Flashlight Pulse</string>
<string name="check_pre_releases_label">Check for pre-releases</string>
<string name="check_pre_releases_desc">Might be unstable</string>
<string name="accessibility_service_description"><b>Essentials 无障碍服务</b>\n\n此服务被应用于以下增强型功能:\n\n<b>• 物理按键映射:</b>\n在屏幕熄灭状态下检测音量键状态以触发如手电筒等功能.\n\n<b>• 独立应用设置:</b>\n检测当前活动的应用以应用动态夜间光效, 通知闪光和应用锁等功能\n\n<b>• 屏幕控制:</b>\n允许应用通过双击或点击小部件以锁定屏幕或检测屏幕状态变化.\n\n<b>• 安全:</b>\n通过在设备锁定时检测窗口内容来避免未经授权的更改.\n\n<small>输入内容和敏感用户数据不会被收集和上传.</small></string>
<string name="app_icon">应用图标</string>
<string name="freeze_activity_title">应用冻结</string>
<string name="freeze_activity_subtitle">禁用不常用的应用</string>
<string name="freeze_shortcut_short_label">已冻结的应用</string>
<string name="freeze_shortcut_long_label">打开冻结的应用</string>
<string name="frozen_app_shortcut_label">冻结应用</string>
<string name="screen_off_widget_label">无熄屏小组件</string>
<string name="app_freezing_tile_label">已冻结的应用</string>
<string name="flashlight_pulse_tile_label">闪光灯脉冲</string>
<string name="check_pre_releases_label">检查预览版更新</string>
<string name="check_pre_releases_desc">可能不稳定</string>
<!-- App Lock -->
<string name="settings_section_security">Security</string>
<string name="app_lock_enable_title">Enable app lock</string>
<string name="app_lock_auth_title">App Lock Security</string>
<string name="app_lock_enable_auth_subtitle">Authenticate to enable app lock</string>
<string name="app_lock_disable_auth_subtitle">Authenticate to disable app lock</string>
<string name="app_lock_select_apps_title">Select locked apps</string>
<string name="app_lock_select_apps_desc">Choose which apps require authentication</string>
<string name="app_lock_description">Secure your apps with biometric authentication. Locked apps will require authentication when launching, Stays unlocked until the screen turns off.</string>
<string name="app_lock_warning">Beware that this is not a robust solution as this is only a 3rd party application. If you need strong security, consider using Private Space or other such features.</string>
<string name="app_lock_biometric_note">Another note, the biometric authentication prompt only lets you use STRONG secure class methods. Face unlock security methods in WEAK class in devices such as Pixel 7 will only be able to utilize the available other STRONG auth methods such as fingerprint or pin.</string>
<string name="settings_section_security">安全性</string>
<string name="app_lock_enable_title">启用应用锁</string>
<string name="app_lock_auth_title">应用锁安全</string>
<string name="app_lock_enable_auth_subtitle">认证身份以启用应用锁</string>
<string name="app_lock_disable_auth_subtitle">认证身份以禁用应用锁</string>
<string name="app_lock_select_apps_title">选择需要锁定的应用</string>
<string name="app_lock_select_apps_desc">选择哪些应用需要验证</string>
<string name="app_lock_description">通过生物识别保护你的应用。被锁定的应用在启动时需要身份认证,并在屏幕关闭前保持解锁</string>
<string name="app_lock_warning">请注意这并不是一个稳妥的解决方案,应为本应用是第三方应用。如果你需要更高的安全性,请考虑使用隐私空间或其他相似功能。</string>
<string name="app_lock_biometric_note">另外,生物识别认证提示只能让你使用 STRONG 类的安全方法。在Pixel 7等设备上,WEAK 类的人脸解锁安全方法只能使用其他STRONG认证方法,如指纹或PIN码。</string>
<!-- Button Remap -->
<string name="button_remap_enable_title">Enable Button Remap</string>
<string name="button_remap_use_shizuku_title">Use Shizuku</string>
<string name="button_remap_use_shizuku_desc">Works with screen off (Recommended)</string>
<string name="shizuku_not_running_toast">Shizuku is not running</string>
<string name="shizuku_detected_prefix">Detected %1$s</string>
<string name="shizuku_status_prefix">Status: %1$s</string>
<string name="shizuku_open_button">Open Shizuku</string>
<string name="settings_section_flashlight">Flashlight</string>
<string name="flashlight_options_title">Flashlight options</string>
<string name="flashlight_options_desc">Adjust fading and other settings</string>
<string name="setting_pitch_black_theme_title">Pitch black theme</string>
<string name="setting_pitch_black_theme_desc">Use pure black background in dark mode</string>
<string name="settings_section_haptic">Haptic Feedback</string>
<string name="button_remap_section_long_press">Remap Long Press</string>
<string name="screen_off">Screen Off</string>
<string name="screen_on">Screen On</string>
<string name="volume_up">Volume Up</string>
<string name="volume_down">Volume Down</string>
<string name="action_toggle_flashlight">Toggle flashlight</string>
<string name="action_media_play_pause">Media play/pause</string>
<string name="action_media_next">Media next</string>
<string name="action_media_previous">Media previous</string>
<string name="action_toggle_vibrate">Toggle vibrate</string>
<string name="action_toggle_mute">Toggle mute</string>
<string name="action_ai_assistant">AI assistant</string>
<string name="action_take_screenshot">Take screenshot</string>
<string name="button_remap_enable_title">启用按键重映射</string>
<string name="button_remap_use_shizuku_title">使用 Shizuku 或 Root 权限</string>
<string name="button_remap_use_shizuku_desc">在屏幕熄灭时启用(推荐)</string>
<string name="shizuku_not_running_toast">Shizuku 未运行</string>
<string name="shizuku_detected_prefix">检测到 %1$s</string>
<string name="shizuku_status_prefix">状态 %1$s</string>
<string name="shizuku_open_button">打开 Shizuku</string>
<string name="settings_section_flashlight">闪光灯</string>
<string name="flashlight_options_title">闪光灯选项</string>
<string name="flashlight_options_desc">调整渐变和其他设置</string>
<string name="setting_pitch_black_theme_title">纯黑色主题</string>
<string name="setting_pitch_black_theme_desc">在深色模式下使用纯黑色背景</string>
<string name="settings_section_haptic">触觉反馈</string>
<string name="button_remap_section_long_press">重映射长按</string>
<string name="screen_off">关闭屏幕</string>
<string name="screen_on">开启屏幕</string>
<string name="volume_up">音量上</string>
<string name="volume_down">音量下</string>
<string name="action_toggle_flashlight">闪光灯开关</string>
<string name="action_media_play_pause">媒体播放/暂停</string>
<string name="action_media_next">媒体下一首</string>
<string name="action_media_previous">媒体上一首</string>
<string name="action_toggle_vibrate">开关振动</string>
<string name="action_toggle_mute">开关静音</string>
<string name="action_ai_assistant">AI 助理</string>
<string name="action_take_screenshot">屏幕截图</string>
<string name="action_cycle_sound_modes">Cycle sound modes</string>
<string name="action_like_song">Like current song</string>
<string name="like_song_settings_title">Like song settings</string>
Expand Down