plantilla mercado libre google comprar casero cardboard app java android augmented-reality google-cardboard

java - mercado - google cardboard plantilla



Sensores VR de Google Cardboard (3)

Estoy usando Google Cardboard (su clase HeadTracker ) para detectar ciertas cosas sobre la rotación del dispositivo en una aplicación AR. Funciona muy bien.

Sin embargo, en algunos dispositivos, no funciona (no pasa nada). Supongo que esto es porque no tienen los sensores necesarios. Mis preguntas:

1) Quiero detectar en tiempo de ejecución si el dispositivo actual es compatible con el HeadTracker, es decir, tiene los sensores necesarios disponibles. Para esto, necesito saber qué sensores utiliza HeadTracker para poder consultar si esos sensores están presentes. ¿Qué son estos sensores?

2) ¿Hay una manera de especificar los sensores necesarios en AndroidManifest? Por lo que puedo ver, no hay manera. Por lo tanto, si un usuario descarga mi aplicación, la aplicación tendrá que informar al usuario en tiempo de ejecución que su dispositivo no es compatible. Esto no es bueno. ¿Alguna idea?


El auricular de Google Cardboard no funciona solo con el acelerómetro, necesita el giroscopio.

El acelerómetro puede detectar fuerzas aplicadas al teléfono. Eso incluye leer la atracción gravitatoria de la Tierra, para que el teléfono pueda estimar dónde está "abajo". Pero el acelerómetro no puede decirte de forma precisa cuál es tu orientación en el espacio 3d, solo puede aproximarse a eso basándose en las fuerzas que lee.

Esa es una precisión demasiado baja para la realidad virtual, por lo que necesita un giroscopio.

Si está decidido a hacer que funcione en su teléfono no giroscópico, puede escribir una parte de su propio código que se aproxime a la orientación del teléfono basándose en los datos del acelerómetro, pero tenga en cuenta que estará muy lejos de ser una experiencia VR realmente satisfactoria.


El sitio web de Google cardboard tiene una lista de compatibilidad de dispositivos: parece algo incompleto, así que intenté echar un vistazo al código fuente de Cardboard.jar. HeadTracker.java parece tener la siguiente lógica:

SensorManager sensorManager = (SensorManager)HeadTracker.this.mContext.getSystemService("sensor"); for (int sensorType : HeadTracker.INPUT_SENSORS) { Sensor sensor = sensorManager.getDefaultSensor(sensorType); sensorManager.registerListener(HeadTracker.this.mSensorEventListener, sensor, 0, handler); }

Con INPUT_SENSORS definido en el mismo archivo que

{TYPE_ACCELEROMETER, TYPE_GYROSCOPE};

No estoy seguro de si HeadTracker puede funcionar en teléfonos con solo uno de esos sensores. Mi conjetura es que ambos son necesarios.

su aplicación puede requerir ciertos censores para ejecutar (o incluso ser visible en el mercado de Android) con las siguientes líneas en su manifiesto:

<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" /> <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true" />

También puede verificar si los sensores están disponibles para su aplicación en tiempo de ejecución utilizando la función public Sensor getDefaultSensor (int type) .