2015-01-25 6 views
5

Я разрабатываю приложение для Android, которое записывает инерционные данные на смартфон, а затем обрабатывает его. Различные устройства Android имеют разные типы поведения в зависимости от прошивки, связывающей инерционные датчики с Android, и это кристально чистое. Одна вещь, на которую я не могу ответить, хотя, только то, что только moto g 2nd gen еще показал, что, когда приложение записывается, у меня есть значительно различное количество образцов датчиков?Неравномерное количество образцов между акселерометром, гироскопом и магнитометром на Android

Например, несколько второй записи, и я вижу:

  • ~ 6000 образцов для гироскопом

  • ~ 5200 образцов для акк

  • ~ 2000 образцов для магнитометра

Предположим также, что деятельность, которую я выполняю запись влияет на все датчики во все времена, и поэтому я ожидал бы, что функция onSensorChange будет называться равномерно. Это происходит для всех других смартфонов, которые я пробовал (5 или 6 разных).

Любые предложения о том, почему магнитофоны, как правило, не изменяют значения так часто, как другие датчики, чтобы onSensorChange записывал его?

Очевидный ответ из-за прошивки, но знаете ли вы, как смягчить эффект, который я вижу?

Спасибо, ребята!

ответ

2

Этот вопрос действительно старый, но я решил ответить на это ради сообщества:

я работаю как разработчик приложений при запуске, который специализируется на обработке датчиков на смартфонах. У нас есть пара 2-го поколения Moto G, и мы обнаружили, что они делают очень плохую работу по обеспечению равномерной частоты дискретизации как для одного датчика, так и для датчиков.

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

т.е..)

Accel (3-axis) | Gyro (3-axis) 
0,0,0|0,0,0 
<new accelerometer sample> 
1,1,1|0,0,0 
<5 gyro samples and 1 accelerometer> 
2,2,2|5,5,5 
... 

В любом случае, надеюсь, что это поможет кому-то!

TLDR; 2-й Gen Moto G имеет несогласованную частоту дискретизации как для одного датчика, так и для нескольких датчиков.