Index: ui/accelerometer/accelerometer_types.cc |
diff --git a/ui/accelerometer/accelerometer_types.cc b/ui/accelerometer/accelerometer_types.cc |
index e5aa0ea8db83e547633a137d49120f724e332ff7..970265713a82c4c84874557d5e4952531d4f4bae 100644 |
--- a/ui/accelerometer/accelerometer_types.cc |
+++ b/ui/accelerometer/accelerometer_types.cc |
@@ -4,8 +4,20 @@ |
#include "ui/accelerometer/accelerometer_types.h" |
+#include <cmath> |
+ |
namespace ui { |
+namespace { |
+ |
+// The mean acceleration due to gravity on Earth in m/s^2. |
+const float kMeanGravity = 9.80665f; |
+ |
+// The maximum deviation from the acceleration expected due to gravity under |
+// which to detect hinge angle and screen rotation in m/s^2 |
+const float kDeviationFromGravityThreshold = 1.0f; |
+} |
+ |
AccelerometerReading::AccelerometerReading() : present(false) { |
} |
@@ -18,4 +30,10 @@ AccelerometerUpdate::AccelerometerUpdate() { |
AccelerometerUpdate::~AccelerometerUpdate() { |
} |
+bool AccelerometerUpdate::IsReadingStable(AccelerometerSource source) const { |
+ return has(source) && |
+ std::abs(get(source).Length() - kMeanGravity) <= |
+ kDeviationFromGravityThreshold; |
+} |
+ |
} // namespace ui |