Получение типа датчиков на устройстве Android (до уровня API 20)

Я хочу знать, какие датчики есть на данном Android-устройстве. До уровня API 20 функция sensor.getTypeString() была недоступна. Однако я могу получить целочисленный тип, используя sensor.getType().

Я могу составить список типов ("TYPE_ACCELEROMETER", "TYPE_AMBIENT",...), но мне как-то нужно определить значение Sensor.XXX для каждого типа.

Я предполагал, что такое выражение, как Sensor[sensorType] (где sensorType — это строка, такая как «TYPE_ACCELEROMETER»), будет работать, но Java не согласен со мной в этом. Он жалуется, что Sensor не является переменной.

Я знаю, что могу использовать оператор switch или серию операторов if (псевдокод):

int type = sensor.getType();
if (type == Sensor.TYPE_ACCELEROMETER) {
  return "TYPE_ACCELEROMETER";
} else if (type == TYPE_AMBIENT) {
  return "TYPE_AMBIENT";
} else
  ...
}

Можете ли вы порекомендовать более элегантный способ добиться этого?


person James Newton    schedule 26.10.2014    source источник


Ответы (1)


Вы можете использовать метод public List<Sensor> getSensorList (int type) в классе SensorManager, переданный в Sensor.TYPE_ALL, чтобы получить все доступные датчики в устройстве.

person Hoan Nguyen    schedule 26.10.2014