Строка состояния для андроида

Android для чайников №3. Строка состояния

Евгений Вильдяев

Один из самых функциональных и информативных элементов в Android-смартфоне.

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

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

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

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

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

Заключение

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

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

Источник

[Программирование] Работа со строкой состояния в Android


Статья рассказывает о том как работать со строкой состояния в Android. Статья рассчитана на начинающих программистов под Android только осваивающих разработку под платформу. Также стоит заметить что строка состояния в большей степени используется для уведомления пользователя о каких либо событиях произошедших в системе, что по целевой задаче роднит её со всплывающими уведомлениями Toast. На Хабрахабре уже имеется достаточно полная статья о работе с Toast, и данный пост лишь развивает тему уведомлений.

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

Кратко о строке уведомления

На первом скриншоте представлена раскрытая строка состояния в стандартной оболочке Android (некоторые производители мобильных устройств в своих оболочках могут изменить её внешний вид, хотя суть остаётся той же). Строка состояния в Android по большей части используется для уведомления пользователя о каких либо событиях произошедших в системе, а также о результатах работы каких либо приложений. Существенным отличием от всплывающих уведомлений Toast является то что уведомления в строке состояния не пропадают спустя время, и «висят» там до тех пор пока пользователь как-то на них отреагирует. Строку состояния удобно использовать для получения уведомлений от приложений запущенных в фоновом режиме, а также с появлением уведомления можно проиграть какой либо звук, вибрацию, или же воспользоваться мигающими индикаторами на устройстве (если они имеются). Уведомление представленное на скриншоте — именно то чего сегодня мы и будем добиваться.

Читайте также:  Android чистка от вирусов

Создание простого уведомления в строке состояния

Для начала попробуем создать стандартное уведомление для командной строки так как это рекомендуют в Google. Разметку интерфейса приложения оставим без изменений (уведомление будет появляться сразу после его запуска). И так, пример кода (с комментарием того что возможно может быть не ясным):

public class NotificationBar extends Activity <
/** Called when the activity is first created. */

private static final int NOTIFY_ID = 1; // Уникальный индификатор вашего уведомления в пределах класса
@Override

public void onCreate(Bundle savedInstanceState) <
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // Создаем экземпляр менеджера уведомлений
int icon = android.R.drawable.sym_action_email; // Иконка для уведомления, я решил воспользоваться стандартной иконкой для Email
CharSequence tickerText = «Hello Habrahabr» ; // Подробнее под кодом
long when = System.currentTimeMillis(); // Выясним системное время
Notification notification = new Notification(icon, tickerText, when); // Создаем экземпляр уведомления, и передаем ему наши параметры
Context context = getApplicationContext();
CharSequence contentTitle = «Habrahabr» ; // Текст заголовка уведомления при развернутой строке статуса
CharSequence contentText = «Пример простого уведомления» ; //Текст под заголовком уведомления при развернутой строке статуса
Intent notificationIntent = new Intent( this , NotificationBar. class ); // Создаем экземпляр Intent
PendingIntent contentIntent = PendingIntent.getActivity( this , 0, notificationIntent, 0); class ); // Подробное описание в UPD к статье
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); // Передаем в наше уведомление параметры вида при развернутой строке состояния
mNotificationManager.notify(NOTIFY_ID, notification); // И наконец показываем наше уведомление через менеджер передав его ID
>
>
* This source code was highlighted with Source Code Highlighter .

CharSequence tickerText = «Hello Habrahabr»; — в этой строке мы указываем текст который будет показан в свёрнутой строке состояния на несколько секунд при появлении уведомления. Спустя несколько секунд он исчезнет, а в строке останется лишь иконка.

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

Создание расширенного уведомления в строке состояния

Теперь несколько усложним задачу — мы будем создавать уведомление не по шаблону что предлагает Google, а по собственной разметке (благо такая возможность имеется). И так создадим новый файл разметки в папке layout, у вас он должен получиться таким:

LinearLayout xmlns:android =»http://schemas.android.com/apk/res/android»
android:orientation =»horizontal»
android:layout_width =»fill_parent»
android:layout_height =»fill_parent»
android:padding =»3dp»
>
ImageView android:id =»@+id/image»
android:layout_width =»wrap_content»
android:layout_height =»fill_parent»
android:layout_marginRight =»10dp»
/>
TextView android:id =»@+id/text»
android:layout_width =»wrap_content»
android:layout_height =»fill_parent»
android:textColor =»#000″
/>
LinearLayout >

* This source code was highlighted with Source Code Highlighter .

Также добавим какую либо картинку в папку drawable дабы потом установить её в ImageView.

Теперь код. Код не сильно отличается от кода простого уведомления, но тем не менее требует комментария

public class NotificationBar extends Activity <
/** Called when the activity is first created. */

private static final int NOTIFY_ID = 1; // Уникальный индификатор вашего уведомления в пределах класса
@Override

public void onCreate(Bundle savedInstanceState) <
super.onCreate(savedInstanceState);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // Создаем экземпляр менеджера уведомлений
int icon = android.R.drawable.sym_action_email; // Иконка для уведомления, я решил воспользоваться стандартной иконкой для Email
CharSequence tickerText = «Hello Habrahabr» ; // Подробнее под кодом
long when = System.currentTimeMillis(); // Выясним системное время
Intent notificationIntent = new Intent( this , NotificationBar. class ); // Создаем экземпляр Intent
Notification notification = new Notification(icon, tickerText, when); // Создаем экземпляр уведомления, и передаем ему наши параметры
PendingIntent contentIntent = PendingIntent.getActivity( this , 0, notificationIntent, 0); // Подробное описание смотреть в UPD к статье
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notlayout); // Создаем экземпляр RemoteViews указывая использовать разметку нашего уведомления
contentView.setImageViewResource(R.id.image, R.drawable.habr); // Привязываем нашу картинку к ImageView в разметке уведомления
contentView.setTextViewText(R.id.text, «Привет Habrahabr! А мы тут, плюшками балуемся. » ); // Привязываем текст к TextView в нашей разметке
notification.contentIntent = contentIntent; // Присваиваем contentIntent нашему уведомлению
notification.contentView = contentView; // Присваиваем contentView нашему уведомлению
mNotificationManager.notify(NOTIFY_ID, notification); // Выводим уведомление в строку
>
>

Читайте также:  Андроид ограничение по регионе

* This source code was highlighted with Source Code Highlighter .

В итоге можем открывать вторую бутылку, и наблюдать примерно такую картину:

Добавляем звук и вибрацию, мигаем индикаторами.

Для пущей важности добавим звук при выводе уведомления и вибрацию. Сделать это совсем не сложно.

notification.defaults |= Notification.DEFAULT_SOUND; — данная строка присваивает уведомлению звук что используется в системе по умолчанию.
notification.sound = Uri.parse(«file:///sdcard/notification/ringer.mp3»); — таким способом можно установить звук из файла на SD карте.

notification.defaults |= Notification.DEFAULT_VIBRATE; — данная строка добавляет вибрацию в колличестве времени по умолчанию.

Кроме того имеется возможность задать время вибрации самостоятельно. Делается это двумя строчками
long[] vibrate = ; — создаем массив, в котором 1-ое число — время которое следует подождать до того как запустить вибрацию. Второе значение — время первой вибрации в миллисекундах (аналогично и 3, и 4 значение). Количество вибраций может быть бесконечно большим по усмотрению программиста.
notification.vibrate = vibrate; — присваиваем массив нашему уведомлению.

notification.defaults |= Notification.DEFAULT_LIGHTS; — данной строкой мы можем по мигать индикаторами с параметрами по умолчанию.

Конечно можно настроить параметры и в ручную.Для этого нам потребуется 4 строки:
notification.ledARGB = 0xff00ff00; — задаем цвет для RGB индикатора.
notification.ledOnMS = 300; — задаем время между миганиями
notification.ledOffMS = 1000; — задаем время спустя которое горящий индикатор потухнет
notification.flags |= Notification.FLAG_SHOW_LIGHTS; — разрешаем мигать
Тут следует заметить что далеко не на всех девайсах вообще имеются какие либо индикаторы.

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

Заключение

Вот пожалуй и всё. Пост никак не претендует на полноту, и всё же данной информации должно быть вполне достаточно новичкам. В качестве источника, а также более полного описания работы с NotificationBar могу привести оригинальную статью на developer.android.com. Надеюсь статья поможет кому либо в изучении возможностей платформы. Спасибо за внимание.

UPD: при внимательном рассмотрении выяснилось что комментарий к одной из строчек кода отсутствует (обещается объяснить под кодом, но самого объяснения нет). Досадную ошибку исправляет, а также ряд ф-и строки состояния о которых я сообщить забыл восполняет пользователь djvu, взглянуть можно в комментариях: 1, 2. О существовании серьезных подводных камней сообщает sdmitry вот тут.

Источник

Как я сделал статус-бар на Android по кайфу

Для меня кастомизация Android всегда была чем-то далёким и откровенно гиковским. Ну зачем, думал я, что-то менять, если разработчики – явно неглупые люди – всё уже продумали за меня? Долгое время меня вполне устраивала моя позиция, и желания что-либо менять в интерфейсе своего смартфона у меня не было, тем более что обычно для этого приходилось что-то перепрошивать или устанавливать сторонние моды. Однако я немного изменил своё отношение к такому явлению, как кастомизация, когда познакомился с приложением Super Status Bar.

Читайте также:  Как сделать буквы крупнее андроид

Не устраивает статус-бар на Android? Кастомизируйте его

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

Разрешения на Android

Приложение запросит две привилегии — дайте их

Для начала вам потребуется дать Super Status Bar две привилегии: возможность изменять настройки и открыть доступ к службе специальных возможностей. Это необходимо для того, чтобы приложение смогло вносить изменения в статус-бар и расширить его функциональность.

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

Как можно заблокировать Android-смартфон

Первое, что я сделал, это включил возможность блокировать смартфон по двойному тапу на статус-бар. Для этого откройте вкладку «Жесты» — «Двойное нажатие» и активируйте параметр «Выключить экран». После этого вы сможете быстро и непринуждённо гасить экран, не задействуя физическую клавишу питания. Это очень удобно в ситуациях, когда смартфон лежит на столе, а возможности взять его в руки по какой-то причине у вас нет, либо если боковая клавиша включения и выключения сломалась.

Управлять статус-баром при помощи жестов реально удобно

Затем я настроил изменение яркости дисплея жестом скольжения вправо или влево по статус-бару. Как оказалось, это очень классная возможность, которой мне очень давно не хватало, ведь в помещении мне всегда было много максимальной яркости моего Honor View 20, и мало – на улице. Для активации этого механизма перейдите во вкладку «Жесты» и включите параметр «Скольжение». Здесь же можно настроить вызов конкретных приложений с помощью жестов, но, на мой взгляд, это было бы уже чересчур.

Как изменить статус-бар на Android

На Android можно заменить привычный статус-бар на решение из iOS

Скажу честно, мне никогда не нравились иконки в статус-баре на Android и всегда нравилась реализация iOS. Поэтому для меня стал позитивным открытие тот факт, что Super Status Bar позволяет заменить классический статус-бар Android решением, используемым в iOS. Для этого перейдите во вкладку «Статус-бар» — «Стиль» и выберите понравившийся. Кроме iOS, тут есть статус-бары из Android 10, Android 9 Pie и MIUI. Правда, учитывайте, что такая рокировка доступна только в платной версии приложения, за которую придётся заплатить 189 рублей.

Как на Android переключать песни длительным нажатием на кнопки регулировки громкости

Если вам не нравится, как реализованы уведомления на Android, Super Status Bar и тут придёт вам на помощь. Он позволяет заблокировать появление всплывающих окон с оповещениями, заменив их бегущей строкой с содержимым послания. Для этого откройте вкладку «Текст в строке» и включите параметр «Бегущий текст в статус-баре». Тут же можно настроить скорость анимации бегущего текста, начальную задержку перед его появлением, изменить фон, на котором он будет появляться и настроить стилистику появления текста.

Уведомления бегущей строкой воспринимаются реально удобнее

Super Status Bar – их тех приложений, которые запускаются один раз. А ведь и правда, если можно сразу настроить все конфигурации статус-бара, то зачем открывать его повторно и вносить какие-то изменения? По крайней мере, я так решил для себя, включив все нужные мне параметры. Попробуйте и вы. Думаю, вам понравится.

Источник

Оцените статью