Как да промените иконите на лентата за навигация или да пренаредите бутоните без root

В този урок ще ви покажем как да промените иконите в лентата за навигация или да пренаредите бутоните, ако използвате Nougat. Не е необходим руут.

Тези от вас, които бягат първи Визуализация за разработчици на Android O може би си е играл със скритото си инструмент за персонализиране на лентата за навигация намиращ се в SystemUI Tuner. Този инструмент за персонализиране на навигационната лента всъщност съществува в AOSP от месеци, но се смяташе, че единственият начин за достъп до него на Android Nougat е чрез модификация на System UI APK, което, разбира се, ще изисква root достъп. Едва тази седмица открихме, че персонализаторът на скритата навигационна лента на Android Nougat може действително да бъде достъпен без нужда от root достъп, персонализиран ROM или системен UI мод. С тази функция можем да променяме иконите на навигационната лента, да разменяме клавишите или да добавяме допълнителни бутони.

Точно така – възможно е да модифицирате навигационната си лента на напълно наличен, нерутиран ROM със заключен буутлоудър. Функционалността, която хората смятаха за ограничена до Android O, всъщност е достъпна за всеки, който използва Android Nougat на Nexus, Pixel, OnePlus и някои телефони Sony, HTC и Motorola. Ако устройството ви работи със софтуер, който е близък до софтуера на Google (съжалявам за потребители на Samsung и Huawei/Honor), тогава има вероятност устройството ви да има скрития инструмент за персонализиране на навигационната лента на AOSP, който можем да използваме. В този урок ще ви покажа как можете да използвате персонализатора на навигационната лента, за да 

променете иконите на бутоните на каквито искате или ги пренаредете в какъвто ред искате.

Лента за навигация на Google Pixel на Nexus 6

Обърната навигационна лента на Nexus 6

Промяна на лентата за навигация - Настройка

Изисквания: Ще ви трябва устройство, съвместимо с инструмента за персонализиране на навигационната лента на AOSP. Вижте раздела "съвместимост". в тази тема. (Забележка: OEM или типът на вашето устройство може да не е посочен в тази нишка. Единственият начин да разберете със сигурност дали вашето устройство е съвместимо е да го изпробвате, което ще ви покажем как да направите по-долу.

Има два начина да промените нашата навигационна лента. Единият е с приложение, а другият е чрез ADB shell команди (по какъв начин работи приложението). Ще ви покажем и двете за пълнота, но имайте предвид, че в момента не можете да променяте иконите на стоковата навигационна лента чрез приложението, докато разработчикът не актуализира приложението си, за да включи тази функция.

Първото нещо, което трябва да направим, е да се уверим, че дори е възможно да промените навигационната лента на вашето устройство. Ако вашето устройство е едно от посочените като съвместими в Персонализирана нишка на лентата за навигация, тогава шансовете са, че ще бъде. Можем да проверим, като преминем през краткия урок, който придружава това приложение.

Инсталирайте приложението от Google Play Store (и също запишете се за бета тестване така че можем да използваме неговата експериментална функция, за да пренаредим лентата за навигация по-късно). След това отворете приложението и продължете през уводните екрани. Персонализираната лента за навигация ще ви помоли да й предоставите определено разрешение, наречено WRITE_SECURE_SETTINGS, за да продължите с използването на приложението. Има два начина, по които можете да направите това, както е посочено в приложението.

  1. Ако имате руутнато устройство, отворете Терминален емулатор на вашия телефон и му дайте root достъп, като напишете su. След това въведете тази команда: pm grant xyz.paphonb.systemuituner android.permission.WRITE_SECURE_SETTINGS
  2. Ако вашето устройство не е руутнато, тогава ще трябва да дадете разрешение чрез ADB. Отворете команден ред/терминал на вашето устройство и след това въведете следната команда: adb shell pm grant xyz.paphonb.systemuituner android.permission.WRITE_SECURE_SETTINGS

След като предоставите на приложението това разрешение чрез един от двата метода по-горе, приложението ще продължи с тест за съвместимост. Ако навигационната ви лента не се промени, значи за съжаление нямате късмет. Ако лентата ви за навигация се промени, за да показва бутон със стрелка надясно, тогава поздравления, вашето устройство се поддържа! Сега можем да преминем към модифициране на нашата навигационна лента.


Пренареждане на бутоните на лентата за навигация

Метод на приложението

Сега, след като сте настроили приложението, е много, много лесно да пренаредите бутоните на лентата за навигация. Трябва да сте във версията за бета тестване на приложението Custom Navigation Bar, за да можете да направите това, така че се върнете и се уверете, че сте в бета канала, преди да продължите.

Ако използвате бета версията, ще видите раздел, наречен експериментални настройки в главния раздел Настройки. Докоснете това и ще видите опции, които ви позволяват да замените съществуващите клавиши за връщане, начало и последните. Можете лесно да пренаредите клавишите си тук, като бутонът за връщане назад се промени на бутона за общ преглед (скорошен), а бутонът за преглед (скорошен) се промени на бутона за връщане назад. Или ги променете по какъвто начин искате, тук няма реални ограничения. След като смените ключовете си, можете също да си поиграете с опциите за оформление в менюто с настройки на лентата за навигация.

ADB метод

И ето как да направите същото с помощта на ADB команди, ако предпочитате това. Командата, която ще модифицираме, е предпочитанието за защитена настройка, наречено sysui_nav_bar. Това предпочитание е низ, който съдържа оформлението на лентата за навигация. Структурата по подразбиране на предпочитанието е както следва

space, back; home; recent, space

Където интервалът представлява празно пространство, което разделя клавишите на лентата за навигация един от друг, а бутоните за връщане, начало и последните представляват 3-те бутона по подразбиране в лентата за навигация. Ако искаме да разменим гърба и последния ключ, например, ще трябва да променим низа, както следва

space, recent; home; back, space

Забележка: ако се опитвате да въведете някоя от следните команди от вкоренена обвивка, като напр Терминален емулатор на вашия телефон, тогава ще трябва да пропуснете „adb shell“ от командите, преди да изпратите тях.

Сега, за да променим действително този низ, трябва да използваме командата ADB shell с този синтаксис

adb shell settings put secure sysui_nav_bar "STRING"

Следователно командата, която бихме изпратили за размяна на последните и обратните ключове, ще изглежда така

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

Както можете да предположите, това е доста гъвкаво. Можем да преместваме клавишите, както желаем, като променяме стойността на низа на предпочитанието. Можем например да направим нашите обърнати клавиши на лентата за навигация подравнени отляво или отдясно, като променим мястото, където са поставени двете интервали:

Подравнено вляво:

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

Подравнено вдясно:

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

Но можем също така да променим бутоните на лентата за навигация, за да бъдат нещо съвсем различно от стандартните клавиши за връщане, начало или последните, като например изпращане на един от многото KeyEvents. Ще се възползваме от този факт в следващия раздел, където ще ви покажем как да промените иконите на бутоните на навигационната лента.


Персонализирани икони на навигационната лента

Сега следващият раздел може да не изглежда като голяма сделка поради факта, че има многобройниприложенияНа Play Store, които обещават да променят навигационната ви лента без root. И те наистина работят - обаче много потребители съобщават, че тези приложения имат грешки в определени приложения като Chrome, когато възпроизвеждат видео на цял екран или някои игри. Освен това много от тези приложения изискват да активирате услуга за достъпност, за да наблюдавате приложенията, за да знаете кога да преоцветите лентата за навигация, която може да намали производителността. И накрая, ако разчитате на тези приложения твърде дълго, тогава може внезапно да се изненадате да ги видите да спрат да работят, когато Android O се появи, защото следващата версия на Android е убиване на способността на тези приложения за рисуване върху елементите на потребителския интерфейс на системата.

Методът, който използваме, се основава на внедряването на Google за настройка на лентата за навигация, така че няма нито един от тези проблеми. В момента обаче има един проблем, за който искаме да бъдем откровени: ако изберете да следвате този метод, за да промените бутона за начало, тогава действието на бутона за начало с продължително натискане вече няма да работи което означава, че вече нямате бърз достъп до Google Assistant от началния бутон. Ако сте съгласни с това, тогава ето как да промените иконите в лентата за навигация.

Първото нещо, което ще трябва да направите, е да изтеглите иконите, с които искате да замените иконите на клавишите на навигационната лента по подразбиране. Ще ви предоставя връзки за изтегляне, за да вземете иконите на навигационната лента на Google Pixel, но от вас зависи да намерите свои собствени икони, ако искате нещо друго. Ще ви трябват иконите във формат PNG, а що се отнася до размера, можете да определите размера на иконите, от които се нуждаете, като потърсите вашия показатели за плътност на дисплея на устройството в Material.io и съпоставяне на това с an референтна таблица за размера на иконата.

Заслугите за извличането на тези икони на навигационната лента на Google Pixel отиват на XDA Senior Member dariomrk. Изтегли този архив, ако имате 1920x1080p дисплей и този, ако имате 2560x1440p дисплей. Извлечете съдържанието на двата zip файла в папка, наречена „NavIcons“ в главната директория на вашето хранилище.

След като поставите иконите на подходящото място, въведете следната команда на ADB shell (предупреждение, тя е дълга):

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"

Това, което прави тази команда, е да замени клавишите за връщане, начална страница и скорошни клавиши с KeyEvents, които изпълняват същата функция. По-специално, обратно се заменя с KEYCODE_BACK, домът е заменен с KEYCODE_HOME, а последните се заменят с KEYCODE_APP_SWITCH. Тези ключови кодове изпълняват точно същата функция, но тъй като използваме KeyEvents, можем да посочим каква икона искаме да използваме за тях. В този случай ние сочим към back.png, home.png и recents.png, които сме записали в /NavIcons.

Въпреки това, като заменим основните ключове с KeyEvents, ние губим възможността за продължително натискане на начало, тъй като в момента няма начин да разпознаваме събития с продължително натискане на симулирани ключови входове.

Разбирам, че в момента този метод може да не изглежда идеален или лесен за прилагане, но към момента на писане на това приложение Custom Navigation Bar не е актуализирано, за да поддържа добавяне на ваши собствени икони. Засега моят метод (който точно работи това приложение и когато приложението се актуализира, ще се сблъска със същото ограничение) е как можете да получите каквито искате персонализирани икони в навигационната си лента.


Това е всичко за този урок. В бъдещи уроци ще покажа потенциални практически употреби на промяната на навигационната ви лента, особено по контекстуален начин с помощта на приложение за автоматизация като Tasker. Следвай категория уроци на XDA за да бъдете в крак с всички най-нови съвети и трикове, които публикуваме.