2015-03-17 2 views
1

Я разрабатываю приложение, которое использует 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 
      } 

     }; 

ответ

0

Если вы хотите проверить, если пользователь ходит - вы должны принять совершенно разные подход. Google выпустил ActivityRecognitionApi. Эта структура позволяет отслеживать текущую активность пользователя (например, WALKING, RUNNING и другие).

Он также позволяет отслеживать активность, когда приложение находится в фоновом режиме.

+0

Большое спасибо, я попробую. И не могли бы вы сказать мне, почему датчик шага не работает, когда экран выключен? Есть ли для этого решение? – Asher

+0

, если честно, я не знаю - никогда не пытался использовать STEP_DETECTOR в фоновом режиме –

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

  • Нет связанных вопросов^_^