propagate sensor event rate properly

Change-Id: I32e67d30e4295285a6827956cc8161b2025d70bc
diff --git a/include/gui/SensorEventQueue.h b/include/gui/SensorEventQueue.h
index bb03c12..ad36dac 100644
--- a/include/gui/SensorEventQueue.h
+++ b/include/gui/SensorEventQueue.h
@@ -62,10 +62,12 @@
 
     status_t enableSensor(Sensor const* sensor) const;
     status_t disableSensor(Sensor const* sensor) const;
-    status_t enableSensor(int32_t handle) const;
-    status_t disableSensor(int32_t handle) const;
     status_t setEventRate(Sensor const* sensor, nsecs_t ns) const;
 
+    // these are here only to support SensorManager.java
+    status_t enableSensor(int32_t handle, int32_t ms) const;
+    status_t disableSensor(int32_t handle) const;
+
 private:
     sp<PollLoop> getPollLoop() const;
     sp<ISensorEventConnection> mSensorEventConnection;
diff --git a/libs/gui/SensorEventQueue.cpp b/libs/gui/SensorEventQueue.cpp
index cc98656..4b46842 100644
--- a/libs/gui/SensorEventQueue.cpp
+++ b/libs/gui/SensorEventQueue.cpp
@@ -114,8 +114,12 @@
     return mSensorEventConnection->enableDisable(sensor->getHandle(), false);
 }
 
-status_t SensorEventQueue::enableSensor(int32_t handle) const {
-    return mSensorEventConnection->enableDisable(handle, true);
+status_t SensorEventQueue::enableSensor(int32_t handle, int32_t ms) const {
+    status_t err = mSensorEventConnection->enableDisable(handle, true);
+    if (err == NO_ERROR) {
+        mSensorEventConnection->setEventRate(handle, ms2ns(ms));
+    }
+    return err;
 }
 
 status_t SensorEventQueue::disableSensor(int32_t handle) const {