Sensor related changes for NDK.

i) ASensorManager_getDefaultSensor returns a wake-up/non wake-up sensor
      depending on the type.
   ii) Add ASensor_isWakeUpSensor and ASensorManager_getDefaultSensorEx
       methods.
Bug : 16399898
Change-Id: I1a86fb8d9de23039fdf41679d1487e1cd761a9d0
This commit is contained in:
Aravind Akella 2014-08-05 14:53:07 -07:00
parent a02e9484be
commit b37ba399c1
2 changed files with 25 additions and 2 deletions

View File

@ -210,10 +210,17 @@ int ASensorManager_getSensorList(ASensorManager* manager, ASensorList* list);
/* /*
* Returns the default sensor for the given type, or NULL if no sensor * Returns the default sensor for the given type, or NULL if no sensor
* of that type exist. * of that type exists.
*/ */
ASensor const* ASensorManager_getDefaultSensor(ASensorManager* manager, int type); ASensor const* ASensorManager_getDefaultSensor(ASensorManager* manager, int type);
/*
* Returns the default sensor with the given type and wakeUp properties or NULL if no sensor
* of this type and wakeUp properties exists.
*/
ASensor const* ASensorManager_getDefaultSensorEx(ASensorManager* manager, int type,
bool wakeUp);
/* /*
* Creates a new sensor event queue and associate it with a looper. * Creates a new sensor event queue and associate it with a looper.
*/ */
@ -321,6 +328,11 @@ const char* ASensor_getStringType(ASensor const* sensor);
*/ */
int ASensor_getReportingMode(ASensor const* sensor); int ASensor_getReportingMode(ASensor const* sensor);
/*
* Returns true if this is a wake up sensor, false otherwise.
*/
bool ASensor_isWakeUpSensor(ASensor const* sensor);
#ifdef __cplusplus #ifdef __cplusplus
}; };
#endif #endif

View File

@ -116,12 +116,23 @@ Sensor const* SensorManager::getDefaultSensor(int type)
{ {
Mutex::Autolock _l(mLock); Mutex::Autolock _l(mLock);
if (assertStateLocked() == NO_ERROR) { if (assertStateLocked() == NO_ERROR) {
bool wakeUpSensor = false;
// For the following sensor types, return a wake-up sensor. These types are by default
// defined as wake-up sensors. For the rest of the sensor types defined in sensors.h return
// a non_wake-up version.
if (type == SENSOR_TYPE_PROXIMITY || type == SENSOR_TYPE_SIGNIFICANT_MOTION ||
type == SENSOR_TYPE_TILT_DETECTOR || type == SENSOR_TYPE_WAKE_GESTURE ||
type == SENSOR_TYPE_GLANCE_GESTURE || type == SENSOR_TYPE_PICK_UP_GESTURE) {
wakeUpSensor = true;
}
// For now we just return the first sensor of that type we find. // For now we just return the first sensor of that type we find.
// in the future it will make sense to let the SensorService make // in the future it will make sense to let the SensorService make
// that decision. // that decision.
for (size_t i=0 ; i<mSensors.size() ; i++) { for (size_t i=0 ; i<mSensors.size() ; i++) {
if (mSensorList[i]->getType() == type) if (mSensorList[i]->getType() == type &&
mSensorList[i]->isWakeUpSensor() == wakeUpSensor) {
return mSensorList[i]; return mSensorList[i];
}
} }
} }
return NULL; return NULL;