8 votos

Permita la rotación en el modo de retrato pero no gire la pantalla externa

Para evitar que esta pregunta se marque como un duplicado, he incluido una lista de preguntas similares al final de este post con una explicación acerca de por qué mi pregunta es diferente. Por favor, lea estas razones antes de marcar esta pregunta como un duplicado.


Estoy tratando de averiguar cómo hacer que mi Nexus 5, en modo retrato, se muestre en un monitor externo, en modo retrato (conectado a través de SlimPort/HDMI).

En el modo apaisado todo está bien:

Landscape mode, monitor on left, phone on right

Sin embargo, en el modo retrato, la señal sigue emitiéndose como si estuviera destinada a ser mostrada en una pantalla apaisada, lo que no funciona en absoluto si la pantalla está en modo retrato:

Portait mode, monitors left and middle, phone on right

Puede ver aquí que tanto en el modo horizontal como en el vertical el teléfono está emitiendo la misma señal de 1920x1080, excepto que en el modo vertical el contenido de la pantalla está siendo rotado por la GPU del teléfono y se muestra como una imagen de 607x1080 en el centro de la pantalla de 1920x1080. (No es, como algunos han sugerido, la salida de una señal de 1080x1920 lo que hace que el monitor se centre. Puedes verificar esto porque al cambiar el teléfono entre paisaje y retrato se muestra una bonita animación de rotación y el monitor no pierde la sincronización como lo haría si la resolución cambiara).

Como el teléfono, cuando está en modo retrato, está rotando la imagen enviada a la pantalla externa, quiero desactivarlo, por lo que sólo sale tal cual, sin rotación. Por supuesto, esto aparecerá mal en un monitor apaisado, pero cuando rote ese monitor en modo retrato estará bien:

enter image description here

¿Hay alguna forma de desactivar esta rotación, para que una pantalla externa en modo retrato pueda mostrar el contenido del teléfono cuando también está en modo retrato?


Se han hecho preguntas similares antes, pero ninguna va tras la misma solución:

0 votos

No consigo que esto funcione. ¿Sigue funcionando la respuesta aceptada con las nuevas versiones de Android? Si es así, ¿podría explicar los pasos necesarios? Gracias

1 votos

Sí, acabo de probarlo siguiendo los comandos de la respuesta aceptada con Android 6.0.1 y funciona. Desgraciadamente la señal que sale es sólo de 1280x1024 por lo que sigue sin visualizarse correctamente en mi pantalla de 1920x1200 (la pantalla se gira correctamente en modo vertical pero hay barras negras a la izquierda y a la derecha de la pantalla vertical). Como mencioné en mi comentario en esa respuesta, sólo funciona si usted es Root, así que usé la aplicación SSH Droid para conectarse como Root, luego corrió setprop persist... allí para poder ver más claramente cualquier mensaje de error y estar seguro de que yo era el usuario Root.

6voto

James Puntos 46

Prueba estas instrucciones, usando un ordenador con adb instalado y tu teléfono conectado:

El Android Jelly Bean (4.2) bloquea la rotación del HDMI por defecto. Puedes desbloquearlo por la instrucción de este compromiso.

  1. Añade modos especiales de reflejo para fines de demostración.

  2. Supongamos que la rotación de la pantalla HDMI es un retrato.

    adb shell setprop persist.demo.hdmirotation portrait
  3. No bloquees la rotación mientras el HDMI esté conectado.

    adb shell setprop persist.demo.hdmirotationlock false
  4. Ocultar las pantallas secundarias de las aplicaciones pero seguir reflejándolas.

    adb shell setprop persist.demo.singledisplay true

Fuente: <a href="https://community.freescale.com/docs/DOC-97740" rel="nofollow">https://community.freescale.com/docs/DOC-97740</a>

2 votos

Funcionó. El cambio se movió un poco pero sigue existiendo en el último código de Marshmallow ( ver aquí ) sin embargo es necesario ser Root para poder añadir el persist.demo.hdmirotation propiedad. Si no eres el usuario Root, obtendrás un error cuando intentes establecer la propiedad. El único inconveniente es que la señal de salida es de 1280x1024 en lugar de 1920x1200, pero al menos está rotada. El siguiente paso es averiguar cómo cambiar la resolución.

0 votos

No puedo conseguir que esto funcione. después de enviar los comandos a través de adb Android sigue asumiendo que el monitor está en orientación horizontal. ¿Podría proporcionar más instrucciones paso a paso por favor (también no entendí el paso 1). ¿O es que esto ya no funciona con Android 6?

0 votos

Pruebe a ejecutar el comando de shell getprop | grep demo para confirmar que los valores que ha establecido se han almacenado correctamente.

2voto

P-Day Puntos 1

Sé que este es un post antiguo pero justo estaba lidiando con un problema similar pero tratando de pasar la pantalla de un dispositivo Pixel 2 a una pantalla vertical y me estaba encontrando con un montón de problemas. El principal problema parece ser que los Pixel 2 y 3 no parecen soportar la salida HDMI por lo que estas propiedades no resuelven el problema.

Sin embargo, pude averiguarlo siguiendo el enlace que Malvineous publicó en un comentario más arriba. Justo debajo del código que trata de la configuración persist.demo.hdmirotation hay otro ajuste llamado persist.demo.remoterotation así como una llamada persist.demo.rotationlock . Estos fueron la clave para conseguir un teléfono para emitir en modo vertical a la pantalla. Estos ajustes parecen existir tanto en la versión 8.0 como en la 9.0 de Android, aunque yo bajé mi Pixel 2 a la 8.0 en el proceso de tratar de averiguar esto y no he probado en la 9.0 todavía.

Para llegar a este punto se han tenido que dar varios pasos que se detallan a continuación.

  1. Usted necesita para desbloquear y Root su teléfono (he utilizado MagiskManager para ayudar a Root y me encontré con esta guía muy útil ya que explica un poco más en detalle lo que hay que hacer exactamente para aquellos que, como yo, no habían hecho esto antes).
  2. Usando la herramienta adb inicie el shell adb en su dispositivo conectado y rooteado adb shell
  3. Activar el superusuario introduciendo su en el shell (para mí esto tuvo el paso adicional de ir a MagiskManager y permitir el acceso de SuperUser al shell).
  4. Introduzca las siguientes líneas en el intérprete de comandos para crear y establecer estas propiedades:

    setprop persist.demo.remoterotation portrait
    setprop persist.demo.rotationlock false

Una vez configurado esto, he emitido la pantalla de mi Pixel 2 a un dispositivo chromecast y estaba en la orientación vertical deseada. Espero que esto ayude a cualquier persona en el futuro tratando de resolver esto.

0 votos

¿Debería esto funcionar con un Samsung Galaxy S20 rooteado? He configurado estas propiedades con éxito, pero la salida hdmi todavía no se muestra correctamente en un televisor vertical.

0 votos

@chief7 No estoy seguro de que funcione en un galaxy. Concretamente solo funcionaba en el Pixel 2. Es algo no soportado oficialmente por lo que fue un poco de hackeo para que funcionara. Quizás combinando los ajustes que tengo con los de la respuesta anterior? Es posible que tenga que cavar a través del código del sistema operativo y encontrar cualquier configuración relevante que podría establecer.

0 votos

@chonigman Oneplus 7T con Android 11 tipo C dock a HDMI y estas propiedades no funcionan tristemente. Pantalla Dumpsys (retrato - pastebin.com/fpx4Phyr ) Pantalla Dumpsys (paisaje - pastebin.com/9QpQht05 ) DisplayManager probablemente puede ayudar con la rotación remota. ¿Alguna pista?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X