Detectar si el video se tomó en modo retrato / paisaje
Me gustaría confirmar que lo que estoy haciendo es de hecho la forma correcta como algunos elementos se comportan inesperado.
En primer lugar, tengo un diseño de paisaje y retrato, según entiendo, haciendo esto detectará automáticamente si el teléfono está en modo retrato / paisaje:
- Mis opiniones se están restableciendo en el cambio de orientación
- ¿Cómo detectar los cambios de orientación pero dejar que el android los maneje?
- Cómo obtener los detalles de portrait_id, Landscape_id y de dominio para android desde el servidor revive
- Cómo administrar el estado de la interfaz de usuario y la pila posterior en un diseño de panel único / dual
- Cambio de orientación de Android VideoView con vídeo almacenado en búfer
- layout - activity_video_player.xml - layout-land - activity_video_player.xml
Entonces, cuando el usuario selecciona un video de la galería, compruebo si el video estaba tomando paisaje o retrato, haciendo esto (dentro de OnCreate
):
int w; int h; MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever(); mediaMetadataRetriever.setDataSource(this, videoURI); String height = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); String width = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); w = Integer.parseInt(width); h = Integer.parseInt(height); if (w > h) { this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } else { this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }
He probado esto y funciona bien, pero me di cuenta de algunos de mis elementos xml (botón de reproducción) se coloca incorrectamente.
Así que mi flujo de aplicación es:
MainActivity --> SelectvidButton --> Gallery Intent --> VideoPlayActivity
Mi pregunta
¿Es esta la forma correcta de hacer esto y si lo es, hay alguna razón por la que algunos de los elementos xml se colocan incorrectamente?
EDIT 1:
Me di cuenta de que esto sólo ocurre cuando la actividad se inicia por primera vez, si presiono el botón de volver y seleccionar el mismo video de nuevo, el diseño es perfectamente como yo quiero que sea.
EDIT 2:
También he notado que esto sólo ocurre si la actividad anterior (MainActivity) estaba en la misma orientación que el video seleccionado.
- action_image_capture reinicia la aplicación
- ¿Cómo mantener abierta la ventana emergente cuando la orientación cambia en tiempo de ejecución en Android?
- El emulador de Android no gira al paisaje
- Evitar reiniciar fragmento asynctask en cambio de orientación de pantalla
- Android en el cambio de orientación Cambiar
- Permitir rotación / paisaje en un fragmento
- Fragmentos dentro de ViewPager desaparecen cuando cambia la orientación
- Cómo funciona la restauración automática de fragmentos