新增第三方锁屏下DT2S

This commit is contained in:
乌堆小透明
2022-03-17 18:36:50 +08:00
parent fcfd29a86b
commit 2f23263333
6 changed files with 88 additions and 5 deletions

View File

@@ -803,7 +803,6 @@ class SettingsActivity : MIUIActivity() {
add(LineV())
add(TitleTextV(resId = R.string.lock_screen))
add(
TextSummaryWithSwitchV(
TextSummaryV(
@@ -839,6 +838,14 @@ class SettingsActivity : MIUIActivity() {
SwitchV("lock_screen_charging_current")
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.double_tap_to_sleep,
tipsId = R.string.home_double_tap_to_sleep_summary
), SwitchV("lock_screen_double_tap_to_sleep")
)
)
}
}

View File

@@ -50,6 +50,8 @@ class SystemUI : IXposedHookLoadPackage {
WaveCharge().handleLoadPackage(lpparam)
//锁屏电流
LockScreenCurrent().handleLoadPackage(lpparam)
//锁屏下双击锁屏
LockScreenDoubleTapToSleep().handleLoadPackage(lpparam)
}
}

View File

@@ -29,7 +29,8 @@ class DoubleTapController internal constructor(mContext: Context) {
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
if (SystemClock.elapsedRealtime() - mLastClickTime > maxDuration || rawY - mFirstClickRawY > mTouchSlop.toFloat() || rawX - mFirstClickRawX > mTouchSlop.toFloat()) mClickCount =
0
mClickCount++
if (mClickCount == 1) {
mFirstClickRawX = rawX

View File

@@ -0,0 +1,71 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.annotation.SuppressLint
import android.app.KeyguardManager
import android.content.Context
import android.os.SystemClock
import android.view.MotionEvent
import android.view.View
import android.view.View.OnTouchListener
import com.lt2333.simplicitytools.util.findClass
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookBeforeMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.XposedHelpers
import de.robv.android.xposed.callbacks.XC_LoadPackage
class LockScreenDoubleTapToSleep : IXposedHookLoadPackage {
@SuppressLint("ClickableViewAccessibility")
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
hasEnable("lock_screen_double_tap_to_sleep") {
"com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer".findClass(
lpparam.classLoader
).hookBeforeMethod("onFinishInflate") {
val view = it.thisObject as View
XposedHelpers.setAdditionalInstanceField(view, "currentTouchTime", 0L)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchX", 0f)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchY", 0f)
view.setOnTouchListener(OnTouchListener { v, event ->
if (event.action != MotionEvent.ACTION_DOWN) return@OnTouchListener false
var currentTouchTime =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchTime") as Long
var currentTouchX =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchX") as Float
var currentTouchY =
XposedHelpers.getAdditionalInstanceField(view, "currentTouchY") as Float
val lastTouchTime = currentTouchTime
val lastTouchX = currentTouchX
val lastTouchY = currentTouchY
currentTouchTime = System.currentTimeMillis()
currentTouchX = event.x
currentTouchY = event.y
if (currentTouchTime - lastTouchTime < 250L && Math.abs(currentTouchX - lastTouchX) < 100f && Math.abs(
currentTouchY - lastTouchY
) < 100f
) {
val keyguardMgr =
v.context.getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
if (keyguardMgr.isKeyguardLocked) {
XposedHelpers.callMethod(
v.context.getSystemService(Context.POWER_SERVICE),
"goToSleep",
SystemClock.uptimeMillis()
)
}
currentTouchTime = 0L
currentTouchX = 0f
currentTouchY = 0f
}
XposedHelpers.setAdditionalInstanceField(
view,
"currentTouchTime",
currentTouchTime
)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchX", currentTouchX)
XposedHelpers.setAdditionalInstanceField(view, "currentTouchY", currentTouchY)
false
})
}
}
}
}