新增桌面双击锁屏

This commit is contained in:
乌堆小透明
2022-03-16 16:18:38 +08:00
parent 7cc2819307
commit 987f33b584
5 changed files with 148 additions and 18 deletions

View File

@@ -455,10 +455,22 @@ class SettingsActivity : MIUIActivity() {
SwitchV("remove_small_window_restrictions") SwitchV("remove_small_window_restrictions")
) )
) )
add(TextSummaryArrowV(TextSummaryV(textId = R.string.max_wallpaper_scale, onClickListener = { add(
TextSummaryArrowV(
TextSummaryV(
textId = R.string.max_wallpaper_scale,
onClickListener = {
MIUIDialog(activity).apply { MIUIDialog(activity).apply {
setTitle(R.string.max_wallpaper_scale) setTitle(R.string.max_wallpaper_scale)
setEditText("", "${activity.getString(R.string.def)}1.1, ${activity.getString(R.string.current)}${OwnSP.ownSP.getFloat("max_wallpaper_scale", 1.1f)}") setEditText(
"",
"${activity.getString(R.string.def)}1.1, ${activity.getString(R.string.current)}${
OwnSP.ownSP.getFloat(
"max_wallpaper_scale",
1.1f
)
}"
)
setLButton(textId = R.string.cancel) { setLButton(textId = R.string.cancel) {
dismiss() dismiss()
} }
@@ -473,7 +485,9 @@ class SettingsActivity : MIUIActivity() {
} }
show() show()
} }
}))) })
)
)
} }
} }
@@ -840,6 +854,14 @@ class SettingsActivity : MIUIActivity() {
), SwitchV("home_time") ), SwitchV("home_time")
) )
) )
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.double_tap_to_sleep,
tipsId = R.string.home_double_tap_to_sleep_summary
), SwitchV("double_tap_to_sleep")
)
)
add(LineV()) add(LineV())
add(TitleTextV(resId = R.string.scope_powerkeeper)) add(TitleTextV(resId = R.string.scope_powerkeeper))
add( add(

View File

@@ -1,6 +1,7 @@
package com.lt2333.simplicitytools.hook.app package com.lt2333.simplicitytools.hook.app
import com.lt2333.simplicitytools.hook.app.miuihome.AlwaysDisplayTime import com.lt2333.simplicitytools.hook.app.miuihome.AlwaysDisplayTime
import com.lt2333.simplicitytools.hook.app.miuihome.DoubleTapToSleep
import de.robv.android.xposed.IXposedHookLoadPackage import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XposedBridge import de.robv.android.xposed.XposedBridge
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam
@@ -10,5 +11,7 @@ class MiuiHome : IXposedHookLoadPackage {
XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName) XposedBridge.log("Simplicitytools: 成功 Hook "+javaClass.simpleName)
//时钟显示时钟 //时钟显示时钟
AlwaysDisplayTime().handleLoadPackage(lpparam) AlwaysDisplayTime().handleLoadPackage(lpparam)
//双击锁屏
DoubleTapToSleep().handleLoadPackage(lpparam)
} }
} }

View File

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

View File

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

View File

@@ -163,4 +163,6 @@
<string name="hide_volume_icon">Hide Volume icon</string> <string name="hide_volume_icon">Hide Volume icon</string>
<string name="hide_zen_icon">Hide ZEN icon</string> <string name="hide_zen_icon">Hide ZEN icon</string>
<string name="hide_icon">Hide Icon</string> <string name="hide_icon">Hide Icon</string>
<string name="double_tap_to_sleep">Double tap to sleep</string>
<string name="home_double_tap_to_sleep_summary">Double-tap on an empty space on the home to sleep</string>
</resources> </resources>