Cómo detectar la orientación del dispositivo Android?

¿Es posible simple detectar la orientación actual del dispositivo android, sin programar un oyente y manejar la matriz de posición? En mi aplicación sólo quiero conocer la orientación actual – vertical u horizontal – en este momento. Sin embargo, no quiero escuchar eventos de axiometría u otros eventos.

Utilice el método getRotation :

 Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int rotation = display.getRotation(); 

De la documentación:

Devuelve la rotación de la pantalla de su orientación "natural". El valor devuelto puede ser Surface.ROTATION_0 (sin rotación), Surface.ROTATION_90 , Surface.ROTATION_180 o Surface.ROTATION_270 . Por ejemplo, si un dispositivo tiene una pantalla naturalmente alta y el usuario la ha girado de lado para entrar en una orientación horizontal, el valor devuelto aquí puede ser Surface.ROTATION_90 o Surface.ROTATION_270 dependiendo de la dirección en la que se giró. El ángulo es la rotación de los gráficos dibujados en la pantalla, que es la dirección opuesta a la rotación física del dispositivo. Por ejemplo, si el dispositivo se gira 90 grados en sentido contrario a las agujas del reloj, para compensar el renderizado se girará 90 grados en el sentido de las agujas del reloj y por lo tanto el valor devuelto aquí será Surface.ROTATION_90 .

Tenga en cuenta que getRotation fue introducido desde Android 2.2. Use getOrientation si su objetivo son dispositivos antiguos.

También puedes usar:

 getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE 

Hay un buen artículo sobre este tema que es un tener para leer: One Screen Turn Merece otro

Sólo necesitas conocer la altura y el ancho de tu lienzo … tu superficie … tu monitor … etc.

Quizás usted puede conseguirlo con:

 if (canvas.getHeight()>canvas.getWidth() ) { //portrait } else { //landscape } 

Creo que la manera más segura y más fácil es agregar una etiqueta para algún elemento de su actividad en XML. Por ejemplo, establezca la etiqueta del viewpager en "retrato" en el diseño vertical y ajústelo en "paisaje" en el modo horizontal. A continuación, en su cheque oncreate para esa etiqueta como así:

 if(mViewpager.getTag().equals("portrait")) // is in portrait else // is in landscape 

Esto puede no ser relevante, pero si por casualidad necesitas saber esto porque quieres bloquear el dispositivo en su orientación actual, puedes alternar entre las dos líneas siguientes de código.

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 
  • OnConfigurationChanged no se llama la primera vez
  • Visualización de imágenes de la tarjeta sd en gridview android
  • ¿Cómo puedo especificar diferentes diseños para orientaciones de retrato y de paisaje?
  • Android onConfigurationChanged () no se llama en Actividad
  • Cómo cargar el archivo xml diferente en el cambio de orientación en android
  • Android SensorManager.java getOrientation y algoritmo getRotationMatrix
  • ¿Cómo detectar el paisaje izquierdo (normal) contra el derecho del paisaje (reverso) con la ayuda para los dispositivos naturales del paisaje?
  • Android: orientación manual de la pantalla sin reiniciar la actividad?
  • La aplicación se bloquea después de cambiar la orientación de la pantalla
  • Android: varias preguntas de API de cámara
  • orientación de la cámara en android 2.3.6
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.