feat: camera disabler (#52)

Co-authored-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
auth 2023-06-09 16:25:06 +02:00 committed by GitHub
parent 20c1f6a779
commit bef74a3c77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 0 deletions

View File

@ -60,6 +60,7 @@
"longitude_value": "Longitude", "longitude_value": "Longitude",
"hide_ui_elements": "Hide UI Elements", "hide_ui_elements": "Hide UI Elements",
"auto_updater": "Auto Updater", "auto_updater": "Auto Updater",
"disable_camera": "Disable Camera",
"infinite_story_boost": "Infinite Story Boost", "infinite_story_boost": "Infinite Story Boost",
"enable_app_appearance": "Enable App Appearance Settings", "enable_app_appearance": "Enable App Appearance Settings",
"disable_spotlight": "Disable Spotlight", "disable_spotlight": "Disable Spotlight",

View File

@ -177,6 +177,12 @@ enum class ConfigProperty(
), ),
//UI AND TWEAKS //UI AND TWEAKS
CAMERA_DISABLE(
"property.disable_camera",
"description.disable_camera",
ConfigCategory.UI_TWEAKS,
ConfigStateValue(false)
),
HIDE_UI_ELEMENTS( HIDE_UI_ELEMENTS(
"property.hide_ui_elements", "property.hide_ui_elements",
"description.hide_ui_elements", "description.hide_ui_elements",

View File

@ -1,12 +1,17 @@
package me.rhunk.snapenhance.features.impl.tweaks package me.rhunk.snapenhance.features.impl.tweaks
import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.admin.DevicePolicyManager
import android.content.ContextWrapper
import android.content.pm.PackageManager
import me.rhunk.snapenhance.config.ConfigProperty import me.rhunk.snapenhance.config.ConfigProperty
import me.rhunk.snapenhance.data.wrapper.impl.ScSize import me.rhunk.snapenhance.data.wrapper.impl.ScSize
import me.rhunk.snapenhance.features.Feature import me.rhunk.snapenhance.features.Feature
import me.rhunk.snapenhance.features.FeatureLoadParams import me.rhunk.snapenhance.features.FeatureLoadParams
import me.rhunk.snapenhance.features.impl.ConfigEnumKeys import me.rhunk.snapenhance.features.impl.ConfigEnumKeys
import me.rhunk.snapenhance.hook.HookStage import me.rhunk.snapenhance.hook.HookStage
import me.rhunk.snapenhance.hook.hook
import me.rhunk.snapenhance.hook.hookConstructor import me.rhunk.snapenhance.hook.hookConstructor
class CameraTweaks : Feature("Camera Tweaks", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) { class CameraTweaks : Feature("Camera Tweaks", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
@ -20,6 +25,19 @@ class CameraTweaks : Feature("Camera Tweaks", loadParams = FeatureLoadParams.ACT
@SuppressLint("MissingPermission", "DiscouragedApi") @SuppressLint("MissingPermission", "DiscouragedApi")
override fun onActivityCreate() { override fun onActivityCreate() {
if (context.config.bool(ConfigProperty.CAMERA_DISABLE)) {
ContextWrapper::class.java.hook("checkPermission", HookStage.BEFORE) { param ->
val permission = param.arg<String>(0)
if (permission == Manifest.permission.CAMERA) {
param.setResult(PackageManager.PERMISSION_GRANTED)
}
}
DevicePolicyManager::class.java.hook("getCameraDisabled", HookStage.BEFORE) { param ->
param.setResult(true)
}
}
ConfigEnumKeys.hookAllEnums(context.mappings.getMappedClass("enums", "CAMERA")) { ConfigEnumKeys.hookAllEnums(context.mappings.getMappedClass("enums", "CAMERA")) {
if (key == "FORCE_CAMERA_HIGHEST_FPS" && context.config.bool(ConfigProperty.FORCE_HIGHEST_FRAME_RATE)) { if (key == "FORCE_CAMERA_HIGHEST_FPS" && context.config.bool(ConfigProperty.FORCE_HIGHEST_FRAME_RATE)) {
set(true) set(true)