Як змінити піктограми панелі навігації або змінити порядок кнопок без кореневого доступу

У цьому підручнику ми покажемо вам, як змінити піктограми на панелі навігації або змінити розташування кнопок, якщо ви використовуєте Nougat. Корінь не потрібен.

Ті з вас, хто біжить першим Попередній перегляд розробника Android O можливо, грався з його прихованим настроювач панелі навігації розташований у SystemUI Tuner. Насправді цей настроювач панелі навігації існує в AOSP протягом кількох місяців, але вважалося, що єдиний спосіб отримати до нього доступ на Android Nougat — це модифікація APK System UI, для чого, звичайно, потрібен доступ root. Лише цього тижня ми виявили, що прихований настроювач навігаційної панелі Android Nougat може фактично отримати доступ без необхідності доступу root, спеціального ПЗУ або модифікації інтерфейсу користувача системи. За допомогою цієї функції ми можемо змінювати значки панелі навігації, міняти клавіші або додавати додаткові кнопки.

Правильно – можна модифікувати вашу навігаційну панель на повністю стандартному ПЗУ без рутування із заблокованим завантажувачем. Функціональність, яку люди вважали обмеженою Android O, насправді доступна всім, хто використовує Android Nougat на Nexus, Pixel, OnePlus і деяких телефонах Sony, HTC і Motorola. Якщо на вашому пристрої працює програмне забезпечення, близьке до програмного забезпечення Google (вибачте для користувачів Samsung і Huawei/Honor), то, швидше за все, на вашому пристрої є прихований настроювач панелі навігації AOSP, який ми можемо використовувати. У цьому підручнику я покажу вам, як можна використовувати настроювач навігаційної панелі 

змініть піктограми кнопок на будь-які завгодно або переставте їх у будь-якому порядку.

Панель навігації Google Pixel на Nexus 6

Перевернута панель навігації на Nexus 6

Змінення навігаційної панелі - налаштування

Вимоги: вам знадобиться пристрій, сумісний із настроювачем навігаційної панелі AOSP. Дивіться розділ «сумісність». в цій темі. (Примітка: OEM або тип вашого пристрою можуть не бути вказані в цій темі. Єдиний спосіб напевно дізнатися, чи ваш пристрій сумісний, це спробувати його, що ми покажемо вам нижче.

Існує два способи змінити панель навігації. Один із додатком, а інший через команди оболонки ADB (саме так працює додаток). Ми покажемо вам обидва для повноти, але зауважте, що наразі ви не можете змінювати стандартні піктограми панелі навігації за допомогою програми, доки розробник не оновить свою програму, щоб включити цю функцію.

Перше, що нам потрібно зробити, це переконатися, що на вашому пристрої навіть можна змінити навігаційну панель. Якщо ваш пристрій є одним із сумісних у списку Настроювана панель навігації, то швидше за все так і буде. Ми можемо перевірити, проглянувши короткий посібник, який супроводжує цю програму.

Встановіть додаток із магазину Google Play (а також зареєструватися для бета-тестування тому ми можемо використати його експериментальну функцію, щоб пізніше змінити порядок навігаційної панелі). Далі відкрийте програму та перейдіть до вступних екранів. Спеціальна панель навігації попросить вас надати їй певний дозвіл під назвою 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, якщо ви віддаєте перевагу цьому. Команда, яку ми будемо змінювати, — це параметр Secure setting під назвою sysui_nav_bar. Цей параметр є рядком, який містить макет панелі навігації. Типова структура параметрів така

space, back; home; recent, space

Де пробіл означає порожній простір, який відокремлює клавіші панелі навігації одна від одної, а кнопки «Назад», «Додому» та «Останні» представляють 3 стандартні кнопки на панелі навігації. Наприклад, якщо ми хочемо поміняти місцями зворотний і останній ключ, нам потрібно буде змінити рядок наступним чином

space, recent; home; back, space

Примітка: якщо ви намагаєтеся ввести будь-яку з наведених нижче команд із кореневого середовища оболонки, наприклад Емулятор терміналу на вашому телефоні, то вам потрібно буде пропустити "adb shell" з команд перед надсиланням їх.

Тепер, щоб фактично змінити цей рядок, нам потрібно використати команду оболонки ADB із цим синтаксисом

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 dariomrk. Завантажити цей архів, якщо у вас 1920x1080p дисплей і цей, якщо у вас дисплей 2560x1440p. Розпакуйте вміст будь-якого zip-файлу в папку під назвою "NavIcons" у кореневому каталозі вашого сховища.

Після того, як у вас є піктограми у відповідному місці, введіть наступну команду оболонки ADB (попередження, вона довга):

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 щоб бути в курсі всіх останніх порад і підказок, які ми публікуємо.