Builds the Debug APK and runs unit tests on push, using the Android
SDK/NDK toolchain installed on the team19 VM (Goal 2 of the course's
VM onboarding). Runs on Jenkins at http://51.79.242.163:5001.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
distributionSha256Sum was a typo/copy-paste error from whoever bumped
the Gradle version on master, not the real checksum for gradle-9.6.0-bin.zip.
Verified the correct value directly against Gradle's own published
checksum at downloads.gradle.org, and it matches what a fresh download
of the distribution actually hashes to. The wrong value was blocking
gradlew from building at all.
Extends pose angle tracking with knee bend (hip-knee-ankle), then uses
it alongside the existing elbow/shoulder angles in a new
PoseStageAdvisor to give a short live cue for whichever step of the
approach is in progress: push-away on step 2, downswing on step 3,
backswing on step 4, and knee-bend/arm-extension on the final step.
Thresholds are starting defaults, not measured coaching data, and are
expected to be retuned against real approach footage.
Also fixes a layout bug found while testing this live: the new
feedback text was chained via ConstraintLayout's toBottomOf to the
step banner above it, so whenever that banner was hidden (GONE) the
feedback text rendered at its collapsed zero-height position instead
of staying put, landing on top of the recording indicator. Both now
sit in a plain vertical LinearLayout, which collapses GONE children
correctly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Shows a live banner as each step of the approach is counted, ending in
"FINAL POSITION - RELEASE!" once the 5th footfall lands. Also fixes
LiveStepDetector's peak-prominence check, which compared a candidate
footfall only to its immediate neighboring frame and silently dropped
real steps that landed across several closely-spaced frames; it now
tracks the true rise/fall trough on each side instead. Switches
PoseAnalyzer to ML Kit's faster base pose model (the accurate model was
starving the peak detector of frames on unaccelerated hardware), and
makes LiveStepDetector's stillness-based reset toggleable, currently
off for easier testing against recorded reference clips.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>