- Тайны кнопок в Android. Часть 3: Кнопки в главном меню
- Наша первая кнопка в меню
- Иконки для меню
- Подключение меню к Activity
- Создаем подменю
- Radio button’ы в меню
- Скрываем или показываем элементы меню
- Другие способы кастомизации меню
- Инженерное меню Андроид и секретные коды телефонов: как войти и что можно настроить
- Что такое инженерное меню Андроид, секретные коды?
- Как получить доступ к инженерному меню на Android-устройстве — коды
- Что можно настроить в инженерном меню?
- Информативные возможности инженерного меню Андроид
- Тестирование параметров смартфона в инженерном меню
- Изменение параметров в скрытом меню Андроид
- Настройка сотовой связи (Telephony) и смена IMEI
- Соединение (Connectivity)
- Настройка громкости звука в инженерном меню Андроид (Audio)
- Секретные коды на Андроид
Тайны кнопок в Android. Часть 3: Кнопки в главном меню
Главное меню — один из основных инструментов для взаимодействия пользователя с приложением. В 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 :
Теперь меню отображается, но при нажатии на кнопку ничего не происходит. Повесить обработчик на кнопку можно кодом или прямо в XML-ресурсе, задав в свойстве android:onClick имя метода-обработчика. Чтобы сделать то же самое кодом, нужно в Activity перекрыть метод onOptionsItemSelected :
Создаем подменю
Подменю полезно, когда мы хотим уточнить способ выполнения действия, представленного в action bar. К примеру, у нас есть список покупок и кнопка «Сортировка». По нажатию кнопки нужно выяснить, по какому параметру пользователь хочет отсортировать элементы списка: по категории товара, по названию или по порядку добавления в список. Посмотрим код подменю для такого случая:
Здесь мы объявили еще один тег внутри тега . Подменю представляет собой группу все тех же тегов , что позволяет при необходимости сделать подменю в подменю и так далее.
Radio button’ы в меню
Мы только что сделали меню для выбора порядка сортировки покупок. Было бы здорово показывать, какой способ сортировки используется в текущий момент. Список может быть отсортирован только одним из трех возможных способов, что отлично соответствует идее radio button. Чтобы сделать из нашего подменю набор radio button, достаточно тегу указать свойство android:checkableBehavior=»single» . Возможные значения android:checkableBehavior :
- single — выбор только одного из доступных элементов, наш случай
- all — выбор любого количества доступных элементов, аналог check box
- none — элементы группы являются обычными элементами меню, это значение по умолчанию
Полученный код меню:
Если запустить приложение и попробовать выбрать один из способов сортировки, ничего не произойдет. В меню не показано, что какой-то элемент выбран. Это придется сделать вручную вызовом item.setChecked(true);
Скрываем или показываем элементы меню
Скрывать элементы меню полезно, если телефон временно или в принципе не может выполнить какой-либо функционал. Например, у нас есть кнопки для отправки списка покупок через соц. сети, но если интернет сейчас не подключен, то отправить список не получится. Чтобы не расстраивать пользователя сообщениями об ошибке, можно скрыть неработающие в данный момент кнопки. Давайте добавим кнопку «Поделиться»:
Теперь во время создания меню в методе onCreateOptionsMenu проверим доступность сети, найдем нашу кнопку и установим ей видимость:
Так мы подстраиваем меню в момент создания activity. Этого достаточно для тех функций, которые требуют наличия определенного аппаратного обеспечения в телефоне (камера и т.п.). Но интернет может включиться в любое время, даже после старта activity. Также иногда возникает желание перестроить меню после каких-то действий пользователя в приложении. Перестроить меню предельно просто. Вызываем метод invalidateOptionsMenu() нашей activity. Это приведет к повторному вызову метода onCreateOptionsMenu перед следующей отрисовкой меню. Обратите внимание, что метод invalidateOptionsMenu был добавлен в API 11, поэтому для совместимости с Android 2.x нужно использовать такой вызов:
Класс android.support.v4.app.ActivityCompat можно найти в Support Package.
Другие способы кастомизации меню
Как вы знаете, в Android можно задавать разные ресурсы для различных размеров/ориентации/плотности экрана и в зависимости от других особенностей устройств. Это касается любых типов ресурсов, в том числе и меню. По умолчанию ресурсы меню загружаются из каталога /res/menu. Но вы можете создать каталог, например, /res/menu-sw600dp, и таким образом задать особую компоновку меню для устройств с минимальным размером экрана 600 dp по горизонтали или вертикали (это как правило соответствует 7-ми дюймовым планшетам). На практике для меню обычно достаточно указания свойства android:showAsAction=»ifRoom» для элементов, так как в результате мы получаем максимально точную «подгонку» меню к тому устройству, на котором будет работать приложение. К тому же это позволяет сильно уменьшить объем кода ресурсов, ведь их в этом случае не нужно дублировать.
Если у вас остались вопросы по работе с главным меню, буду рад ответить в комментариях.
Источник
Инженерное меню Андроид и секретные коды телефонов: как войти и что можно настроить
Инженерное меню Андроид и секретные коды. Что позволяет ОС Android через инженерное меню настроить? Громкость звука, датчики и многое другое, обо всем этом читайте в нашей статье.
Наши смартфоны несут в себе массу секретов, которые скрываются производителями. Вот вы что-нибудь знаете об инженерном меню на Андроид? А о секретных кодах слышали? Раз открыли нашу статью, значит, что-то отдаленно, но слышали. Все эти инструменты появились еще при рождении первых мобильных телефонов, но, что и естественно, с годами становились более функциональными и понятными.
Однако, что стоит сразу отметить, в планы производителей не входит сделать инженерное меню или секретные коды на Android (что понятно из названия) доступными каждому желающему. И в этом есть смысл. Пойдем по порядку.
Что такое инженерное меню Андроид, секретные коды?
Итак, Engineering Mode (инженерное меню) – специальное приложение, которое установлено практически на любой смартфон. Используется производителем для проведения различных тестов и оптимизации работы функций, датчиков и других параметров телефона или планшета.
По умолчанию скрыто в системе так, чтобы каждый пользователь не мог получить к нему доступ. Вызывается, как правило, посредством небольшого кода, вводимого с помощью стандартного номеронабирателя. Благодаря широким возможностям операционной системы Андроид, доступ к инженерному меню, а также его управление может производиться с использованием сторонних приложений.
Почему инженерное меню скрыто? При неосторожном использовании возможностей приложения можно навредить смартфону или другому устройству. Как было отмечено выше, предназначено инженерное меню для производителей (разработчиков, для проведения тестов). Поэтому следует быть внимательным, внося здесь какие-либо изменения.
Секретные коды на Андроид (сервисные, инженерные) несколько отличаются от рассмотренного меню. Если инженерное меню открывает доступ сразу ко многим параметрам, то один введенный сервисный код ведет лишь к одной, как правило, функции. Кодов очень много.
Причем есть как универсальные (работают на большинстве Android-смартфонах, даже мобильных телефона), так и коды для конкретных моделей устройств. Чуть позже разберем самые популярные.
Как получить доступ к инженерному меню на Android-устройстве — коды
Тут существует два популярных способа: посредством секретного кода или с помощью специального софта. Естественно, первый способ проще и надежнее, но не без нюансов. Универсального кода, который точно перенесет вас в инженерное меню, не найти.
На одном смартфоне срабатывает один, на другом – другой, на третьем – третий. Однако Android не первый год, потому пользователями были выведены наиболее популярные коды, которые срабатывают на большинстве устройств. Итак:
- *#*#3646633#*#* – наиболее распространенный код входа в инженерное меню Андроид;
- *#15963#* и *#*#4636#*#* – если предыдущий не сработал, пробуем эти;
- *#*#7378423#*#* или *#*#3646633#*#*или *#*#3649547#*#* – используется на смартфонах от компании Sony;
- *#*#3424#*#* или *#*#8255#*#* – обращаем внимание владельцев устройств HTC;
- *#*#197328640#*#* – в ряде случаев срабатывает на Samsung;
- 3845#*855# – часто используется для доступа к инженерному меню на Android-смартфонах LG;
- *#*#54298#*#* – работает на многих устройствах с процессором MediaTek;
- *#*#2846579#*#* или *#*#14789632#*#* – и у Huawei есть свой набор кодов.
По крайней мере, хотя бы один, но должен сработать на вашем устройстве. Код просто вводите посредством номеронабирателя (приложение «Телефон» на рабочем столе). Как правило, даже кнопку вызова нажимать не нужно (не всегда) – по окончанию набора произойдет автоматический запуск службы. Но не все так просто, есть определенные трудности запуска инженерного меню на некоторых телефонах Андроид.
Не получается войти в инженерное меню Андроид: причины
- во-первых, на многих смартфонах или планшетах с процессорами Qualcomm Snapdragon, Intel или Tegra либо не предусмотрено меню, либо доступ к нему получить очень сложно. В ряде случаев можно даже не пытаться.
- во-вторых, причиной проблем может оказаться кастомная прошивка. В ряде из них попросту отсутствует или блокируется доступ к средствам конфигурирования. К примеру, инженерного меню вы не найдете в прошивке CyanogenMod, которая очень популярна среди пользователей. Причина проста – изначально прошивка разрабатывалась для устройств на базе Snapdragon.
- в-третьих, источником проблем может выступать сам производитель, которые спрятал инженерное меню надежнее или вовсе решил его убрать. Сюда же отнесем разного рода ошибки, от которых не застраховано ни одно из устройств.
Собственно, решения проблем лежат на поверхности. Если смартфон на Snapdragon, Intel или Tegra, то в большинстве случаев сделать ничего не удастся. Однако и на этих устройствах можно получить доступ к ряду скрытых настроек, о которых мы чуть ниже расскажем.
К слову, на смартфонах Xiaomi, которые в большинстве своем представлены на базе чипов от Qualcomm, доступ к инженерному можно получить, нажав несколько раз на «Версия ядра» в настройках смартфона (раздел «О телефоне»). Наконец, в ряде случаев поможет перепрошивка Андроид-устройства на стоковую (официальную) прошивку.
Вторым способом открыть доступ к инженерному меню могут стать приложения. Их довольно много, можно бесплатно скачивать с Google Play, но практически все разработаны для смартфонов на базе процессора MediaTek.
Неплохо себя зарекомендовало приложение MTK Engineering Mode. Hidden Android Settings – схожее по возможностям приложение. Как пример, еще и «Запуск Инженерного меню MTK» можно предложить.
Опять же, не факт, что каждая из программ будет беспроблемно работать на вашем устройстве – существует сотня причин, по которым они откажутся функционировать. Разработкой подобных средств занимаются небольшие компании, потому, вероятно, вам придется опробовать несколько.
Что можно настроить в инженерном меню?
Как внешний вид интерфейса, так и набор параметров для настройки могут отличаться для разных смартфонов. Если брать устройство на Qualcomm Snapdragon, то зачастую все что вы можете сделать – посмотреть информацию о различных модулях и произвести какие-либо тесты.
Внести какие-либо изменения в параметры не получится. А вот смартфоны на MediaTek предлагают гораздо больше возможностей: конфигурация звука, настройка сети, различных модулей и так далее.
Итак, независимо от того, что внешне интерфейс инженерного меню может отличаться на разных устройствах, разобраться с пунктами труда не составит. Пройдемся по основным возможностям.
Еще раз: изменения вы вносите на собственный страх и риск. Не меняйте значения параметров, о которых ничего не знаете.
Информативные возможности инженерного меню Андроид
Первое, что предлагает инженерное меню Андроид – изучить различную информацию об устройстве. В основном она касается сети, беспроводных интерфейсов и батареи (на смартфонах с процессорами Snapdragon посредством команды *#*#4636#*#*). Что же можно посмотреть в этих разделах:
- IMEI телефона – специальный (уникальный) номер, который присваивается каждому смартфону;
- Номер телефона – указывается не всегда;
- Сеть – обозначается текущий оператор;
- Роуминг – находитесь или нет;
- Информация о сети – обсуживаетесь или нет, включена или отключена;
- Перенаправление вызовов – используется или нет;
- Тип сети, индекс сети;
- Громкость сигнала и ваше местоположение в виде координат.
В разделе «О батарее»:
- Состояние: заряжается или нет;
- Уровень заряда (в процентах);
- Напряжение и температура;
- Технология, по которой произведен элемент;
- Время с последней перезагрузки.
Один из разделов позволяет просмотреть информацию об использовании приложений на смартфоне (название, дата последнего запуска, продолжительность). Кроме того, отдельный раздел инженерного меню на Андроид посвящен беспроводному интерфейсу Wi-Fi. Тут вы найдете информацию о состоянии подключения, названии сети, сможете узнать скорость и некоторые другие данные.
Это лишь самая актуальная информация. В ряде случаев в инженерном меню можно найти больше данных об устройстве.
Тестирование параметров смартфона в инженерном меню
Довольно интересная возможность инженерного меню, позволяющая произвести тесты различных параметров смартфона. Зачастую помогает найти источник проблемы, из-за которой система функционирует неправильно. Какие конкретно можно произвести тесты:
- Комплексный (Automatic Test) – тестируется каждый параметр смартфона;
- Report (Отчет) – предоставляется отчет о тесте;
- Тестирование кнопок, карт памяти и SIM-карт, вибрации, динамиков, разъемов – все это можно проверить на работоспособность;
- Тесты экрана – на яркость, чувствительность и так далее;
- Тестирование камер и вспышки, фонарика, беспроводных интерфейсов и датчиков (гироскопа, акселерометра и других).
Опять же, набор возможностей для тестирования может отличаться. Все зависит от инженерного меню конкретного Андроид-устройства. Бесспорно, полезные функции, которые пригодятся многим пользователям. К примеру, при покупке Б/У смартфона можно протестировать экран на работоспособность.
Изменение параметров в скрытом меню Андроид
Если в случае тестирования или изучения информации о телефоне или планшете бояться нечего, то вносить изменения нужно аккуратно.
Лучше вовсе не трогать параметры, назначения которых не знаете, а также делать скриншоты или помечать на листочке все то, что изменяете. При возникновении проблем сможете вернуть опции к значениям по умолчанию. Рассмотрим и здесь самые интересные разделы.
Настройка сотовой связи (Telephony) и смена IMEI
Тут сосредоточены установки для изменения параметров сети. Вам вряд ли удастся вывести смартфон из строя, изменяя эти параметры, но поиск сети нарушить можно, поэтому запоминайте, где снимаете и куда ставите галочки, чтобы в будущем, если что, вернуть все на место.
Как правило, изменения в этом разделе производятся для того, чтобы сократить потребление энергии.
Во-первых, можно снять выделения с частот (подраздел Band Mode), на которых не работает ваш оператор. Узнаем, в каких диапазонах работает ваш сотовый оператор, снимаем галочки со всех остальных. Это поможет немного снизить расход энергии, так как модем смартфона будет точно знать, к каким частотам ему подключаться.
В этом же подразделе, напротив, можно включать нужные частоты. Нужно это, когда производитель с завода не активирует необходимые для вашего региона. К примеру, часто «из коробки» китайские смартфоны не могут работать в России с LTE. Эту проблему поможет решить сервисное меню на Андроид.
Во-вторых, в подразделе Network Selecting мы можем выставить приоритет сетей, которые используются для доступа (2G, 3G, 4G). Делается все с той же целью: увеличение времени автономной работы от аккумулятора. Как правило, отключаются сети 3G и/или 4G. Далеко не в каждом регионе есть поддержка этих сетей, а модуль связи, как бы то ни было, продолжает искать их, расходуя энергию. Отключили – и никаких проблем. Кроме того, устройство не будет переключаться на 3G или 4G, тратя траффик.
В подраздел GPRS, нам, простым пользователям лучше не залезать, если на то нет веской причины. Здесь указаны различные настройки для работы смартфона с сетью, а также присутствует пункт для изменения IMEI.
Внимание! Были прецеденты уголовного преследования за незаконную смену IMEI номеров. Чаще наказанием выступает денежный штраф, условной срок. Однако были случаи реального тюремного заключения.
Функция смены IMEI может пригодиться после неудачной попытки прошивки, когда идентификационный номер «слетает». Тогда вы можете просто переписать его с коробки, в которой поставляется устройство.
Соединение (Connectivity)
Здесь так же, как и в случае с GPRS, большинству делать нечего. Сам раздел предназначен для внесения изменений в настройки модулей Wi-Fi и Bluetooth. В разделе не получится что-либо настроить, чтобы смартфон работал лучше, а вот навредить электронному товарищу можно запросто.
Поэтому здесь используем только функции тестирования, а если необходимо внести какие-то исправления для возвращения аппарата к рабочему состоянию, тщательно изучаем назначение каждого параметра в Сети.
Настройка громкости звука в инженерном меню Андроид (Audio)
Судя по числу запросов в поиске, именно для того чтобы увеличить громкость пользователи Андроид прибегают к инженерному меню. Все достаточно просто:
- Выбирайте вкладку Hardware Testing -> Audio. Выбираем нужный режим;
- Normal Mode – отвечает за вывод звука на основной динамик.
- Headset Mode – с его помощью регулируется громкость звука в наушниках.
- LoudSpeaker – входят настройки по регулированию параметров звука во время громкой связи.
- Headset_LoudSpeaker Mode – позволяет увеличивать или уменьшать громкость звука для режима громкой связи с подключенными наушниками.
- Теперь из выпадающего списка выбираем, для какого устройство будем настраивать громкость в инженерном меню Android;
Sip – опции для интернет телефонии. Mic – задается чувствительность микрофона. Sph (может быть два) – настройка разговорного динамика. Media – мультимедийный динамик (основной). Наконец, пункт, который лучше не трогать – Sid. После изменений может появиться эхо.
- В строке «Level» задается значение уровня громкости, которое привязано к каждому шагу (нажатию) качельки громкости. По умолчанию – 0. Можно не трогать, если, конечно, звук на вашем устройстве резко не перескакивает при нажатии кнопки.
- В строке «Value is» задается значение каждого шага (уровня громкости);
- Наиболее интересна строка «Max Vol», с помощью которой и увеличивается максимальная громкость на Android через инженерное меню.
Как правило, производителем смартфона задается не максимальное значение, поэтому мы можем поправить его самостоятельно. Учтите, что на самом максимальном уровне наблюдаются хрипы динамика. Чтобы подобрать наиболее комфортное значение, перебираем варианты.
Секретные коды на Андроид
Помимо инженерного меню, для доступа к различным функциям можно воспользоваться секретными кодами. Здесь так же сложно предугадать, какая из команд будет работать на вашем устройстве. Рассмотрим наиболее популярные и полезные:
Источник