Объединение датчиков в Android NDK

Таким образом, в Android JAVA SDK есть средства для объединения датчиков. Он может комбинировать показания гироскопа и акселерометра для создания надежного вектора силы тяжести. Это отображается в API с типом сенсора TYPE_GRAVITY.

Теперь NDK также поддерживает датчики, например, вот пример приложения NDK, которое считывает показания акселерометра с частотой 60 Гц: Исходный код NativeActivity

Однако, судя по исходному коду датчика.h, NDK позволяет мне генерировать только следующие типы датчиков:

  • Акселерометр
  • Магнитное поле
  • Гироскоп
  • Свет
  • Близость

Таким образом, в примере кода используется ASENSOR_TYPE_ACCELEROMETER. К сожалению, ASENSOR_TYPE_GRAVITY отсутствует. Является ли это просто случаем, когда NDK выполняет только базовое подмножество SDK API?

Как я могу выполнить слияние датчиков на Android NDK? Я бы не хотел вводить значения из Java, так как я читал предупреждения о высокой загрузке ЦП при выполнении высокочастотных чтений в Java.

Спасибо.


person Bram    schedule 16.07.2014    source источник


Ответы (1)


Не уверен, что вы все еще ищете это, но недавно у меня была такая же проблема, и я просто подумал, что поделюсь тем, как я ее решил.

ASENSOR_TYPE_* определены как int, поэтому замена ASENSOR_TYPE_ACCELEORMETER на 1 по-прежнему даст вам доступ к датчику акселерометра для использования других датчиков.

http://developer.android.com/reference/android/hardware/Sensor.html

и найдите значение int для датчика, который вы хотите использовать, и используйте его вместо ASENSOR_TYPE_ACCELEROMETER. Например, чтобы использовать ГИРОСКОП, вы можете использовать 4.

или вы также можете определить свой собственный набор int, используя #define

person Ser    schedule 16.11.2014