Android detecta giroscopio disponible

¿Cómo puedo detectar si el dispositivo Android tiene giroscopio? Actualmente estoy usando el siguiente método para detectar si giroscopio está disponible. Si el giroscopio no está disponible, utilice el acelerómetro.

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); 

Sin embargo, algunos de mis usuarios de aplicaciones queja de que no pueden utilizar giroscopio. ¿Hay algún problema con el código?

Simplemente puede utilizar las características del sistema del gestor de paquetes para comprobar si el dispositivo tiene un giroscopio en él:

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

Es posible que su código actual no funcione en algunos dispositivos, ya que no se garantiza que el nombre del sensor contenga Gyroscope .

Utilizar esta:

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

Deberías usar

 sensor.getType() == Sensor.TYPE_GYROSCOPE 

En lugar de su actual sensor.getName().contains("Gyroscope") para determinar si el sensor es un giroscopio.

Este es mi método:

 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; } } 

Utilizado en todas mis aplicaciones.

  • Ejemplos de giroscopios Android?
  • Utilizando el giroscopio Android en Unity3d, ¿cómo puedo configurar la rotación inicial de la cámara con la rotación inicial del dispositivo móvil?
  • Manera correcta de usar SOLO Giroscopio y Acelerómetro para obtener el ángulo de corriente fiable en cualquier eje de ANDROID
  • ¿Cómo medir la velocidad del coche por teléfono con acelerómetro y giroscopio?
  • Sensores para teléfonos móviles
  • Android obtiene aceleración normalizada
  • Sensor.TYPE_ROTATION_VECTOR tiene deriva: ¿Hay una alternativa?
  • Problemas relacionados con el giroscopio con la orientación del dispositivo
  • Uso de giroscopio Android en lugar de acelerómetro. Encontré un montón de fragmentos, pero no hay código completo
  • Sensor de movimiento vertical
  • Obtener rotación y mostrar en grados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.