studio rotacion programacion para pantalla orientacion móviles fotos editar detectar desarrollo curso celular cambio aplicaciones android default landscape portrait

rotacion - Averigüe si el dispositivo Android es vertical u horizontal para un uso normal.



orientacion pantalla android studio (7)

¿Hay alguna forma de averiguar si un dispositivo es vertical u horizontal de forma predeterminada? Me refiero a la forma en que normalmente usas el dispositivo.

La mayoría de los teléfonos tienen una pantalla de retratos para uso normal, pero ¿hay alguna bandera para averiguarlo?


En tu actividad, haz esto:

if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

por ejemplo...


Gracias a @Codeversed, cuya excelente respuesta está muy cerca de funcionar (pero NO como se muestra), tengo una MainActivity que funciona bien. Todo lo que se necesita hacer es mover. .enable a donde se puede ejecutar FUERA del bloque on myOrientationEventListener , como inmediatamente después de la declaración de myOrientationEventListener .

import android.app.Activity; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import android.view.OrientationEventListener; public class MainActivity extends Activity { public static boolean PORTRAIT_MODE = true; OrientationEventListener myOrientationEventListener ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { @Override public void onOrientationChanged(int orientation) { PORTRAIT_MODE = ((orientation < 100) || (orientation > 280)); Log.w("Orient", orientation + " PORTRAIT_MODE = " + PORTRAIT_MODE); } }; Log.w("Listener", " can detect orientation: " + myOrientationEventListener.canDetectOrientation() + " "); myOrientationEventListener.enable(); } }


No estoy seguro si esto ayudará, pero este es un ejemplo rápido que escribí que te mostrará cómo tener un oyente ... lo que te permitirá saber en qué orientación te encuentras.

...textviewOrientation = (TextView)findViewById(R.id.textView1); myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL){ @Override public void onOrientationChanged(int arg0) { textviewOrientation.setText("Orientation: " + String.valueOf(arg0)); myOrientationEventListener.enable(); if ((arg0 < 100) || (arg0 > 280)){ setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } else { setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } };... ...@Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); myOrientationEventListener.disable(); }...



Tuve un problema similar. Lo resolvió comparando valores de rotación y orientación. No es necesario utilizar sensores ni auditores, simplemente llame isDefaultLandscape método isDefaultLandscape siempre que lo desee.

private boolean isDefaultLandscape(final Context context) { Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int rotation = display.getRotation(); int orientation = context.getResources().getConfiguration().orientation; switch (rotation) { case Surface.ROTATION_180: case Surface.ROTATION_0: { return orientation == Configuration.ORIENTATION_LANDSCAPE; } default: { return orientation == Configuration.ORIENTATION_PORTRAIT; } } }


// Current orientation public boolean landscape = false; public boolean isLandscape(){ DisplayMetrics displaymetrics = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; int height = displaymetrics.heightPixels; if(width<height){ landscape = false; } else{ landscape = true; } return landscape; }


package com.android.portraitandlandscape; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Display; import android.widget.Toast; public class PortraitLandScape extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); Log.v("log_tag", "display width is "+ width); Log.v("log_tag", "display height is "+ height); if(width<height){ Toast.makeText(getApplicationContext(),"Device is in portrait mode",Toast.LENGTH_LONG ).show(); } else{ Toast.makeText(getApplicationContext(),"Device is in landscape mode",Toast.LENGTH_LONG ).show(); } } }

Puede probar este código para verificar si el dispositivo está en horizontal o en vertical.