2015-02-12 2 views
0

Какой был бы лучший способ введения задержки в показаниях акселерометра приложения для Android. Этот код будет работать в службе намерений, и он будет работать в течение длительных периодов времени (минимум 3-6 часов). Я бы хотел сделать его ресурсоэффективным. Я сейчас использую Thread.Sleep(), и мне было интересно, будет ли лучший способ сделать это.Чтение данных акселерометра в Android

Также в примере, представленном в документации, они используют фильтр верхних частот для фильтрации силы тяжести. Но можно ли считать сумму всех показаний по 3 осям более термальной, чем 10, и просто вычесть это значение из суммы? (Меня интересует чистое ускорение по телефону не по направлениям).

Спасибо!

ответ

2

Уважаемый бог НЕ используйте сон, чтобы задержать показания акселерометра. Это фактически не задерживает показания, это просто заставит вас реагировать на них медленнее - система все равно будет делать показания с одинаковой скоростью и, фактически, ставит их в очередь. Если вы хотите менее частые показания, укажите это, когда вы настраиваете слушателя вашего датчика. Он принимает частотный параметр.

Вы бы не суммировали 3 и не вычитали 10 - вы бы суммировали их квадраты и вычитали 100 (точнее, 9.8^2). Но даже это не совсем правильно, поскольку датчики не идеальны, а устройство для отдыха может не читать ровно 9,8 (особенно, если вы не находитесь на уровне моря - гравитация в Денвере меньше, чем в Нью-Йорке) , Вместо этого вы должны взять долгосрочный средний показатель и узнать, что именно это устройство читает в покое. Какой может быть фильтр высоких частот, хотя я должен был убедиться, что код точно знает.

+0

http://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors-motion-linear Вот ссылка на документацию. Было бы очень полезно, если бы вы могли взглянуть на него. Думаю, мне придется добавить в приложение шаг калибровки. У меня были сомнения относительно сна. Спасибо, что подтвердили это. Я хотел бы знать, что есть ли способ настроить задержку между чтениями? – user3927312

+0

Когда вы вызываете registerListener, третий параметр - это задержка. Если вам нужно работать на Android 2.2 или ниже, есть 3 константы, которые вы можете выбрать между ними. На 2,3 и выше вы также можете передать значение в микросекундах для задержки между показаниями. –

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