Index: chromeos/accelerometer/accelerometer_reader.cc |
diff --git a/chromeos/accelerometer/accelerometer_reader.cc b/chromeos/accelerometer/accelerometer_reader.cc |
index 340ba18856cddb06727db4dac7781ba448c1fc05..9a91383a88d61b04705967e0b17f02c36c44ecc1 100644 |
--- a/chromeos/accelerometer/accelerometer_reader.cc |
+++ b/chromeos/accelerometer/accelerometer_reader.cc |
@@ -58,6 +58,10 @@ const int kDelayBetweenReadsMs = 100; |
// 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; |
+ |
// Reads |path| to the unsigned int pointed to by |value|. Returns true on |
// success or false on failure. |
bool ReadFileToInt(const base::FilePath& path, int* value) { |
@@ -206,12 +210,20 @@ void AccelerometerReader::Initialize( |
void AccelerometerReader::AddObserver(Observer* observer) { |
observers_.AddObserver(observer); |
+ observer->OnAccelerometerUpdated(update_); |
} |
void AccelerometerReader::RemoveObserver(Observer* observer) { |
observers_.RemoveObserver(observer); |
} |
+bool AccelerometerReader::IsReadingStable(const ui::AccelerometerUpdate& update, |
+ ui::AccelerometerSource source) { |
+ return update.has(source) && |
+ std::abs(update.get(source).Length() - kMeanGravity) <= |
+ kDeviationFromGravityThreshold; |
+} |
+ |
void AccelerometerReader::OnInitialized( |
scoped_refptr<AccelerometerReader::Configuration> configuration, |
bool success) { |