From a38c683cd2e1beea2036c777887376258520af85 Mon Sep 17 00:00:00 2001 From: Finn M Glas Date: Thu, 20 Aug 2020 21:33:41 +0200 Subject: [PATCH] Buffer pointercount In order to find out how many presses there were. Currently displayed using a Toast in HomeActivity. --- .../java/com/finnmglas/launcher/HomeActivity.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt b/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt index fafb5a2..2e2a54a 100644 --- a/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/HomeActivity.kt @@ -7,6 +7,7 @@ import android.os.AsyncTask import android.os.Bundle import android.provider.MediaStore import android.view.* +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GestureDetectorCompat import com.finnmglas.launcher.tutorial.TutorialActivity @@ -32,6 +33,9 @@ import com.finnmglas.launcher.BuildConfig.VERSION_NAME class HomeActivity: UIObject, AppCompatActivity(), GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { + private var bufferedPointerCount = 1 // how many fingers on screen + private var pointerBufferTimer = Timer() + private lateinit var mDetector: GestureDetectorCompat // timers @@ -141,6 +145,9 @@ class HomeActivity: UIObject, AppCompatActivity(), override fun onFling(e1: MotionEvent, e2: MotionEvent, dX: Float, dY: Float): Boolean { + Toast.makeText(this, bufferedPointerCount.toString(), Toast.LENGTH_SHORT) + .show() + val width = displayMetrics.widthPixels val height = displayMetrics.heightPixels @@ -202,6 +209,16 @@ class HomeActivity: UIObject, AppCompatActivity(), } override fun onTouchEvent(event: MotionEvent): Boolean { + + // Buffer / Debounce the pointer count + if (event.pointerCount > bufferedPointerCount) { + bufferedPointerCount = event.pointerCount + pointerBufferTimer = fixedRateTimer("pointerBufferTimer", true, 200, 1000) { + bufferedPointerCount = 1 + this.cancel() // a non-recurring timer + } + } + return if (mDetector.onTouchEvent(event)) { false } else { super.onTouchEvent(event) } }