mirror of
https://github.com/LittleTurtle2333/SimplicityTools.git
synced 2026-07-13 03:41:19 +08:00
新增桌面双击锁屏
This commit is contained in:
@@ -455,25 +455,39 @@ class SettingsActivity : MIUIActivity() {
|
|||||||
SwitchV("remove_small_window_restrictions")
|
SwitchV("remove_small_window_restrictions")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
add(TextSummaryArrowV(TextSummaryV(textId = R.string.max_wallpaper_scale, onClickListener = {
|
add(
|
||||||
MIUIDialog(activity).apply {
|
TextSummaryArrowV(
|
||||||
setTitle(R.string.max_wallpaper_scale)
|
TextSummaryV(
|
||||||
setEditText("", "${activity.getString(R.string.def)}1.1, ${activity.getString(R.string.current)}${OwnSP.ownSP.getFloat("max_wallpaper_scale", 1.1f)}")
|
textId = R.string.max_wallpaper_scale,
|
||||||
setLButton(textId = R.string.cancel) {
|
onClickListener = {
|
||||||
dismiss()
|
MIUIDialog(activity).apply {
|
||||||
}
|
setTitle(R.string.max_wallpaper_scale)
|
||||||
setRButton(textId = R.string.Done) {
|
setEditText(
|
||||||
if (getEditText() != "") {
|
"",
|
||||||
OwnSP.ownSP.edit().run {
|
"${activity.getString(R.string.def)}1.1, ${activity.getString(R.string.current)}${
|
||||||
putFloat("max_wallpaper_scale", getEditText().toFloat())
|
OwnSP.ownSP.getFloat(
|
||||||
apply()
|
"max_wallpaper_scale",
|
||||||
|
1.1f
|
||||||
|
)
|
||||||
|
}"
|
||||||
|
)
|
||||||
|
setLButton(textId = R.string.cancel) {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
setRButton(textId = R.string.Done) {
|
||||||
|
if (getEditText() != "") {
|
||||||
|
OwnSP.ownSP.edit().run {
|
||||||
|
putFloat("max_wallpaper_scale", getEditText().toFloat())
|
||||||
|
apply()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
show()
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
dismiss()
|
)
|
||||||
}
|
)
|
||||||
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(
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user