Я разрабатываю приложение, которое использует TYPE_STEP_DETECTOR. Я хочу определить, идет ли пользователь, даже когда экран телефона выключен. Но датчик TYPE_STEP_DETECTOR не работает, когда экран выключен. Поэтому я использую PowerManager/WakeLock, чтобы сделать CPU не спящим. Но он ВСЕ НЕ РАБОТАЕТ. Для сравнения, я добавляю слушателя магнитного датчика и прослушивателя детектора ступени к моему демонстрационному приложению, когда экран включен, оба из них могут получать данные, но когда экран выключен, только магнитный датчик может получать данные.Использовать TYPE_STEP_DETECTOR при выключенном экране
PowerManager manager = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
mWakeLock.acquire();
Тогда:
stepDetectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
sensorManager.registerListener(stepDetectorListener, stepDetectorSensor, SensorManager.SENSOR_DELAY_NORMAL);
Тогда:
magnetSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
sensorManager.registerListener(magnetSensorListener, magnetSensor, SensorManager.SENSOR_DELAY_NORMAL);
И:
stepDetectorListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
@Override
public void onSensorChanged(SensorEvent arg0) {
//NO DATA when screen off
}
};
magnetSensorListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
@Override
public void onSensorChanged(SensorEvent arg0) {
//DATA when screen off
}
};
Большое спасибо, я попробую. И не могли бы вы сказать мне, почему датчик шага не работает, когда экран выключен? Есть ли для этого решение? – Asher
, если честно, я не знаю - никогда не пытался использовать STEP_DETECTOR в фоновом режиме –