Question:
Autoriser la rotation en mode portrait mais ne pas faire pivoter l'écran externe
Malvineous
2015-08-02 10:04:04 UTC
view on stackexchange narkive permalink

Pour éviter que cette question ne soit signalée comme un doublon, j'ai inclus une liste de questions similaires à la fin de cet article avec une explication sur les raisons pour lesquelles ma question est différente. Veuillez lire ces raisons avant de signaler cette question comme un doublon!


J'essaie de trouver comment faire afficher mon Nexus 5, en mode portrait, sur un serveur externe moniteur, en mode portrait (connecté via SlimPort / HDMI).

En mode paysage, tout va bien:

Landscape mode, monitor on left, phone on right

Cependant en mode portrait, le signal est toujours émis comme s'il était censé être affiché sur un écran paysage, ce qui ne fonctionne pas du tout si l'écran est en mode portrait:

Portait mode, monitors left and middle, phone on right

Vous pouvez voir ici qu'en mode paysage et portrait, le téléphone émet le même signal 1920 x 1080, sauf qu'en mode portrait, le contenu de l'écran est tourné par le GPU du téléphone et affiché comme une image 607x1080 au milieu de l'écran 1920x1080. (Ce n'est pas, comme certaines personnes l'ont suggéré, la sortie d'un signal 1080x1920 que le moniteur est centré. Vous pouvez le vérifier car le passage du téléphone entre paysage et portrait montre une belle animation de rotation et le moniteur ne perd pas la synchronisation comme il le ferait si le résolution modifiée.)

Étant donné que le téléphone, en mode portrait, fait pivoter l'image envoyée à l'écran externe, je souhaite désactiver cette option, elle est donc simplement sortie telle quelle sans rotation. Cela semblera bien sûr faux sur un moniteur de paysage, mais lorsque vous faites pivoter ce moniteur en mode portrait, tout ira bien:

enter image description here

Est existe-t-il un moyen de désactiver cette rotation, de sorte qu'un écran externe en mode portrait puisse afficher le contenu du téléphone lorsqu'il est également en mode portrait?


Des questions similaires ont déjà été posées, mais aucun ne cherche la même solution:

Je ne peux pas faire fonctionner ça. La réponse acceptée fonctionne-t-elle toujours pour vous avec les nouvelles versions d'Android? Si tel est le cas, pourriez-vous expliquer les étapes nécessaires. Merci
Oui, je viens de l'essayer en suivant les commandes de la réponse acceptée avec Android 6.0.1 et cela fonctionne. Malheureusement, le signal émis n'est que de 1280x1024, il ne s'affiche donc toujours pas correctement sur mon écran 1920x1200 (l'écran est tourné correctement en mode portrait mais il y a des barres noires à gauche et à droite de l'écran portrait.) Comme je l'ai mentionné dans mon commentez cette réponse, cela ne fonctionne que si vous êtes root, donc j'ai utilisé l'application SSH Droid pour me connecter en tant que root, puis j'ai exécuté `setprop persist ...` là pour que je puisse voir les messages d'erreur plus clairement et être certain que j'étais l'utilisateur root.
Deux réponses:
James
2016-03-06 22:17:39 UTC
view on stackexchange narkive permalink

Essayez ces instructions, en utilisant un ordinateur avec adb installé et votre téléphone connecté:

Android Jelly Bean (4.2) verrouille la rotation HDMI par défaut. Vous pouvez déverrouiller en suivant les instructions de ce commit.

  1. Ajoutez des modes de mise en miroir spéciaux à des fins de démonstration.

  2. Supposons la rotation de l'affichage HDMI est portrait.

      adb shell setprop persist.demo.hdmirotation portrait  
  3. Ne verrouillez pas la rotation lorsque HDMI est branché.

      adb shell setprop persist.demo.hdmirotationlock false  
  4. Masquer les affichages secondaires des applications mais continuer la mise en miroir vers eux.

      adb shell setprop persist.demo.singledisplay true  

Source: https://community.freescale.com/docs/DOC-97740

Ça a marché! Le changement a bougé un peu mais il existe toujours dans le dernier code Marshmallow ([voir ici] (https://android.googlesource.com/platform/frameworks/base/+/marshmallow-release/services/core/java/com /android/server/policy/PhoneWindowManager.java#1639)) mais vous devez être root pour ajouter la propriété `persist.demo.hdmirotation`. Si vous n'êtes pas l'utilisateur root, vous obtiendrez une erreur lorsque vous essayez de définir la propriété. Le seul inconvénient est que le signal de sortie est de 1280x1024 au lieu de 1920x1200, mais au moins il est tourné! La prochaine étape consiste à comprendre comment changer la résolution!
Je ne peux pas faire fonctionner ça. après l'envoi des commandes sur adb android suppose toujours que le moniteur est en orientation paysage. Pourriez-vous fournir plus d'instructions étape par étape s'il vous plaît (également je n'ai pas compris l'étape 1). Ou est-ce que cela ne fonctionne plus avec Android 6?
Essayez d'exécuter la commande shell `getprop | grep demo` pour confirmer que les valeurs que vous avez définies ont été correctement stockées.
Ne fonctionne pas pour moi sur oneplus5 avec Android 8.1. J'ai vérifié le code, toutes les versions (6.0 ~ 8.1) ont persist.demo.hdmirotation Essayez également sur LG G3, Nexus, tous ces appareils ne fonctionnaient pas.
chonigman
2019-05-09 03:41:17 UTC
view on stackexchange narkive permalink

Je sais que c'est un ancien message, mais je traitais simplement d'un problème similaire, mais j'essayais de convertir l'écran d'un appareil Pixel 2 sur un écran portrait et je rencontrais de nombreux problèmes. Le principal problème semble être que les Pixel 2 et 3 ne semblent pas prendre en charge la sortie HDMI, donc ces propriétés ne résolvent pas le problème.

Cependant, j'ai pu comprendre cela en suivant le lien Malvineous publié dans un commentaire ci-dessus. Juste en dessous du code traitant du paramètre persist.demo.hdmirotation , il y a un autre paramètre appelé persist.demo.remoterotation ainsi qu'un autre appelé persist.demo.rotationlock . Celles-ci étaient la clé pour qu'un téléphone soit diffusé en mode portrait sur l'écran. Ces paramètres semblent exister dans les versions 8.0 et 9.0 d'Android, bien que j'ai rétrogradé mon Pixel 2 à 8.0 en essayant de comprendre cela et que je n'ai pas encore testé la version 9.0.

Pour y arriver point a pris plusieurs étapes décrites ci-dessous.

  1. Vous devez déverrouiller et rooter votre téléphone (j'ai utilisé MagiskManager pour aider à rooter et j'ai trouvé ce guide très utile car il explique un peu plus en détail exactement ce qu'il faut faire pour ceux comme moi qui ne l'avaient pas fait auparavant).
  2. À l'aide de l'outil adb, démarrez le shell adb sur votre appareil connecté et enraciné adb shell
  3. Activez le superutilisateur en entrant su dans le shell (pour moi, cela avait l'étape supplémentaire d'aller dans MagiskManager et d'autoriser l'accès du super-utilisateur au shell).
  4. Entrez les lignes suivantes dans le shell pour créer et définir ces propriétés:
      setprop persist.demo.remoterotation portraitsetprop persist.demo.rotationlock false  

Une fois que cela a été réglé, j'ai lancé mon P l'écran de l'ixel 2 sur un appareil Chromecast et il était dans l'orientation portrait souhaitée. J'espère que cela aidera quiconque à l'avenir essaiera de comprendre cela.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...