Skip to content

Commit 66d2b4d

Browse files
committed
android: fix head gesture vertical bias by comparing both confidences
1 parent fb44f01 commit 66d2b4d

1 file changed

Lines changed: 15 additions & 20 deletions

File tree

android/app/src/main/java/me/kavishdevar/librepods/utils/GestureDetector.kt

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -367,33 +367,28 @@ fun startDetection(doNotStop: Boolean = false, onGestureDetected: (Boolean) -> U
367367
val requiredExtremes = getRequiredExtremes()
368368
Log.d(TAG, "Current required extremes: $requiredExtremes")
369369

370-
if (verticalPeaks.size + verticalTroughs.size >= requiredExtremes) {
370+
val verticalConfidence = if (verticalPeaks.size + verticalTroughs.size >= requiredExtremes) {
371371
val allExtremes = (verticalPeaks + verticalTroughs).sortedBy { it.first }
372+
calculateConfidenceScore(allExtremes, isVertical = true)
373+
} else 0.0
372374

373-
val confidence = calculateConfidenceScore(allExtremes, isVertical = true)
374-
375-
Log.d(TAG, "Vertical motion confidence: $confidence (need $minConfidenceThreshold)")
376-
377-
if (confidence >= minConfidenceThreshold) {
378-
Log.d(TAG, "\"Yes\" Gesture Detected (confidence: $confidence, extremes: ${allExtremes.size}/$requiredExtremes)")
379-
return true
380-
}
381-
}
382-
383-
if (horizontalPeaks.size + horizontalTroughs.size >= requiredExtremes) {
375+
val horizontalConfidence = if (horizontalPeaks.size + horizontalTroughs.size >= requiredExtremes) {
384376
val allExtremes = (horizontalPeaks + horizontalTroughs).sortedBy { it.first }
377+
calculateConfidenceScore(allExtremes, isVertical = false)
378+
} else 0.0
385379

386-
val confidence = calculateConfidenceScore(allExtremes, isVertical = false)
380+
Log.d(TAG, "Confidence: vertical=$verticalConfidence horizontal=$horizontalConfidence (need $minConfidenceThreshold)")
387381

388-
Log.d(TAG, "Horizontal motion confidence: $confidence (need $minConfidenceThreshold)")
382+
val maxConfidence = max(verticalConfidence, horizontalConfidence)
383+
if (maxConfidence < minConfidenceThreshold) return null
389384

390-
if (confidence >= minConfidenceThreshold) {
391-
Log.d(TAG, "\"No\" Gesture Detected (confidence: $confidence, extremes: ${allExtremes.size}/$requiredExtremes)")
392-
return false
393-
}
385+
return if (verticalConfidence >= horizontalConfidence) {
386+
Log.d(TAG, "\"Yes\" Gesture Detected (vertical=$verticalConfidence, horizontal=$horizontalConfidence)")
387+
true
388+
} else {
389+
Log.d(TAG, "\"No\" Gesture Detected (vertical=$verticalConfidence, horizontal=$horizontalConfidence)")
390+
false
394391
}
395-
396-
return null
397392
}
398393

399394
private fun clearData() {

0 commit comments

Comments
 (0)