Появилась благодаря добавленному в Android 6.0 инструменту System UI Tuner. Это экспериментальная функция. Чтобы включить её, нужно развернуть панель быстрых настроек и несколько секунд удерживать палец на шестерёнке в правом верхнем углу. После этого система сообщит о включении System UI Tuner, а в настройках появится соответствующий пункт.

Если вы решите, что хотите сохранить его и попытаться сделать это в режиме ожидания, вы будете искать его напрасно. Но здесь мы снова сталкиваемся с незначительной проблемой. Виджеты нельзя размещать на рабочем столе. Хотя они присутствуют, их можно разместить только на экране блокировки. К счастью, в случае этого виджета емкость остается отображаемой в уведомлениях.

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

Для добавления собственных элементов на панель управления потребуется установка дополнительного приложения, но начать стоит с изучения самого System UI Tuner. Это довольно интересная штука, благодаря которой можно принудительно включить и отключить отображение тех или иных элементов на панели быстрых настроек, а также добавить процентный индикатор уровня заряда аккумулятора.

После пробуждения он не ведет себя так, как должен, например, не может запускать приложения. Ноутбук даже видел необходимый модем, а затем начал процесс подключения, но часто не выполнял этот процесс. В этом случае, однако, это может быть только дефект на моем устройстве. Наконец, у меня есть несколько других подробностей об использовании. Он даже обнаружил маленький молниеносный диод рядом с ней, который он может включить и выключить. Вы можете добавлять кнопки в панель действий, через которые вы можете выполнять наиболее важные действия в заданном контексте приложения.


Создание и добавление собственных элементов возможно через приложение Custom Quick Settings .

Сначала пользователю покажут процесс активации System UI Tuner, а затем предложат создать собственный элемент панели.

Те, которые не подходят в баре или не самые важные, находятся в специальном скрытом меню. Панель действий с кнопками поиска и скрытым меню, где доступны дополнительные действия. Добавьте элемент для каждого элемента, который вы хотите разместить на панели.

Загрузить: Набор значков панели действий

Атрибуту значка должен быть присвоен идентификатор объекта изображения. Об этом мы уже говорили в уроке «Создание простого пользовательского интерфейса».

Кнопка «Вверх» в действиях низкого уровня

Все экраны, которые не представляют основной экран приложения, должны включать кнопку «Вверх» на панели действий - это позволит пользователю получить доступ к экрану родительского приложения.


Процесс пошагово описан непосредственно на экране Custom Quick Settings. Попробуем пройти его, создав на панели, например, значок для запуска мобильного приложения Лайфхакера.

Вот пример декларации о превосходстве в манифесте. Чтобы удалить указанный маршрут, нажмите кнопку «Маршрут» на экране навигации. Появится экран точек маршрута. Теперь нажмите на эти 3 точки в правом нижнем углу экрана, а затем вы увидите несколько вариантов, в том числе «Удалить» - нажав на нее, вы можете удалить маршрут.

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


Тапаем по SYSTEM UI TUNER. Появляется конструктор панели быстрых настроек. На этом этапе можно задать расположение каждого элемента, а также выбрать опцию «Добавить кнопку быстрого доступа» в нижней части экрана. Создаём новую кнопку.

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

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


Тапаем по «Кнопка трансляции» и задаём ей имя. По инструкции каждая создаваемая кнопка должна иметь название в формате CUSTOMTILEx, где x - это порядковый номер кнопки, которую вы создаёте. Отсчёт начинается с нуля, а потому первая создаваемая кнопка должна называться CUSTOMTILE0.

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

Теренова - самый короткий маршрут, за исключением категории дорог. Перекресток - прямая линия между началом и целью, полезная, например, в лесу или в поезде. Почему не работает кольцевая дорога? Это может быть связано с типом используемого маршрута, например, оптимальным маршрутом, не говоря уже о коротком, часто вместо того, чтобы избегать более быстрого маршрута, ведет через его центр. Решение состоит в том, чтобы переключить тип маршрута на быстрый. Подробный гид в путеводителе нет.


Кнопка появится на экране конструктора панели. Попутно вы можете задать её расположение.

Возвращаемся в приложении Custom Quick Settings на экран инструкции, устанавливаем галочку в пункте «I have done this» и нажимаем на Continue.

Мы не хотели сэкономить несколько сотен метров по дороге, чтобы сэкономить минуту или две. Чтобы изменить это, нажмите кнопку «Настройки», затем вкладку «Маршрут». Существует также опция «Навигация в сне». Этот вариант может быть полезен, например, на велосипеде или в походе. Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать их в комментариях.

Петр Суровецкий

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


Кругленький значок с плюсиком переводит пользователя на экран настройки новой кнопки. Сначала задаём имя кнопки, в нашем случае это «Лайфхакер».


У меня есть только то, что на экране. Есть ли скрытые «близкие», «конечные» или «выключенные»? Мы еще не видели отдельную кнопку «Закрыть». Вот что мы знаем об этом. Жалость от создателя не думала вводить поиск сохраненных точек. То же самое относится к тем котам, которые отмечают места, где они были сохранены.

Кто-нибудь знает, как восстановить этот нижний луч? Но нет толстого луча с вариантами для всей карты. Просто нажмите его еще раз. В середине у меня есть кнопка главного меню. С правой стороны у меня стрелки, а один - влево. Это невозможно сделать по телефону. Что делать в этой ситуации, потому что очень замусоренный образ авто карты.

Выбираем иконку. Их здесь много, очень много. Лайфхакер очень полезный, как морковка, а потому значок морковки будет в тему.


Теперь задаём действие по тапу на иконку. Пользователь может задать запуск приложения, переход по URL, кастомное действие, либо сделать кнопку, которая ничего не делает. В нашем случае это запуск приложения, то есть Launch App. В появившемся списке всех установленных и системных приложений находим «Лайфхакер». Действие для долгого тапа задавать не обязательно, а потому его можно пропустить.


Осталось нажать на кругленький значок с галочкой, подтверждающий настройки кнопки, после чего открыть панель быстрых настроек. Как видите, теперь здесь есть Лайфхакер-морковка.


Данная функция доступна только в Android 6.0.

Android поддерживает несколько типов меню. Первый - на телефоне есть отдельная кнопка Menu (в старых телефонах), нажатие которой вызывает меню. В новых устройствах отдельную кнопку убрали, заменив на значок меню в виде трёх точек в вертикальной ориентации. Второй тип - контекстное меню, которое появляется при нажатии и удерживания пальца на экране в нужном месте (также можно нажать и удерживать центральную кнопку на телефоне). Контекстное меню в свою очередь может иметь подменю. Сегодня мы познакомимся с первым типом меню. В данной статье будет рассматриваться работа с меню на новых устройствах под управлением Android 4.0 и выше.

В шаблоне Empty Activity нет меню, поэтому мы создадим его сами. Это поможет вам понять принцип работы и получить общее представление о проекте. Запоминать названия классов, методов и код для обработки выбора пунктов меню необязательно. В других шаблонах меню будет встроено и вы можете сразу использовать его.

Создайте новый проект на основе Empty Activity и запустите его. Никакого меню пока нет.

Создадим несколько строковых ресурсов в файле res/values/strings.xml , которые будут отвечать за пункты меню:

Settings Кот Кошка Котёнок

Теперь создайте новую папку menu в папке res res , | New | Directory ). Далее создайте в созданной папке файл menu_main.xml - имя указывает, что меню относится к основной активности MainActivity (правый щелчок мыши на папке menu | New | Menu Resource File ). Если вы будете создавать приложение с несколькими экранами, то у каждой активности будет отдельное меню со своими настройками. Пока откроем файл menu_main.xml и добавим в полученный шаблон свой код:

Откроем файл MainActivity . Сейчас в нём только один метод onCreate() . Добавим новый метод onCreateOptionsMenu() . Именно данный метод отвечает за появление меню у активности. Выберите в студии меню Code | и в следующим окне начинайте вводить название метода по первым буквам. Можно вводить по первым заглавным буквам, т.е. ocom (o nC reateO ptionsM enu), чтобы быстро найти нужную строку. Нажимаем кнопку OK и получаем заготовку.

@Override public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); }

Добавляем в заготовку метод, который берёт данные из ресурсов меню и преобразует их в пункты меню на экране.

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; }

В методе inflate() вы указываете на ресурс меню (R.menu.menu_main ) и объект класса Menu .

По английски "inflate" переводится как надувать, т.е. по замыслу разработчиков Android, мы как бы надуваем данными объект, например, меню. Но на самом деле слово "inflate" происходит от словосочетания in flat - в квартиру. Существует старинная традиция запускать в квартиру первым кота, который исследует все закоулки дома и заявляет о своём согласии жить в нём. Так и мы запускаем данные из XML-файла в объект MenuInflater.

Запустите проект. Теперь в правой части заголовка вы увидите значок из трёх точек, выстроенных в вертикальную линию. Нажмите на значок, чтобы увидеть пункт меню Settings .

Как не трудно догадаться, элемент item отвечает за отдельный пункт меню. Добавим ещё три пункта по такому же принципу, меняя только идентификатор и текст для меню:

Запустите проект и попробуйте снова вызвать меню. Вы увидите три новых пункта.


Параметры id и title не нуждаются в объяснениях. Параметр orderInCategory позволяет задать свой порядок вывода пунктов меню. Предположим вы создали пять пунктов меню, но пока не определились с порядком их вывода на экране. Чтобы не перемещать постоянно целые блоки кода для пунктов меню в нужном порядке, можно воспользоваться данным параметром.

И, наконец, важный атрибут app:showAsAction определяет поведение меню в ActionBar . Значение never означает, что элемент меню не должен выводиться в заголовке, а только в всплывающем меню, т.е. находиться за тремя точками. Если вы установите значение always , то пункт Settings сразу появится в заголовке вашего приложения. Также доступны значения ifRooms , withText и collapseActionView . Попробуйте самостоятельно. Например, ifRoom выводит пункт меню, если позволяет место. Если пунктов будет много, то они будут только мешаться. Как правило, в таком варианте выводят очень короткое слово или значок для частых операций, чтобы избежать лишнего щелчка на три точки.

Обратите внимание на атрибут app:showAsAction , который относится к пространству имён xmlns:app="http://schemas.android.com/apk/res-auto" . Было время, когда такого пространства имён не существовало и в проектах использовался атрибут android:showAsAction из стандартного пространства имён. Если студия будет ругаться на ошибку, то отредактируйте код.

Пока пункты меню не выполняют полезной работы. Любое нажатие на пункт просто закрывает меню без видимых последствий. Мы ещё не написали код для обработки нажатий.

Выбор пунктов меню

Мы научились создавать меню. Но пока оно бесполезно, так как пункты меню никак не реагируют на наши нажатия. Для обработки нажатий пунктов меню служит другой метод onOptionsItemSelected() . Добавим метод по такому же принципу, как для предыдущего примера. Получим заготовку.

@Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); }

Параметр item отвечает за пункт меню. Вам следует получить идентификатор меню через метод getItemId() и указать для него код. Так как обычно меню состоит из нескольких пунктов, то удобно использовать конструкции if/else или switch . Для вывода информации воспользуемся текстовой меткой. Добавьте на экран активности компонент TextView . Можете использовать имеющийся TextView с надписью "Hello World!", только присвойте ему идентификатор.

android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/>

Добавим код в заготовку для выбранного пункта меню:

@Override public boolean onOptionsItemSelected(MenuItem item) { // получим идентификатор выбранного пункта меню int id = item.getItemId(); TextView infoTextView = (TextView) findViewById(R.id.textView); // Операции для выбранного пункта меню switch (id) { case R.id.action_cat1: infoTextView.setText("Вы выбрали кота!"); return true; case R.id.action_cat2: infoTextView.setText("Вы выбрали кошку!"); return true; case R.id.action_cat3: infoTextView.setText("Вы выбрали котёнка!"); return true; default: return super.onOptionsItemSelected(item); } }

Запустите приложение, вызовите меню и выберите любой пункт меню. В текстовом поле должно появиться сообщение.


Существует альтернативный способ через XML, похожий на обработку щелчков кнопки (начиная с Android 3.0). Вы можете добавить атрибут android:onClick в ресурсах меню, и вам не нужно использовать вызов метода onOptionsItemSelected() . При помощи android:onClick вы можете указать нужный метод при выборе пункта меню. Добавьте данный атрибут к пункту Settings

Теперь в коде активности напишем следующее:

// у атрибута пункта меню Settings установлено значение android:onClick="onSettingsMenuClick" public void onSettingsMenuClick(MenuItem item) { TextView infoTextView = (TextView) findViewById(R.id.textView); infoTextView.setText("Вы выбрали пункт Settings, лучше бы выбрали кота"); }

Переключатели

Внешний вид пунктов меню можно изменить на вид с переключателями. Для этого нужно добавить элемент group с атрибутом android:checkableBehavior="single" :

Большого смысла в этом режиме я не вижу. И рассматривать его не будем.

Режим Design

В Android Studio 2.2 добавили графический режим построения меню, которых похож на панель инструментов для добавления новых компонентов на экран. У меню панель состоит из четырёх элементов: Menu Item , Search Item , Menu , Group .


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

Главное меню - один из основных инструментов для взаимодействия пользователя с приложением. В Android 2.3.x и раньше оно было «спрятано» на аппаратной кнопке Menu, и разработчики рисовали меню кто как умел. Но начиная с Android 3.0 недоработка была исправлена, меню стало стандартным компонентом на Action Bar, и получило ряд новых возможностей. При этом процесс разработки меню практически не претерпел изменений. Меню в Android - это не просто набор кнопок, на которые можно вешать OnClickListener . В Android с меню можно сделать куда больше, чем кажется на первый взгляд.

В этой статье я расскажу, как сделать современное меню, как адаптировать его для разных размеров экрана, как делать переключатели типа radio button прямо в меню, а также как динамически управлять видимостью кнопок меню, скрывая те функции вашего приложения, которые не будут работать на том или ином смартфоне. По ходу статьи постараюсь дать максимально подробное описание тех или иных возможностей меню, а также дам ссылки на официальную документацию по теме.



Вот так по-разному может выглядеть меню одного и того же приложения.

Наша первая кнопка в меню

Меню в Android описываются в файлах ресурсов или формируются программным кодом. Рекомендуется первый вариант по целому ряду причин: скорость разработки, наглядность, простота сопровождения. Ресурсы меню располагаются в подкаталоге menu каталога ресурсов приложения res . Создаем каталог menu , затем создаем новый Android XML File:

Выбираем тип ресурса Menu , вводим имя файла. Так как в разных activity меню, скорее всего, будет разным, рекомендую привязывать имена файлов ресурсов меню к именам activity.

В открывшемся редакторе введем код первой кнопки нашего меню:

Давайте рассмотрим использованные атрибуты:

  • android:id указываем, чтобы потом в коде отличать одни кнопки от других.
  • android:orderInCategory указывает порядок нашей кнопки относительно других. Указывайте порядок с шагом в 10 или 100, это позволит в будущем добавлять новые элементы в любое место, не перестраивая порядок остальных.
  • android:showAsAction - самый интересный параметр, поскольку именно он управляет поведением элементов меню в разных ситуациях. Он может принимать целый ряд значений:
    • ifRoom - Показывать элемент в action bar, только если для него достаточно места. Если места недостаточно, элемент будет автоматически скрыт в дополнительное меню (то, которое показано тремя точками друг над другом). Это лучший способ кастомизации меню в зависимости от размера экрана устройства. На больших экранах планшетов action bar будет заполнен кнопками, а на небольших телефонах будут показаны самые важные кнопки, в то время как до остальных тоже можно добраться, но только через дополнительное меню. Имейте в виду, что дополнительное меню отображается в action bar только на тех смартфонах, на которых нет аппаратной кнопки меню.
    • withText - Рядом с иконкой кнопки будет показан текст, заданный свойством android:title . Этот параметр можно указывать в комбинации с другими, разделяя параметры знаком |
    • never - Кнопка никогда не будет видна на action bar, даже если для нее есть место. К такой кнопке всегда придется добираться через дополнительное меню.
    • always - Всегда показывать кнопку в action bar. Данным параметром нельзя злоупотреблять, так как на маленьких телефонах кнопки могут начать заползать на другие элементы action bar, например на заголовок приложения. Определите для каждой activity максимум одну самую важную кнопку, без которой никак нельзя, и отметьте always только у нее. Остальные (а по возможности все) должны быть ifRoom .
    • collapseActionView - позволяет сделать кнопку, открывающую или скрывающую дополнительный элемент View в action bar. Например, можно задать такой параметр иконке поиска, по ее клику показывать прямо в action bar поле для ввода поискового запроса.
  • android:title - определяет заголовок кнопки меню. Он может отображаться рядом с иконкой в action bar или же как название элемента в дополнительном меню.
  • android:icon - иконка кнопки.

Иконки для меню

Если вы разрабатываете приложение в стиле Holo, вы можете использовать готовый набор иконок от Google, который доступен всем для загрузки с официального сайта совершенно бесплатно.

Набор иконок представлен отдельно для темной и отдельно для светлой темы Holo, а также для разных размеров экранов. Если вы не можете позволить себе дизайнера в команде, этот набор просто незаменим.

Подключение меню к Activity

Загрузить меню из ресурса очень быстро. Открываем код Activity и перекрываем метод onCreateOptionsMenu:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.your_activity_menu, menu); return true; }
Теперь меню отображается, но при нажатии на кнопку ничего не происходит. Повесить обработчик на кнопку можно кодом или прямо в XML-ресурсе, задав в свойстве android:onClick имя метода-обработчика. Чтобы сделать то же самое кодом, нужно в Activity перекрыть метод onOptionsItemSelected:
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuPurchasesListNewRecord: // TODO: обработчик нажатия здесь return true; } return super.onOptionsItemSelected(item); }

Создаем подменю

Подменю полезно, когда мы хотим уточнить способ выполнения действия, представленного в action bar. К примеру, у нас есть список покупок и кнопка «Сортировка». По нажатию кнопки нужно выяснить, по какому параметру пользователь хочет отсортировать элементы списка: по категории товара, по названию или по порядку добавления в список. Посмотрим код подменю для такого случая:


Здесь мы объявили еще один тег внутри тега. Подменю представляет собой группу все тех же тегов, что позволяет при необходимости сделать подменю в подменю и так далее.

Radio button"ы в меню

Мы только что сделали меню для выбора порядка сортировки покупок. Было бы здорово показывать, какой способ сортировки используется в текущий момент. Список может быть отсортирован только одним из трех возможных способов, что отлично соответствует идее radio button. Чтобы сделать из нашего подменю набор radio button, достаточно тегу указать свойство android:checkableBehavior="single" . Возможные значения android:checkableBehavior:
  • single - выбор только одного из доступных элементов, наш случай
  • all - выбор любого количества доступных элементов, аналог check box
  • none - элементы группы являются обычными элементами меню, это значение по умолчанию

Полученный код меню:


Если запустить приложение и попробовать выбрать один из способов сортировки, ничего не произойдет. В меню не показано, что какой-то элемент выбран. Это придется сделать вручную вызовом item.setChecked(true);
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuPurchasesListNewRecord: // TODO: обработчик нажатия здесь return true; case R.id.menuPurchasesListSortOrderCategory: item.setChecked(true); return true; case R.id.menuPurchasesListSortOrderName: item.setChecked(true); return true; case R.id.menuPurchasesListSortOrderAddTime: item.setChecked(true); return true; } return super.onOptionsItemSelected(item); }

Если у вас остались вопросы по работе с главным меню, буду рад ответить в комментариях.

Создание меню

Последнее обновление: 26.02.2017

Меню в приложениях представляет класс android.view.Menu , и каждая activity ассоциируется с объектом этого типа. Объект android.view.Menu может включать различное количество элементов, а те в свою очередь могут хранить подэлементы.

Определение меню в xml

Меню, как и файлы интерфейса или изображений, также представляет собой ресурс. По умолчанию файлы меню находятся в проекте в каталоге res/menu .

При создании нового проекта с Empty Activity у нас нет никакого каталога res/menu и соответственно нет ресурсов меню, но мы можем их добавить вручную. Для этого нажмем правой кнопкой мыши в проекте на каталог res и далее в открывшемся списоке выберем пункт New -> Android Resource File :

После этого в каталоге res будет создан подкаталог menu, в котором будет находиться файл main_menu.xml.

По умолчанию этот файл определяет один пустой элемент menu:

Изменим содержимое файла, определив несколько пунктов:

Тег

является корневым узлом файла и определяет меню, состоящее из одного или нескольких элементов и .

Элемент представляет объект MenuItem, которой является одним из элементов меню. Этот элемент может содержать внутренний подэлемент

, с помощью которого создается подменю.

Элемент включает следующие атрибуты, которые определяют его внешний вид и поведение:

    android:id : уникальный id элемента меню, который позволяет его опознать при выборе пользователем и найти через поиск ресурса по id

    android:orderInCategory : порядок следования элемента в меню

Наполнение меню элементами

Мы определили меню с тремя элементами, но само определение элементов в файле еще не создает меню. Это всего лишь декларативное описание. Чтобы вывести его на экран, нам надо использовать его в классе Activity. Для этого надо переопределить метод onCreateOptionsMenu . Итак, перейдем к классу MainActivity и изменим его следующим образом:

Package com.example.eugene.menuapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; } }

Метод getMenuInflater получает объект MenuInflater и вызываем его метод inflate() . Этот метод в качестве первого параметра принимает ресурс, представляющий наше декларативное описание меню в xml, и наполняет им объект menu, переданный в качестве второго параметра.

Запустим приложение по умолчанию и нажмем на кнопку меню в правом верхнем углу:

Обработка нажатий в меню

Если мы нажмем на любой из пунктов меню, то ничего не произойдет. Чтобы привязать к меню действия, нам надо переопределить в классе activity onOptionsItemSelected .

Для вывода выбранного элемена меню в файле activity_main.xml определим текстовое поле с id=header:

И изменим класс MainActivity:

Package com.example.eugene.menuapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); TextView headerView = (TextView) findViewById(R.id.header); switch(id){ case R.id.action_settings: headerView.setText("Настройки"); return true; case R.id.open_settings: headerView.setText("Открыть"); return true; case R.id.save_settings: headerView.setText("Сохранить"); return true; } return super.onOptionsItemSelected(item); } }

Чтобы понять, какой пункт меню выбран, вначале получаем его идентификатор int id = item.getItemId() . Затем пробегаемся в конструкции switch..case и выбираем нужный вариант и в зависимости от выбора производим определенные действия - в данном случае устанавливаем текст TextView.

Производители смартфонов на Андроид для тестирования устройств внедряют и используют инженерное меню. В нём содержатся всевозможные тесты и настройки аппарата, недоступные рядовым пользователям. Однако сегодня, зная USSD-команду или скачав приложение с PlayMarket, зайти в инженерное меню может любой желающий.

Зачем нужно скрытое инженерное меню в Андроид

Инженерное меню (Engineering Mode) – по своей сути скрытое приложение, которое используют разработчики для тестирования и установки оптимальных параметров мобильного телефона или планшета. Специалисты проверяют работу датчиков и при необходимости вносят корректировки в функционирование системных компонентов.

Работая с техническим меню Android, будьте осторожны - изменение части функций приводит к сбоям в работе устройства.

Как войти в меню

Чтобы открыть меню, установленное производителем, активируйте на смартфоне панель набора номера и введите одну из представленных в таблице USSD-команд. После ввода команды цифры пропадут с экрана, а вместо них откроется меню.

Таблица: комбинации для запуска Engineering Mode

Производитель устройства Команда
Sony *#*#7378423#*#*
*#*#3646633#*#*
*#*#3649547#*#*
Philips *#*#3338613#*#*
*#*#13411#*#*
ZTE, Motorola *#*#4636#*#*
HTC *#*#3424#*#*
*#*#4636#*#*
*#*#8255#*#*
Samsung *#*#197328640#*#*
*#*#4636#*#*
*#*#8255#*#*
Prestigio *#*#3646633#*#*
LG 3845#*855#
Huawei *#*#2846579#*#*
*#*#14789632#*#*
Alcatel, Fly, Texet *#*#3646633#*#*
Смартфоны и планшеты с процессором MediaTek (большинство китайских аппаратов) *#*#54298#*#*
*#*#3646633#*#*
Acer *#*#2237332846633#*#*

Видео: как работать в Engineer Mode

Если код не действует, и стандартным способом запустить сервисное меню не удаётся, используйте сторонние приложения - загрузить их можно на PlayMarket. Рекомендуемые программы - «Запуск инженерного меню МТК», Mobileuncle Tools, Shortcut Master.

Меню производителей не работает на некоторых моделях устройств с Android 4.2 JellyBean (x.x.1, x.x.2), а также на Android 5.1 Lollipop. Также недействительно меню при установленной прошивке Cyanogen Mod. В Android 4.4.2 при перезагрузке сбрасываются изменения, произведённые в приложении.

«Запуск инженерного меню МТК»

Приложение позволяет открыть и настроить инженерное меню без набора цифровых команд. Корректно работает на процессорах MediaTek (МТ6577, МТ6589 и др.) и системами Android 2.x, 3.x, 4.x, 5.x. По отзывам пользователей программа успешно выполняет свои функции, но после перезагрузки смартфона происходит сброс настроек, сделанных с помощью приложения.

Программа Mobileuncle Tools

Функционал приложения аналогичен предыдущему, но, помимо доступа к инженерному меню, пользователь получает возможность просмотреть информацию об экране, сенсоре и памяти устройства, а также обновить прошивку, восстановить IMEI-номер и улучшить GPS. Для стабильного функционирования необходимы root-права.

Утилита Shortcut Master

Программа Shortcut Master предназначена для работы с ярлыками и системными приложениями: создания, поиска, удаления. Прямой функции входа в инженерное меню в ней нет. Но с её помощью вы можете просмотреть список секретных команд, действующих на вашем устройстве. А нажав на название команды, увидите выпадающее меню, в котором будет пункт «выполнить». Удобно, и не требует лишних действий.

Root-права для доступа в инженерное меню

Чтобы попасть в сервисное меню на некоторых версиях Андроид, пользователь должен обладать правами суперпользователя (root). Получить права можно с помощью специализированных приложений: Farmaroot, UniversalAndRoot, Romaster SU и других. Чтобы получить Root-доступ к устройству с помощью Farmaroot:

  1. Установите и запустите в программу. Ссылка в Google Play: https://play.google.com/store/apps/details?id=com.farmaapps.filemanager&hl=ru.
  2. Если приложение поддерживает установку root-прав на ваше устройство, то на экране вы увидите список возможных действий, среди них – «Получить root». Выберите этот пункт.
  3. Выберите один из предустановленных методов получения root.
  4. Программа начнёт установку.
  5. По окончании процедуры вы увидите сообщение об успешной установке root доступа.

Возможные проблемы и решения:

  • приложение закрылось на середине установки - перезапустите аппарат и попробуйте снова;
  • root-права не установились - попробуйте установить иным методом (выберите новый эксплоит в приложении).

Что можно настроить в меню

Внешний вид инженерного режима и возможности регулировки параметров могут различаться в зависимости от модели планшета или смартфона. В меню пользователи чаще всего регулируют звук, меняют настройки камеры и используют режим восстановления. Параметры для корректировки и порядок действий приведены ниже. Будьте внимательны - названия пунктов меню могут различаться в различных моделях устройств! Вы действуете на свой страх и риск.

Аудио: усилить уровень громкости

Если ваш телефон звонит недостаточно громко, в инженерном меню найдите раздел Audio и перейдите в LoudSpeaker Mode. Выберите пункт Ring. Для каждого уровня сигнала (level 1–6) смените значения - выставьте цифры по возрастанию, от 120 до 200. Увеличьте значение в пункте Max. Vol - максимальное 200. Нажмите кнопку SET для сохранения настроек.

Аудио: повысить громкость телефонного разговора

Чтобы усилить тон динамика для разговоров, в разделе сервисного меню Audio выберите Normal mode и откройте пункт Sph. Установите значения для уровней сигнала (level 1–6) от 100 до 150, а цифру у Max. Vol. – до 160.

Для усиления чувствительности микрофона пройдите в меню Audio - Normal mode - Mic. Для каждого уровня присвойте одинаковые значения чувствительности микрофона, к примеру, 200. Нажмите кнопку SET, выполните перезагрузку и проверьте, стал ли собеседник слышать вас лучше.

Видео: регулировка параметров звука в инженерном меню

Батарея: отключение неиспользуемых частот

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

Современные устройства сканируют несколько GSM-частот - 900/1800 МГц и 850/1900 МГц. В России действует пара 900/1800 МГц, а значит, нет необходимости сканировать сеть на других частотах. Радиосигнал для второй пары можно отключить, что существенно сэкономит уровень заряда.

В Engineer Mode откройте пункт Band Mode. Отключите неиспользуемые частоты, сняв галочки с соответствующих пунктов - PCS1900 и GSM850. Если аппарат поддерживает две сим-карты, откройте поочерёдно пункты SIM1 и SIM2 и выполните указанные действия в каждом. Нажмите кнопку SET, чтобы сохранить настройки.

Если смартфон и сим-карта работают в 3G-сетях, отключите сети, которые не используются в России: WCDMA-PCS 1900, WCDMA-800, WCDMA-CLR-850. Вновь нажмите кнопку SET.

Включить сканирование отключённых сетей можно, вернувшись в то же меню и установив галочки.

Камера: настройки фото и видео

По умолчанию аппараты на Android сохраняют снимки в формате JPEG. Между тем фотографы предпочитают снимать и обрабатывать материал в RAW, чтобы получить больше возможностей для редактирования. Техническое меню позволяет выбрать желаемый формат снимков.

В меню найдите пункт Camera и выберите Capture Type (Тип снимка). Установите формат фото - RAW и нажмите SET. Также в меню Camera можно увеличить размер снимков, установить значение ISO, включить съёмку в HDR для более высокой детализации фото, задать частоту кадров для видео. После изменения каждого параметра не забывайте нажимать SET для сохранения настроек.

Режим восстановления

Recovery Mode (Режим восстановления) – аналог Bios на компьютере, позволяет управлять устройством без входа в систему Android. Возможности режима восстановления:

  • обнуление настроек до стандартных;
  • обновление прошивки;
  • доступ к root-правам;
  • создание резервной копии ОС;
  • удаление персональных данных из системы.

В Recovery Mode не выполняйте действие, если не уверены в том, к чему оно приведёт. Некоторые команды могут навредить устройству и системе.

Если настройки не сохранились

Пользователи, получившие доступ к техническому меню, жалуются на то, что изменённые в нём параметры не активируются либо сбрасываются при перезапуске аппарата.

Для ввода в действие настроек после смены параметров делайте тап на кнопку SET внизу экрана. Если параметры сбрасываются после перезагрузки устройства, попробуйте зайти в техническое меню не через приложение, а с помощью цифровой команды.

Коды сервиса аппаратов на Андроид

Помимо технического меню, управлять функционалом смартфонов на Android позволяют секретные USSD-коды - сочетания цифр и символов, набрав которые пользователь выполняет действие. Секретные коды для разных устройств приведены в таблице.

Таблица: перечень секретных команд для Android

Производитель Цифровая команда Значение
Коды для большинства производителей *#*#7780#*#* Откат настроек и деинсталляция пользовательских приложений
*2767*3855# Смена прошивки, тотальный откат настроек.
*#*#232339#*#*
*#*#526#*#*
Проверка беспроводных подключений
*#*#34971539#*#* Детальные сведения о фотокамере
*#*#232338#*#* Просмотр адреса Wi-fi
*#*#273283*255*663282*#*#* Активация резервной копии медиа на телефоне
*#*#1472365#*#* Экспресс-тест GPS
*#*#0*#*#* Проверка экрана
*#*#2663#*#* Просмотр информации о тачскрине
*#*#2664#*#* Тестирование тачскрина
*#*#4636#*#* Общие данные устройства и батареи
*#*#0673#*#*
*#*#0289#*#*
Аудиотесты
*#*#7262626#*#* Проверка приёма GSM
*#*#0842#*#* Тест вибросигнала и яркости дисплея
*#*#3264#*#* Информация о RAM-памяти
*#*#232331#*#* Тестирование связи по Bluetooth
*#*#8255#*#* Проверка Google Talk
*#*#232337#*#* Информация об адресе Bluetooth
*#*#1234#*#* Данные прошивки аппарата
*#*#44336#*#* Дата сборки устройства
*#06# Информация о номере IMEI
*#*#197328640#*#* Тест сервисной активности
*#*#1111#*#* Версия free-to-air программ
*#*#2222#*#* Номер железа для free-to-air
*#*#0588#*#* Проверка датчика приближения
Sony (на аппаратах действуют единые команды) **05***# Снятие блокировки с PUK-кода
Motorola *#06# IMEI
*#*#786#*#* Откат настроек до первоначальных
*#*#1234#*#* *#*#7873778#*#* Открытие приложений с root-правами
*#*#2432546#*#* Проверка наличия обновлений
*#*#2486#*#* Вход в сервисное меню
HTC *#*#4636#*#* Сервисное меню
##3282# Системное приложение EPST
*#*#8255#*#* G-talk монитор
##33284# Состояние сети
*#*#3424#*#* Тест функционала
##3424# Диагностика устройства
##7738# Диагностика протокола
##8626337# Voice Coder
Samsung (эффективны общие коды) ##778 (+вызов) Активация EPST меню
LG (работу с кодами заменяет техническое меню) 3845#*855# Международные устройства
3845#*400# Китайские аппараты
5689#*990# Sprint
##228378 (+ вызов) Verizon Wireless
3845#*851# T-Mobile
3845#*850# AT&T

Если по какой-то причине сервисный код не сработал, не расстраивайтесь - установите и запустите приложение Secret Codes (Ссылка в Google Play: https://play.google.com/store/apps/details?id=fr.simon.marquis.secretcodes&hl=ru). Программа проанализирует действующие в устройстве комбинации и предложит вам список. Активировать комбинацию можно прямо в приложении одним нажатием на название.