diff --git a/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt b/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt
index d11ec69..2c6dc3e 100644
--- a/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt
+++ b/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt
@@ -96,6 +96,13 @@ var Context.needDowngradeToCdma: Boolean
putBoolean("needDowngradeToCdma", value)
}
+var Context.hookSensor: Boolean
+ get() = sharedPrefs.getBoolean("hookSensor", false)
+
+ set(value) = sharedPrefs.edit {
+ putBoolean("hookSensor", value)
+ }
+
//var Context.updateInterval: Long
// get() = sharedPrefs.getLong("updateInterval", FakeLoc.updateInterval)
//
diff --git a/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt b/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt
index 8fc7d5a..cbea3d2 100644
--- a/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt
+++ b/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt
@@ -28,6 +28,7 @@ import moe.fuqiuluo.portal.databinding.FragmentMockBinding
import moe.fuqiuluo.portal.ext.altitude
import moe.fuqiuluo.portal.ext.drawOverOtherAppsEnabled
import moe.fuqiuluo.portal.ext.historicalLocations
+import moe.fuqiuluo.portal.ext.hookSensor
import moe.fuqiuluo.portal.ext.needOpenSELinux
import moe.fuqiuluo.portal.ext.rawHistoricalLocations
import moe.fuqiuluo.portal.ext.selectLocation
@@ -223,14 +224,17 @@ class MockFragment : Fragment() {
}
if (ShellUtils.hasRoot()) {
- ShellUtils.setEnforceMode(false) // 关闭SELinux
- if(MockServiceHelper.loadPortalLibrary(requireContext())) {
- showToast("传感器劫持成功")
- } else {
- showToast("无法劫持传感器")
- }
- if (requireContext().needOpenSELinux) {
- ShellUtils.setEnforceMode(true)
+ if (requireContext().hookSensor) {
+ ShellUtils.setEnforceMode(false) // 关闭SELinux
+ if(MockServiceHelper.loadPortalLibrary(requireContext())) {
+ showToast("传感器劫持成功")
+ } else {
+ showToast("无法劫持传感器")
+ }
+
+ if (requireContext().needOpenSELinux) {
+ ShellUtils.setEnforceMode(true)
+ }
}
}
diff --git a/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt b/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt
index cd5d414..baefa21 100644
--- a/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt
@@ -26,6 +26,7 @@ import moe.fuqiuluo.portal.ext.debug
import moe.fuqiuluo.portal.ext.disableFusedProvider
import moe.fuqiuluo.portal.ext.disableGetCurrentLocation
import moe.fuqiuluo.portal.ext.disableRegitserLocationListener
+import moe.fuqiuluo.portal.ext.hookSensor
import moe.fuqiuluo.portal.ext.needDowngradeToCdma
import moe.fuqiuluo.portal.ext.needOpenSELinux
import moe.fuqiuluo.portal.ext.rawHistoricalLocations
@@ -175,6 +176,18 @@ class SettingsFragment : Fragment() {
}
})
+ binding.sensorHookSwitch.isChecked = context.hookSensor
+ binding.sensorHookSwitch.setOnCheckedChangeListener(object: CompoundButton.OnCheckedChangeListener {
+ override fun onCheckedChanged(
+ buttonView: CompoundButton?,
+ isChecked: Boolean
+ ) {
+ context.hookSensor = isChecked
+ showToast("重新启动生效")
+ updateRemoteConfig()
+ }
+ })
+
return root
}
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 273ed4e..4f00821 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -379,6 +379,44 @@
android:layout_gravity="center_vertical"
app:useMaterialThemeColors="true"/>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file