OSDN Git Service

Check for the presence of accel and magnetometer sensors before adding AOSP fusion...
authorAravind Akella <aakella@google.com>
Tue, 21 Jul 2015 00:29:33 +0000 (17:29 -0700)
committerChenjie Luo <cjluo@google.com>
Wed, 22 Jul 2015 06:27:05 +0000 (06:27 +0000)
Bug: 22502485
Change-Id: I3d9018649302b98004e4e216b2173e8411a08501
(cherry picked from commit f504789dd3b3073de176fd2fa09dd9fc9de5bc1f)

services/sensorservice/SensorService.cpp

index c316ef6..30ec458 100644 (file)
@@ -82,7 +82,7 @@ void SensorService::onFirstRef()
         ssize_t count = dev.getSensorList(&list);
         if (count > 0) {
             ssize_t orientationIndex = -1;
-            bool hasGyro = false;
+            bool hasGyro = false, hasAccel = false, hasMag = false;
             uint32_t virtualSensorsNeeds =
                     (1<<SENSOR_TYPE_GRAVITY) |
                     (1<<SENSOR_TYPE_LINEAR_ACCELERATION) |
@@ -92,6 +92,12 @@ void SensorService::onFirstRef()
             for (ssize_t i=0 ; i<count ; i++) {
                 registerSensor( new HardwareSensor(list[i]) );
                 switch (list[i].type) {
+                    case SENSOR_TYPE_ACCELEROMETER:
+                        hasAccel = true;
+                        break;
+                    case SENSOR_TYPE_MAGNETIC_FIELD:
+                        hasMag = true;
+                        break;
                     case SENSOR_TYPE_ORIENTATION:
                         orientationIndex = i;
                         break;
@@ -115,7 +121,7 @@ void SensorService::onFirstRef()
             // build the sensor list returned to users
             mUserSensorList = mSensorList;
 
-            if (hasGyro) {
+            if (hasGyro && hasAccel && hasMag) {
                 Sensor aSensor;
 
                 // Add Android virtual sensors if they're not already