Два датчика доступны для одного и того же типа в Android

Я использую Samsung Galaxy S3. Когда я получил доступные датчики:

Я получил результат, как показано ниже:

 LSM330DLC 3-axis Accelerometer                    TYPE_ACCELEROMETER        
 AK8975C 3-axis Magnetic field sensor              TYPE_MAGNETIC_FIELD        
 iNemoEngine Orientation sensor                    TYPE_ORIENTATION          
 CM36651 Light sensor                              TYPE_LIGHT            
 CM36651 Proximity sensor                          TYPE_PROXIMITY            
 LSM330DLC Gyroscope sensor                        TYPE_GYROSCOPE             
 iNemoEngine Gravity sensor                        TYPE_GRAVITY               
 iNemoEngine Linear Acceleration sensor-S/W        TYPE_LINEAR_ACCELERATION   
 iNemoEngine Rotation_Vector sensor                TYPE_ROTATION_VECTOR     
 LPS331AP Pressure Sensor                          TYPE_PRESSURE            
 Rotation Vector Sensor                            TYPE_ROTATION_VECTOR        
 Gravity Sensor - software sensor                  TYPE_GRAVITY              
 Linear Acceleration Sensor                        TYPE_LINEAR_ACCELERATION   
 Orientation Sensor                                TYPE_ORIENTATION           
 Corrected Gyroscope Sensor                        TYPE_GYROSCOPE   

STMicroelectronics, по-видимому, по умолчанию, и датчики, предоставляемые Google Inc и Samsung Inc, могут быть вторичными датчиками. Когда я использовал метод getVendor (), он возвратил STMicroelectronics (являющийся аппаратным стандартным датчиком) и Samsung. Но когда я зарегистрировал оба датчика, вызывается onSensorChanged (), который с большой разницей возвращал значения ориентации (шаг, рулон и азимут).

Например, я получил следующие значения на одной отметке времени (с разницей в несколько секунд).

                         pitch:       roll:                   azimuth:
Samsung                 0.5917465    -4.212                   84.583
STMicroelectronics      0.0865345    -3.88854                 356.825

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

4

3 ответы

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

«iNemoEngine xxx» должен быть своего рода «виртуальным датчиком», реализованным Google в ICS.

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

http://electronicdesign.com/ios/understanding-virtual-sensors-sensor-fusion-context-aware-applications http://www.sensorplatforms.com/which-sensors-in-android-gets-direct-input-what-are-virtual-sensors/ http://www.thousand-thoughts.com/2012/03/android-sensor-fusion-tutorial/

2
добавлено
Как я узнаю датчик по умолчанию и какой из них я должен использовать? @madhus
добавлено автор user1741274, источник
Пожалуйста, посмотрите мой обновленный вопрос. @madhus
добавлено автор user1741274, источник

Объектом датчиков будет список всех доступных датчиков на устройстве.

Чтобы проверить конкретный датчик, используйте одну из других констант датчика, таких как TYPE_TEMPERATURE, TYPE_RELATIVE_HUMIDITY или TYPE_PRESSURE.

Существует также метод getDefaultSensor (). Передача определенной константы датчика будет также определять, доступен ли датчик на устройстве.

И если устройство имеет более одного датчика данного типа, один из датчиков будет установлен как датчик по умолчанию. Если набор датчиков по умолчанию не установлен, getDefaultSensor() вернет значение null, что означает, что датчик отсутствует.

Например, код для проверки датчика гироскопа с использованием метода getDefaultSensor() может выглядеть примерно так.

if (mSensorMgr.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null) 
{
  //Yesssss...gyroscope  sensor available
} 
else 
{
  //There's no gyroscope on this device :(
}

Надеюсь, поможет..

2
добавлено
Привет, я использовал фрагмент кода List gyro = mSensorManager.getSensorList (Sensor.TYPE_GYROSCOPE); for (int i = 0; i Google Inc и Samsung Inc (только в случае ориентации) в качестве имен поставщиков. Любое предложение, по которому лучше использовать и почему? @madhus
добавлено автор user1741274, источник

2 датчика поставляются двумя поставщиками, как указано в madhus. Его можно получить с помощью кода:

List gyro =mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); 
for(int i=0;i

Я получил поставщиков как STMicroElectronics и Google Inc для всех датчиков, кроме ориентации (Samsung Inc и STMicroElectronics). Однако, поскольку по умолчанию и аппаратный сенсор STMicroElectronics, я использую это.

0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)