Use libstatssocket_lazy to report stylus metrics
Report stylus prediction metrics using libstatssocket_lazy
as an interim solution while I working on untangling the
build dependency issues (b/338106546) that prevent us from using
libstatslog within libinput.
Test: `adb reboot`, then `adb logcat | egrep -i "statssocket|MotionPredictor"`
→ Shows no bootanimation linker error, and no other errors
Test: `statsd_testdrive -d 3000 718`, then draw with stylus
→ Shows reasonable metrics logged
Bug: 338106546
Bug: 311066949
Change-Id: I05ae5ffdd774d0b25cb7b2435015245d5f712c01
diff --git a/libs/input/MotionPredictorMetricsManager.cpp b/libs/input/MotionPredictorMetricsManager.cpp
index cda39ce..ccf018e 100644
--- a/libs/input/MotionPredictorMetricsManager.cpp
+++ b/libs/input/MotionPredictorMetricsManager.cpp
@@ -21,6 +21,9 @@
#include <algorithm>
#include <android-base/logging.h>
+#ifdef __ANDROID__
+#include <statslog_libinput.h>
+#endif // __ANDROID__
#include "Eigen/Core"
#include "Eigen/Geometry"
@@ -44,9 +47,20 @@
void MotionPredictorMetricsManager::defaultReportAtomFunction(
const MotionPredictorMetricsManager::AtomFields& atomFields) {
- // TODO(b/338106546): Fix bootanimation build dependency issue, then re-add
- // the stats_write function call here.
- (void)atomFields;
+#ifdef __ANDROID__
+ android::libinput::stats_write(android::libinput::STYLUS_PREDICTION_METRICS_REPORTED,
+ /*stylus_vendor_id=*/0,
+ /*stylus_product_id=*/0,
+ atomFields.deltaTimeBucketMilliseconds,
+ atomFields.alongTrajectoryErrorMeanMillipixels,
+ atomFields.alongTrajectoryErrorStdMillipixels,
+ atomFields.offTrajectoryRmseMillipixels,
+ atomFields.pressureRmseMilliunits,
+ atomFields.highVelocityAlongTrajectoryRmse,
+ atomFields.highVelocityOffTrajectoryRmse,
+ atomFields.scaleInvariantAlongTrajectoryRmse,
+ atomFields.scaleInvariantOffTrajectoryRmse);
+#endif // __ANDROID__
}
MotionPredictorMetricsManager::MotionPredictorMetricsManager(