Андроид-детектор – доступен гироскоп

Как определить, имеет ли устройство андроида гироскоп? В настоящее время я использую следующий метод, чтобы определить, доступен ли гироскоп. Если гироскоп недоступен, используйте акселерометр.

SensorManager mgr = (SensorManager) getSystemService(SENSOR_SERVICE); List<Sensor> sensors = mgr.getSensorList(Sensor.TYPE_ALL); for (Sensor sensor : sensors) { Log.i("sensors",sensor.getName()); if(sensor.getName().contains("Gyroscope")){ try{ mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_FASTEST); return; }catch(Exception e){ } } } mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST); 

Однако некоторые из моих пользователей приложений жалобы они не могут использовать гироскоп. Есть ли какие-либо проблемы с кодом?

Вы можете просто использовать функции System Manager для диспетчера пакетов, чтобы проверить, есть ли у него в нем гироскоп:

 PackageManager packageManager = getPackageManager(); boolean gyroExists = packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_GYROSCOPE); 

Ваш текущий код может не работать на некоторых устройствах, так как имя датчика не гарантирует Gyroscope в нем Gyroscope .

Использовать это:

 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); if(mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null) { // Sensor FOUND } else { //Sensor NOT FOUND } 

Вы должны использовать

 sensor.getType() == Sensor.TYPE_GYROSCOPE 

Вместо вашего текущего sensor.getName().contains("Gyroscope") чтобы определить, является ли датчик гироскопом.

Это мой метод:

 public static boolean existGyroscope(Context ctx){ SensorManager mSensorManager = (SensorManager) ctx.getSystemService(Context.SENSOR_SERVICE); if(mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) != null){ return true; }else{ return false; } } 

Используется во всех моих приложениях.

Intereting Posts
Android, значок тревоги в правой части области уведомлений? Какие версии Android и iOS поддерживают совместимость с Adobe AIR 3.0? Не удалось возобновить ошибку Действия Уменьшить буферизацию видео Выберите каталог / файл с помощью Intent.ACTION_CREATE_DOCUMENT (Storage Access Framework) Неизвестная ошибка BaseGameUtils, onConnectionFailed: результат 4 Как я могу сделать жирным шрифтом и подчеркнуть строку динамически в коде Android? Как опубликовать твит, используя официальное приложение Twitter, используя намерение, а затем возвращая вам приложение? Android: как программно крутить только верхние углы растрового изображения? Просмотр анимации не меняет зону касания Разный открытый ключ RSA, созданный на Android Открыть приложение в WebView Помощник IAB не настроен. Невозможно выполнить операцию: queryInventory Конструкция материала: ширина ящика Nav Данные не соответствуют размеру блока в кодовом имени BouncyCastle (без прокладки)