5 votes

Forcer l'interface de la tablette sur un appareil qui n'en est pas un ?

Je possède un téléphone à grand écran et je me demande si je peux faire en sorte qu'il se reconnaisse comme une tablette :

  • La barre de navigation devrait rester en bas au lieu de tourner sur les côtés.
  • L'ombre de notification n'occupe pas toute la largeur de l'écran en portrait / ne reste pas au milieu en paysage
  • Les applications qui prennent en charge la présentation sur tablette l'utiliseront

À ma connaissance, une valeur DPI (densité de l'écran) suffisamment faible déclenchera le changement, mais je souhaite naturellement que les éléments de l'interface utilisateur restent à une taille visible et confortable. Il est censé y avoir un déclencheur (une condition if-else ?) qui calcule si l'interface utilisateur de la tablette doit être activée en fonction des mesures du périphérique et de la valeur DPI ci-dessus, mais je ne sais pas où se trouve le déclencheur réel ou comment le modifier pour qu'il indique toujours "tablette". J'ai vu des choses similaires faites pour les versions d'Android inférieures à 5.0 via des modules Xposed, mais ils sont assez dépassés maintenant.

La réponse pourrait être d'utiliser Xposed (ce n'est pas la meilleure solution, mais c'est quand même bien, puisque je dois rester sur Nougat pendant un certain temps), de modifier SystemUI, ou même de modifier le code source d'Android et de le construire (j'ai le savoir-faire pour cela) - il faut juste me dire où et comment.

Des idées ?

2voto

Andy Yan Points 9360

Après quelques recherches, j'ai pu trouver une solution relativement simple pour répondre à la première exigence, la plus importante, à savoir conserver la barre de navigation en bas. Nécessite Root (bien sûr - pour tirer et pousser des fichiers) et des connaissances de base sur l'utilisation de apktool .

Pour les ROMs pré-compilées :

  1. Installez apktool.
  2. Installez votre framework-res.apk en exécutant apktool if /path/to/framework-res.apk .
  3. Décompilez votre services.jar en exécutant apktool d /path/to/services.jar .
  4. Allez dans le fichier décompilé services.jar.out et ouvrir le dossier smali/com/android/server/policy/PhoneWindowManager.smali .
  5. Recherche de 0x258 et remplacer la seule occurrence de celui-ci par 0x0 .
  6. Reconstruire services.jar (préserver sa signature) en exécutant apktool b -c services.jar.out .
  7. Décompilez votre SystemUI.apk en exécutant apktool d /path/to/SystemUI.apk .
  8. Allez dans le fichier décompilé SystemUI puis allez dans le dossier res/layout/ .
  9. Retirer navigation_layout_rot90.xml .
  10. Faites une copie de navigation_layout.xml et le renommer en navigation_layout_rot90.xml .
  11. Reconstruire SystemUI (préserver sa signature) en exécutant apktool b -c SystemUI .
  12. Poussez le produit fini services.jar y SystemUI.apk à l'endroit où ils étaient en utilisant une méthode de votre choix, définissez les autorisations correctes, puis redémarrez.

Pour les fabricants de ROM :

  1. Ouvrir *build-folder*/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java .
  2. Recherche de shortSizeDp < 600 et remplacer la seule occurrence de celui-ci par shortSizeDp < 0 .
  3. Trouvez les fichiers de mise en page de SystemUI dans *build-folder*/frameworks/base/packages/SystemUI/res/layout/ et remplacer, de manière similaire à la méthode utilisée pour les ROMs pré-compilées.
  4. Construire la ROM.

Notez que la disposition des boutons par défaut n'est pas très jolie en mode paysage, mais vous pouvez toujours utiliser le tuner de barre de navigation intégré à Android 7.0+ pour l'adapter à vos besoins.


Depuis Android 10, cela a été simplifié en une seule configuration booléenne. config_navBarCanMove qui peut être défini soit directement dans le cadre, soit séparément dans une superposition (recommandé).

1voto

Vivart Points 4641

Vous pouvez essayer de modifier le DPI par cette méthode : http://phandroid.com/2016/05/24/how-to-change-dpi-settings-on-Android-n-nexus-no-Root/

  1. Ouvrez l'application Paramètres
  2. Faites défiler l'écran vers le bas jusqu'à "À propos du téléphone".
  3. Tapez 7 fois sur le numéro de bâtiment (vous verrez un message indiquant le nombre de tapes nécessaires au déverrouillage). déverrouillage)
  4. Appuyez sur la touche retour pour revenir au menu principal des paramètres
  5. Sélectionnez Options du développeur qui apparaît maintenant au bas de la page Paramètres.
  6. Faites défiler l'écran vers le bas et sélectionnez "Largeur minimale" (sous la catégorie "Dessin").
  7. Votre réglage DPI actuel s'affiche - notez-le. quelque part à l'adresse
  8. Modifiez la valeur comme vous le souhaitez (plus le chiffre est grand, plus la valeur est élevée). plus l'interface utilisateur est petite)

puis en augmentant la taille de la police/de l'affichage pour compenser la modification de la taille de l'interface utilisateur. https://www.thurrott.com/mobile/Android/77447/Android-7-0-nougat-tip-customize-display-font-sizes

Paramètres > Affichage > Taille de l'affichage

Paramètres > Affichage > Taille de la police

-1voto

Luca H Points 1

Vous pouvez télécharger Apex Launcher et, dans les paramètres, définir l'option "Use tablet UI mode" sur true. Il est possible que cela ne s'applique qu'à l'écran d'accueil et autres, mais je ne connais pas d'application pour le tester, mais vous pouvez essayer.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X