Hoe u uw navigatiebalkpictogrammen kunt wijzigen of de knoppen opnieuw kunt rangschikken zonder root

In deze zelfstudie laten we u zien hoe u de pictogrammen op uw navigatiebalk kunt wijzigen of de knoppen opnieuw kunt rangschikken als u Nougat gebruikt. Geen wortel nodig.

Degenen onder jullie die als eerste rennen Preview voor Android O-ontwikkelaars heeft misschien met zijn verborgen gespeeld navigatiebalk-aanpasser bevindt zich in de SystemUI-tuner. Deze navigatiebalk-aanpasser bestaat eigenlijk al maanden in AOSP, maar men dacht dat de enige manier om er toegang toe te krijgen op Android Nougat was via een wijziging van de Systeem UI APK, waarvoor uiteraard root-toegang vereist is. Pas deze week ontdekten we dat de verborgen navigatiebalkaanpasser van Android Nougat dat kon daadwerkelijk toegankelijk zijn zonder root-toegang, een aangepast ROM of een System UI-mod. Met deze functie kunnen we de navigatiebalkpictogrammen wijzigen, de toetsen verwisselen of extra knoppen toevoegen.

Dat klopt: het is mogelijk om je navigatiebalk aan te passen op een volledig standaard, niet-geroot ROM met een vergrendelde bootloader. De functionaliteit waarvan mensen dachten dat deze beperkt was tot Android O, is feitelijk toegankelijk voor iedereen die Android Nougat gebruikt op Nexus-, Pixel-, OnePlus- en sommige Sony-, HTC- en Motorola-telefoons. Als uw apparaat software gebruikt die dicht bij de software van Google ligt (sorry Samsung- en Huawei/Honor-gebruikers), dan is de kans groot dat uw apparaat de verborgen AOSP-navigatiebalkaanpassing heeft die we kunnen gebruiken. In deze zelfstudie laat ik u zien hoe u de navigatiebalkaanpasser kunt gebruiken 

verander de knoppictogrammen naar wat je maar wilt of herschik ze in welke volgorde je maar wilt.

Google Pixel Nav Bar op de Nexus 6

Omgekeerde navigatiebalk op Nexus 6

De navigatiebalk aanpassen - Instellingen

Vereisten: U hebt een apparaat nodig dat compatibel is met de AOSP-navigatiebalkaanpasser. Zie het gedeelte "compatibiliteit". in deze draad. (Opmerking: de OEM of het type van uw apparaat wordt mogelijk niet in die thread vermeld. De enige manier om zeker te weten of uw apparaat compatibel is, is door het uit te proberen. Hieronder laten we u zien hoe u dat moet doen.

Er zijn twee manieren om onze navigatiebalk aan te passen. De ene is met een app en de andere via ADB-shell-opdrachten (zo werkt de app). Voor de volledigheid laten we u beide zien, maar houd er rekening mee dat u vanaf nu de pictogrammen van de aandelennavigatiebalk niet via de app kunt wijzigen totdat de ontwikkelaar zijn app heeft bijgewerkt om deze functie op te nemen.

Het eerste dat we moeten doen, is ervoor zorgen dat het zelfs mogelijk is om de navigatiebalk op uw apparaat aan te passen. Als uw apparaat een van de apparaten is die als compatibel worden vermeld in de Aangepaste navigatiebalkthread, dan is de kans groot dat dit zo zal zijn. We kunnen dit verifiëren door de korte tutorial te doorlopen die bij deze app hoort.

Installeer de app uit de Google Play Store (en ook meld u aan voor bètatesten zodat we de experimentele functie ervan kunnen gebruiken om de navigatiebalk later opnieuw in te delen). Open vervolgens de app en doorloop de introductieschermen. De aangepaste navigatiebalk zal u vragen om een ​​bepaalde toestemming te verlenen, genaamd WRITE_SECURE_SETTINGS, om door te gaan met het gebruik van de app. U kunt dit op twee manieren doen, zoals vermeld in de aanvraag.

  1. Als je een geroot apparaat hebt, open het dan Terminal-emulator op uw telefoon en verleen deze root-toegang door te typen su. Voer vervolgens deze opdracht in: pm grant xyz.paphonb.systemuituner android.permission.WRITE_SECURE_SETTINGS
  2. Als uw apparaat niet is geroot, moet u de toestemming verlenen via ADB. Open een opdrachtprompt/terminal op uw computer en voer vervolgens de volgende opdracht in: adb shell pm grant xyz.paphonb.systemuituner android.permission.WRITE_SECURE_SETTINGS

Zodra u de app deze toestemming heeft verleend via een van de twee bovenstaande methoden, gaat de app verder met een compatibiliteitstest. Als uw navigatiebalk niet verandert, heeft u helaas pech. Als uw navigatiebalk verandert en een pijl naar rechts wordt weergegeven, wordt uw apparaat ondersteund! We kunnen nu doorgaan met het aanpassen van onze navigatiebalk.


De navigatiebalkknoppen opnieuw rangschikken

App-methode

Nu je de app hebt ingesteld, is het heel, heel eenvoudig om de navigatiebalkknoppen opnieuw in te delen. Om dit te kunnen doen, moet je de bètatestversie van de Custom Navigation Bar-app gebruiken. Ga dus terug en zorg ervoor dat je op het bètakanaal zit voordat je verdergaat.

Als u de bètaversie gebruikt, ziet u een sectie met de naam experimentele aanpassingen in het hoofdgedeelte Instellingen. Tik daarop en je ziet opties waarmee je de bestaande back-, home- en recent-sleutels kunt vervangen. Je kunt hier eenvoudig je sleutels opnieuw indelen door de terugknop te laten veranderen in de overzichtsknop (recent) en de overzichtsknop (recent) te laten veranderen in de terugknop. Of verander ze op welke manier dan ook, er zijn hier geen echte beperkingen. Nadat u uw sleutels heeft verwisseld, kunt u ook spelen met de lay-outopties in het instellingenmenu van de navigatiebalk.

ADB-methode

En hier ziet u hoe u hetzelfde kunt doen met ADB-opdrachten, als u dat liever heeft. De opdracht die we gaan wijzigen is de voorkeursinstelling voor veilige instellingen, genaamd sysui_nav_bar. Deze voorkeur is een tekenreeks die de indeling van de navigatiebalk bevat. De standaardstructuur van de voorkeur is als volgt

space, back; home; recent, space

Waar spatie een lege ruimte vertegenwoordigt die de navigatiebalktoetsen van elkaar scheidt, en terug, home en recent de drie standaardknoppen in de navigatiebalk vertegenwoordigen. Als we bijvoorbeeld de back- en de recente sleutel willen verwisselen, moeten we de string als volgt wijzigen

space, recent; home; back, space

Opmerking: als u een van de volgende opdrachten probeert in te voeren vanuit een geroote shell-omgeving zoals Terminal Emulator op uw telefoon, dan moet u "adb shell" weglaten uit de opdrachten voordat u verzendt hen.

Om deze string daadwerkelijk te kunnen wijzigen, moeten we de ADB-shellopdracht met deze syntaxis gebruiken

adb shell settings put secure sysui_nav_bar "STRING"

Daarom zou het commando dat we zouden sturen om de recente en terug-toetsen om te wisselen er als volgt uitzien

adb shell settings put secure sysui_nav_bar "space, recent; home; back, space"

Zoals je misschien wel raadt, is dit redelijk flexibel. We kunnen de sleutels verplaatsen zoals we willen door de tekenreekswaarde van de voorkeur te wijzigen. We kunnen bijvoorbeeld onze omgedraaide navigatiebalktoetsen links of rechts uitgelijnd maken door te veranderen waar de twee spaties worden geplaatst:

Links uitgelijnd:

adb shell settings put secure sysui_nav_bar "recent; home; back, space, space"

Rechts gerechtvaardigd:

adb shell settings put secure sysui_nav_bar "space, space, recent; home; back"

Maar we kunnen de navigatiebalkknoppen ook veranderen zodat ze iets geheel anders zijn dan de standaard terug-, thuis- of recente toetsen, zoals het verzenden van een van de vele Sleutel evenementen. We zullen van dit feit profiteren in de volgende sectie, waar we u laten zien hoe u de pictogrammen op de navigatiebalkknoppen kunt wijzigen.


Aangepaste navigatiebalkpictogrammen

Nu lijkt het volgende gedeelte misschien niet zo belangrijk, omdat dat wel het geval is talrijktoepassingenop de Play Store die belooft je navigatiebalk zonder root te veranderen. En ze werken wel, maar veel gebruikers melden dat deze apps bugs bevatten in bepaalde apps zoals Chrome, bij het afspelen van video op volledig scherm of in sommige games. Bovendien vereisen veel van deze apps dat u een toegankelijkheidsservice inschakelt om apps te controleren om te weten wanneer de navigatiebalk opnieuw moet worden gekleurd. kan de prestaties verminderen. Als u ten slotte te lang op deze apps vertrouwt, kunt u plotseling verrast zijn als u ziet dat ze niet meer werken wanneer Android O wordt uitgerold, omdat de volgende Android-versie beschikbaar is. het doden van het vermogen van deze apps om bovenop systeem-UI-elementen te tekenen.

De methode die we gebruiken is gebaseerd op Google's implementatie van de navigatiebalktuner en kent dus geen van deze problemen. Er is momenteel echter één probleem waarover we eerlijk willen zijn: als u ervoor kiest deze methode te volgen om uw startknop aan te passen, dan lang indrukken van de homeknop werkt niet meer wat betekent dat je niet meer snel toegang hebt tot de Google Assistent via de homeknop. Als u dat goed vindt, kunt u als volgt de pictogrammen op de navigatiebalk wijzigen.

Het eerste dat u hoeft te doen, is de pictogrammen downloaden waarmee u de pictogrammen van uw standaard navigatiebalktoetsen wilt vervangen. Ik zorg voor downloadlinks waarmee je de Google Pixel-navigatiebalkpictogrammen kunt gebruiken, maar het is aan jou om je eigen pictogrammen te vinden als je iets anders wilt. Je hebt de pictogrammen nodig in het PNG-formaat, en wat de grootte betreft, kun je de grootte van de pictogrammen die je nodig hebt bepalen door je de weergavedichtheidsstatistieken van het apparaat op Material.io en dat te correleren met een referentiegrafiek voor pictogramgrootte.

Credits voor het extraheren van deze Google Pixel-navigatiebalkpictogrammen gaan naar XDA Senior Member dariomrk. Downloaden dit archief als je een 1920x1080p hebt weergeven en deze als je een 2560x1440p-scherm hebt. Pak de inhoud van een van beide zip-bestanden uit in een map met de naam "NavIcons" in de hoofdmap van uw opslag.

Zodra u de pictogrammen op de juiste plaats heeft staan, voert u de volgende ADB-shellopdracht in (waarschuwing, deze is lang):

adb shell settings put secure sysui_nav_bar "space, key(4:file:///storage/emulated/0/NavIcons/back.png);key(3:file:///storage/emulated/0/NavIcons/home.png);key(187:file:///storage/emulated/0/NavIcons/recents.png),space"

Wat deze opdracht doet, is de toetsen Back, Home en Recent vervangen door KeyEvents die dezelfde functie vervullen. In het bijzonder wordt de achterkant vervangen door KEYCODE_BACK, thuis wordt vervangen door KEYCODE_HOME, en recent wordt vervangen door KEYCODE_APP_SCHAKELAAR. Deze sleutelcodes vervullen exact dezelfde functie, maar omdat we KeyEvents gebruiken, kunnen we specificeren welk pictogram we ervoor willen gebruiken. In dit geval wijzen we naar back.png, home.png en recents.png die we hebben opgeslagen in /NavIcons.

Door de standaardtoetsen te vervangen door KeyEvents verliezen we echter de mogelijkheid om lang in te drukken, omdat er momenteel geen manier is om gebeurtenissen van lang indrukken van gesimuleerde toetsinvoer te herkennen.

Ik realiseer me dat deze methode op dit moment misschien niet ideaal of gemakkelijk te implementeren lijkt, maar op het moment dat ik dit schrijf is de app Aangepaste navigatiebalk nog niet bijgewerkt om het toevoegen van uw eigen pictogrammen te ondersteunen. Voorlopig is mijn methode (en dat is precies hoe die app werkt, en als de app wordt bijgewerkt, zal deze met dezelfde beperking worden geconfronteerd) hoe je de gewenste aangepaste pictogrammen op je navigatiebalk kunt krijgen.


Dat is het voor deze tutorial. In toekomstige tutorials zal ik potentiële praktische toepassingen laten zien van het wijzigen van je navigatiebalk, vooral op een contextuele manier met behulp van een automatiseringsapp zoals Tasker. Volg de categorie tutorials op XDA om op de hoogte te blijven van de nieuwste tips en trucs die we publiceren.