From 564c2007cd9529e10776b6e024cc6cd5abe235b4 Mon Sep 17 00:00:00 2001 From: Sayed Owais Ali Date: Mon, 27 Nov 2023 23:29:02 +0530 Subject: [PATCH] Feature/bottomshett touchpoint (#58) (#59) --- navi-alfred/build.gradle | 2 +- .../java/com/navi/alfred/AlfredManager.kt | 7 +++++-- .../com/navi/alfred/model/NaviMotionEvent.kt | 6 ++++-- .../navi/alfred/utils/UserBehaviourUtils.kt | 20 ++++++++++--------- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/navi-alfred/build.gradle b/navi-alfred/build.gradle index b9c1415..cdfdb9d 100644 --- a/navi-alfred/build.gradle +++ b/navi-alfred/build.gradle @@ -6,7 +6,7 @@ plugins { id 'kotlin-parcelize' } -def VERSION_NAME = "1.0.9" +def VERSION_NAME = "1.0.10" android { namespace 'com.navi.alfred' diff --git a/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt b/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt index aef9f2e..833d178 100644 --- a/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt +++ b/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt @@ -344,9 +344,12 @@ object AlfredManager { coroutineDispatcher.executor.execute { try { if (currentTouchEvent?.action == ACTION_DOWN) { + val actionPointer = currentTouchEvent.actionIndex previousTouchEvent.action = currentTouchEvent.action - previousTouchEvent.positionX = currentTouchEvent.rawX - previousTouchEvent.positionY = currentTouchEvent.rawY + previousTouchEvent.pointerPositionX = currentTouchEvent.getX(actionPointer) + previousTouchEvent.pointerPositionY = currentTouchEvent.getY(actionPointer) + previousTouchEvent.rawX = currentTouchEvent.rawX + previousTouchEvent.rawY = currentTouchEvent.rawY } if (currentTouchEvent?.action == ACTION_UP) { val touchEventData = diff --git a/navi-alfred/src/main/java/com/navi/alfred/model/NaviMotionEvent.kt b/navi-alfred/src/main/java/com/navi/alfred/model/NaviMotionEvent.kt index e2bf4ec..4146813 100644 --- a/navi-alfred/src/main/java/com/navi/alfred/model/NaviMotionEvent.kt +++ b/navi-alfred/src/main/java/com/navi/alfred/model/NaviMotionEvent.kt @@ -9,6 +9,8 @@ package com.navi.alfred.model data class NaviMotionEvent( var action: Int? = null, - var positionX: Float? = null, - var positionY: Float? = null + var pointerPositionX: Float? = null, + var pointerPositionY: Float? = null, + var rawX: Float? = null, + var rawY: Float? = null ) diff --git a/navi-alfred/src/main/java/com/navi/alfred/utils/UserBehaviourUtils.kt b/navi-alfred/src/main/java/com/navi/alfred/utils/UserBehaviourUtils.kt index 54ce0c9..16fcb5a 100644 --- a/navi-alfred/src/main/java/com/navi/alfred/utils/UserBehaviourUtils.kt +++ b/navi-alfred/src/main/java/com/navi/alfred/utils/UserBehaviourUtils.kt @@ -22,23 +22,25 @@ internal fun getTouchEvent( val pointerIndex = currentTouchEvent?.actionIndex ?: 0 val eventName = if ( - difference(currentTouchEvent?.getX(pointerIndex), previousTouchEvent?.positionX) && - difference(currentTouchEvent?.getY(pointerIndex), previousTouchEvent?.positionY) + (difference(currentTouchEvent?.getX(pointerIndex), previousTouchEvent?.pointerPositionX) && + difference(currentTouchEvent?.getY(pointerIndex), previousTouchEvent?.pointerPositionY)) || + (difference(currentTouchEvent?.rawX, previousTouchEvent?.rawX) && + difference(currentTouchEvent?.rawY, previousTouchEvent?.rawY)) ) { - properties[AlfredConstants.START_X] = previousTouchEvent?.positionX.toString() - properties[AlfredConstants.START_Y] = previousTouchEvent?.positionY.toString() + properties[AlfredConstants.START_X] = previousTouchEvent?.pointerPositionX.toString() + properties[AlfredConstants.START_Y] = previousTouchEvent?.pointerPositionY.toString() AlfredConstants.TOUCH_EVENT } else { - properties[AlfredConstants.START_X] = previousTouchEvent?.positionX.toString() - properties[AlfredConstants.START_Y] = previousTouchEvent?.positionY.toString() - properties[AlfredConstants.END_X] = currentTouchEvent?.rawX.toString() - properties[AlfredConstants.END_Y] = currentTouchEvent?.rawY.toString() + properties[AlfredConstants.START_X] = previousTouchEvent?.pointerPositionX.toString() + properties[AlfredConstants.START_Y] = previousTouchEvent?.pointerPositionY.toString() + properties[AlfredConstants.END_X] = currentTouchEvent?.getX(pointerIndex).toString() + properties[AlfredConstants.END_Y] = currentTouchEvent?.getY(pointerIndex).toString() AlfredConstants.SCROLL_EVENT } return Pair(eventName, properties) } -internal fun difference(value1: Float? = 0F, value2: Float? = 0F, threshold: Int = 100): Boolean { +internal fun difference(value1: Float? = 0F, value2: Float? = 0F, threshold: Int = 50): Boolean { return try { abs(subtractExact(value1?.toInt().orZero(), value2?.toInt().orZero())) <= threshold } catch (e: Exception) {