Ayuda natural de la orientación del sensor de Android

Estoy tratando de lograr la manera recomendada de Reto Meier para evitar que la orientación de la pantalla cambie. Las diapositivas de su charla durante Google IO (ver # 23) se pueden encontrar en Android Protips: Dónde descargar las diapositivas y los fragmentos de código .

He avanzado a través del código y de fijar los valores, pero la orientación de la pantalla todavía cambia. FYI, registro este oyente en la aplicación.

Aquí está mi código:

final SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sm.registerListener( new SensorEventListener() { @Override public void onSensorChanged(SensorEvent sensorEvent) { if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) { final WindowManager wm = (WindowManager) getApplicationContext() .getSystemService(Context.WINDOW_SERVICE); final Display display = wm.getDefaultDisplay(); int x = SensorManager.AXIS_X; int y = SensorManager.AXIS_Y; switch (display.getRotation()) { case Surface.ROTATION_90: x = SensorManager.AXIS_Y; y = SensorManager.AXIS_MINUS_X; break; case Surface.ROTATION_180: y = SensorManager.AXIS_MINUS_Y; break; case Surface.ROTATION_270: x = SensorManager.AXIS_MINUS_Y; y = SensorManager.AXIS_MINUS_X; break; case Surface.ROTATION_0: default: break; } SensorManager.remapCoordinateSystem(sensorEvent.values, x, y, new float[] {}); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_NORMAL); 

Las 30 líneas de código que actualmente no funcionan se pueden reemplazar con algunos valores XML en su archivo AndroidManifest.xml .

Todos hemos visto

 <activity android:name=".YourActivity" android:screenOrientation="portrait" ></activity> 

Y todos sabemos que no funciona bien con las tabletas que tienen una orientación por defecto de paisaje. Pero, ¿cuántos de ustedes han visto esto?

 <activity android:name=".YourActivity" android:screenOrientation="nosensor" ></activity> 

Básicamente, hace que la orientación del dispositivo no responda al sensor. Por lo tanto, si el valor predeterminado es horizontal o vertical, no cambiará. Lo he probado en mi Droid X y en un Xoom y funciona como me lo esperaba.

Espero que esto ayude a otros.

  • Orientación androide - problemas con intentos (cámara)
  • Problema de orientación de la cámara en Android
  • Obtener orientación de la imagen de MediaStore.Images.Media.DATA
  • Android SensorManager.java getOrientation y algoritmo getRotationMatrix
  • Cómo cargar el archivo xml diferente en el cambio de orientación en android
  • OpenFL toma la entrada del giroscopio del dispositivo
  • Orientación del diseño en código
  • Mantenga la posición de desplazamiento de GridView a través de la rotación de pantalla
  • android: ¿cómo conservo los datos en mi arrayadapter / listview cuando cambia la orientación?
  • FragmentActivity con ViewPager: Crash en el cambio de orientación
  • setting screenOrientation en AndroidManifest.xml no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.