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

click fraud protection

В этом уроке мы покажем вам, как изменить значки на панели навигации или изменить расположение кнопок, если вы используете Nougat. Никакой корень не нужен.

Те из вас, кто бежит первым Предварительная версия Android O для разработчиков возможно, поигрался со своим скрытым настройщик навигационной панели находится в SystemUI Tuner. Этот настройщик навигационной панели уже несколько месяцев присутствует в AOSP, но считалось, что единственный способ получить к нему доступ в Android Nougat — через модификация APK системного интерфейса, что, конечно же, потребует 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, если вы этого предпочитаете. Команда, которую мы будем изменять, — это предпочтение настройки безопасности, называемое sysui_nav_bar. Это предпочтение представляет собой строку, содержащую макет панели навигации. Структура предпочтения по умолчанию следующая:

space, back; home; recent, space

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

space, recent; home; back, space

Примечание. Если вы пытаетесь ввести любую из следующих команд из корневой среды оболочки, например: Эмулятор терминала на вашем телефоне, тогда вам нужно будет опустить «adbshell» в командах перед отправкой их.

Теперь, чтобы фактически изменить эту строку, нам нужно использовать команду оболочки 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"

Но мы также можем изменить кнопки панели навигации, чтобы они были совершенно отличными от стандартных клавиш «Назад», «Домой» или «Последние», например, отправив одну из многих Ключевые события. Мы воспользуемся этим фактом в следующем разделе, где покажем, как изменить значки на кнопках панели навигации.


Пользовательские значки панели навигации

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

Метод, который мы используем, основан на реализации Google тюнера панели навигации, поэтому у него нет ни одной из этих проблем. Однако в настоящее время есть одна проблема, о которой мы хотим сказать заранее: если вы решите использовать этот метод для изменения кнопки «Домой», то действие кнопки «Домой» при длительном нажатии больше не будет работать это означает, что вы больше не можете быстро получить доступ к Google Assistant с помощью кнопки «Домой». Если вас это устраивает, то вот как можно изменить значки на панели навигации.

Первое, что вам нужно будет сделать, это загрузить значки, которыми вы хотите заменить значки клавиш панели навигации по умолчанию. Я предоставлю вам ссылки для загрузки, чтобы вы могли получить значки на панели навигации Google Pixel, но вы сами можете найти свои собственные значки, если вам нужно что-то еще. Вам понадобятся значки в формате PNG, а что касается размера, вы можете определить размер нужных вам значков, посмотрев показатели плотности отображения устройства на Material.io и соотносим это с Справочная таблица размеров значков.

Благодарность за извлечение этих значков на панели навигации Google Pixel принадлежит старшему участнику XDA. дариомрк. Скачать этот архив, если у вас разрешение 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, мы теряем возможность длительного нажатия «домой», поскольку в настоящее время нет способа распознавать события длительного нажатия при имитации ввода клавиш.

Я понимаю, что сейчас этот метод может показаться не идеальным или простым в реализации, но на момент написания этой статьи приложение «Пользовательская панель навигации» не было обновлено для поддержки добавления ваших собственных значков. На данный момент мой метод (именно так работает это приложение, и когда оно будет обновлено, оно столкнется с тем же ограничением) заключается в том, как вы можете получить любые пользовательские значки на панели навигации, какие захотите.


Вот и все, что касается этого урока. В будущих уроках я продемонстрирую потенциальные практические возможности изменения панели навигации, особенно контекстуально, с помощью приложения автоматизации, такого как Tasker. Следовать категория обучающих программ на XDA чтобы быть в курсе всех последних советов и рекомендаций, которые мы публикуем.