2015-05-27 1 views
1

Я использовал приведенный ниже код, чтобы проверить наличие датчика TYPE_SIGNIFICANT_MOTION.Как проверить наличие датчика TYPE_SIGNIFICANT_MOTION в устройстве Android?

SensorManager mSensorManager = (SensorManager) context 
      .getSystemService(Context.SENSOR_SERVICE); 

    List<Sensor> sensors = mSensorManager 
      .getSensorList(Sensor.TYPE_SIGNIFICANT_MOTION); 

    boolean isSensorAvailable = Boolean.valueOf(sensors.size() > 0); 

Я тестировал в трех различных устройствах. Все устройства возвращают false.

В документе doc им даны константы TYPE_SIGNIFICANT_MOTION, добавленные в API 18. Как проверить доступность этого датчика до версии до 18. Исправьте меня, чтобы получить правильный статус доступности датчика.

ответ

1

На основе документации, он предложил, чтобы проверить наличие так:

if (mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION) != null){ 
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION); 
} 

Для версии до 18 лет, она всегда будет нулевой, так как он еще не определен.

Поскольку значительные датчики движения основаны на акселерометре, причина, по которой все протестированные вами устройства возвращают ложные данные при проверке этого датчика, может заключаться в том, что производители не применяли этот программный датчик с помощью акселерометра. Но вы всегда можете реализовать нечто подобное себе.

Надеюсь, это поможет!

+0

Hi Anhong, у меня есть акселерометр, но приведенное выше значение возвращает null. Есть ли способ пробудиться от сна с помощью простого акселерометра? – ransh

+0

Наличие акселерометра не означает, что у вас есть другие типы программных датчиков - так что вы можете попробовать каждый датчик в категории и использовать доступные – Anhong

Смежные вопросы