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

¿Es posible detectar la orientación actual del dispositivo Android, sin progtwigr un oyente y manejar la matriz de posición? En mi aplicación, solo quiero saber la orientación actual, vertical u horizontal, en este momento. Sin embargo, no quiero escuchar eventos de axiometría u otros eventos.

Use 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 desde 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 Surface.ROTATION_90 costado para ir en una orientación horizontal, el valor devuelto aquí puede ser Surface.ROTATION_90 o Surface.ROTATION_270 dependiendo de la dirección en 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 se introdujo desde Android 2.2. Usa getOrientation si tu objective son dispositivos más antiguos.

También puedes usar:

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

Hay un buen artículo sobre este tema que es de lectura obligada: Una vuelta de pantalla se merece otra

Solo necesita saber la altura y el ancho de su canvas … su superficie … su monitor … etc.

tal vez puedas obtenerlo con:

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

Creo que la forma más segura y sencilla es agregar una etiqueta para algún elemento de tu actividad en XML. Por ejemplo, establezca la etiqueta de viewpager en “retrato” en el diseño de retrato y configúrelo en “paisaje” en en paisaje. A continuación, en su prueba de oncreate para esa etiqueta, así:

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

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

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);