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:

- 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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.