0

Мне нужно выяснить способ обхода данных сенсормана на Android (в частности данные акселерометра). Я понятия не имею, как действовать, поскольку я относительно новичок в Android. Мне нужно подавать фиктивные данные датчиков (желательно из текстового файла на SD-карте), чтобы заменить фактические данные сенсормана.Как обходить данные SensorManager с данными Dummy на Android

Моя конечная цель - использовать это для тестирования приложения, которое использует данные акселерометра для принятия решений.

Я должен иметь возможность подавать фиктивные данные всем приложениям, запрашивающим данные датчика. Любая помощь или руководство будут оценены.

PS: Я хотел бы добиться этого на Android-телефоне Nexus-5.

ответ

1

SensorManager предоставляет данные от датчика через SensorEventListener. Запись датчика содержит среди других массив поплавков. В случае Accelerometer есть 3 числа с плавающей точкой, указывающие значения ускорения по оси X, Y и Z. Поэтому в рамках реализации SensorEventListener вы можете переписать эти значения с помощью фиктивных, которые вам нужны для тестирования.

@Override 
public void onSensorChanged(SensorEvent event) { 

     int type  = event.sensor.getType(); 
     if(type == Sensor.TYPE_ACCELEROMETER){ 
      float result[] = event.values; 
      // modify the values here 
     } 

} 

EDIT: Для обеспечения скорости генерации записи вы можете указать его на методе SensorManager «s:

registerListener(this, sensor, rate_in_microseconds); 

однако, поскольку документация указывает here, что представленная ставка только намек и не гарантирует частота событий.

События датчика скорости передаются по адресу. Это всего лишь намек на систему. События могут быть получены быстрее или медленнее, чем указанная ставка. Обычно события получают быстрее. Значение должно быть одним из SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME или SENSOR_DELAY_FASTEST или желаемой задержки между событиями в микросекундах. Задание задержки в микросекундах работает только с Android 2.3 (уровень API 9). Для более ранних выпусков вы должны использовать одну из констант SENSOR_DELAY_. *

+0

Если я хочу отредактировать это с помощью фиктивных данных - как я могу это сделать? И как я могу сделать это доступным для всех приложений, запрашивающих это на уровне приложения на Android? Я хочу знать, должен ли я что-то изменить на самом коде Android, если да - как мне это сделать? – sudhishkr

+2

Насколько я знаю, вы не можете предоставить всем приложениям данные фиктивных датчиков. вы можете сделать это для своего приложения – eldjon

+0

Как я могу обрабатывать разные ставки запросов? Например: мое приложение может запрашивать данные ускорения с частотой 20 Гц или 50 Гц, как я могу передать данные с умом? Я стараюсь, что вы предложили .. – sudhishkr