[android] InputService mouse long press mode
This commit is contained in:
parent
55427bad2f
commit
fdca9acbb7
@ -8,14 +8,14 @@ package com.carriez.flutter_hbb
|
|||||||
|
|
||||||
import android.accessibilityservice.AccessibilityService
|
import android.accessibilityservice.AccessibilityService
|
||||||
import android.accessibilityservice.GestureDescription
|
import android.accessibilityservice.GestureDescription
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Path
|
import android.graphics.Path
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.accessibility.AccessibilityEvent
|
import android.view.accessibility.AccessibilityEvent
|
||||||
import androidx.annotation.Keep
|
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import kotlin.math.abs
|
||||||
|
import kotlin.math.max
|
||||||
|
|
||||||
const val LIFT_DOWN = 9
|
const val LIFT_DOWN = 9
|
||||||
const val LIFT_MOVE = 8
|
const val LIFT_MOVE = 8
|
||||||
@ -49,28 +49,40 @@ class InputService : AccessibilityService() {
|
|||||||
|
|
||||||
private val wheelActionsQueue = LinkedList<GestureDescription>()
|
private val wheelActionsQueue = LinkedList<GestureDescription>()
|
||||||
private var isWheelActionsPolling = false
|
private var isWheelActionsPolling = false
|
||||||
|
private var isWaitingLongPress = false
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.N)
|
@RequiresApi(Build.VERSION_CODES.N)
|
||||||
fun onMouseInput(mask: Int, _x: Int, _y: Int) {
|
fun onMouseInput(mask: Int, _x: Int, _y: Int) {
|
||||||
val x = if (_x < 0) {
|
val x = max(0, _x)
|
||||||
0
|
val y = max(0, _y)
|
||||||
} else {
|
|
||||||
_x
|
|
||||||
}
|
|
||||||
|
|
||||||
val y = if (_y < 0) {
|
|
||||||
0
|
|
||||||
} else {
|
|
||||||
_y
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mask == 0 || mask == LIFT_MOVE) {
|
if (mask == 0 || mask == LIFT_MOVE) {
|
||||||
|
val oldX = mouseX
|
||||||
|
val oldY = mouseY
|
||||||
mouseX = x * SCREEN_INFO.scale
|
mouseX = x * SCREEN_INFO.scale
|
||||||
mouseY = y * SCREEN_INFO.scale
|
mouseY = y * SCREEN_INFO.scale
|
||||||
|
if (isWaitingLongPress) {
|
||||||
|
val delta = abs(oldX - mouseX) + abs(oldY - mouseY)
|
||||||
|
Log.d(logTag,"delta:$delta")
|
||||||
|
if (delta > 8) {
|
||||||
|
isWaitingLongPress = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// left button down ,was up
|
// left button down ,was up
|
||||||
if (mask == LIFT_DOWN) {
|
if (mask == LIFT_DOWN) {
|
||||||
|
isWaitingLongPress = true
|
||||||
|
timer.schedule(object : TimerTask() {
|
||||||
|
override fun run() {
|
||||||
|
if (isWaitingLongPress) {
|
||||||
|
isWaitingLongPress = false
|
||||||
|
leftIsDown = false
|
||||||
|
endGesture(mouseX, mouseY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, LONG_TAP_DELAY * 4)
|
||||||
|
|
||||||
leftIsDown = true
|
leftIsDown = true
|
||||||
startGesture(mouseX, mouseY)
|
startGesture(mouseX, mouseY)
|
||||||
return
|
return
|
||||||
@ -83,10 +95,13 @@ class InputService : AccessibilityService() {
|
|||||||
|
|
||||||
// left up ,was down
|
// left up ,was down
|
||||||
if (mask == LIFT_UP) {
|
if (mask == LIFT_UP) {
|
||||||
|
if (leftIsDown) {
|
||||||
leftIsDown = false
|
leftIsDown = false
|
||||||
|
isWaitingLongPress = false
|
||||||
endGesture(mouseX, mouseY)
|
endGesture(mouseX, mouseY)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (mask == RIGHT_UP) {
|
if (mask == RIGHT_UP) {
|
||||||
performGlobalAction(GLOBAL_ACTION_BACK)
|
performGlobalAction(GLOBAL_ACTION_BACK)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user