Это очередное видео из серии «как создать android приложение», где мы создаем простые, но вполне работающие приложения.

Сегодня мы создадим простое приложение — чат на андроид, используя сервис Firebase. Это backend service от Google, который мы подробно рассматриваем в нескольких выпусках «Инструментов андроид разработчика».

Подробно процесс создания приложения-чата смотрите в видео:

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

Итак начнем. для начала создадим проект в Android Studio. Назовем его FirebaseChat. Шаблон выберем Empty Activity.

Теперь свяжем проект с сервисом Firebase. Для этого перейдем в меню Tools/Firebase. Выберем вкладку Cloud Messaging. Здесь нужно выполнить 2 первых пункта.

Нажатие первой кнопки свяжет наш проект с сервисом Firebase. При этом вам будет предложено авторизоваться с помощью учетной записи Google.
В случае успеха вместо кнопки появится зеленый значок «connected».

А в консоли разработчика по адресу https://console.firebase.google.com вы увидите новое приложение.

Теперь нужно добавить в проект необходимые зависимости. Нажатие кнопки во втором пункте добавит в файлы сборки проекта ссылки на библиотеки google-services и firebase-messaging.

А в папке модуля app должен появиться файл google-services.json с параметрами, необходимыми для работы проекта с Firebase.

Проект мы подключили, но библиотека firebase-messaging — не совсем то, что нам нужно. Идем в файл сборки пакета build.gradle и заменим ее на библиотеку firebase-ui. Минимальный уровень API, с которым работает эта библиотека — API 16. Изменим соответствующую директиву и синхронизируем с gradle.

Теперь перейдем к кодингу.

Для начала создадим макет разметки главного экрана. Нам понадобится поле ввода, кнопка отправки сообщений и виджет списка ListView.

Теперь создадим макет разметки пункта списка item.xml.

Здесь три Textview для имени автора, времени и текста сообщения.

Также в папке res создадим папку menu и в ней опишем пункт меню для выхода из учетной записи.

У него будет иконка из папки drawable. Скачать ее можно здесь (через контекстное меню «сохранить как»). Также пропишем способ отображения в тулбаре.

Атрибут showAsAction берем из пространства имен app, добавим соответствующую декларацию для этого комбинацией Alt+Enter.

Теперь в основном пакете создадим новый класс Message. Это будет макет, или модель сообщения.

Создадим переменные textMesage, autorMessage и timeMessage. Как понятно из названий, это текст, автор и время сообщения.

Создадим конструктор с первыми двумя переменными. Используется комбинация Alt+Insert.

В этом же конструкторе будем сохранять в переменную timeMessage текущее время.

Также создадим пустой конструктор, а также геттеры и сеттеры для всех полей класса.

Основной код напишем в классе MainActivity.

Для начала создадим константу SIGN_IN_REQUEST_CODE со значением 1.

Далее создаем переменную класса FirebaseListAdapter — это дженерик, который обеспечивает поддержку списка сообщений. В качестве параметризированного типа у него будет наш класс Message.

О том, что такое дженерики в java, можно почитать здесь.

Далее объявляем корневой макет экрана и кнопку.

В методе onCreate находим кнопку и корневой RelativeLayout по ID, присваиваем кнопке обработчик нажатия.

В методе onClick определяем поле ввода.

Далее считываем текст из поля ввода и отправляем новый экземпляр сообщения в базу данных Firebase.

Но, прежде чем отправить сообщение. пользователь должен авторизоваться. А если пользователь не авторизован, то ему нужно показать форму авторизации, а не экран чата.

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

Создавать окно авторизации мы будем через проверку авторизации пользователя. Обернем этот метод в блок if…else комбинацией Ctrl+Alt+T и пропишем соответствующую проверку.

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

Для этого мы создадим метод displayChat и будем вызывать его здесь.

В методе displayChat создаем список сообщений. Также создаем адаптер списка, используя класс FirebaseListAdapter. Передаем ему контекст, класс модели сообщения, макет пункта списка и экземпляр базы данных Firebase.

Далее в автоматически созданном методе populateView, заполняем пункты списка.

Сначала определяем поля пункта списка по ID.

Затем прописываем текст сообщения, имя пользователя.

Также устанавливаем формат даты и отображаем ее. Обратите внимание — нужно использовать именно этот класс DateFormat.

И наконец, передаем адаптер списку.

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

Вспоминаем Урок 30 курса основ разработки в Android Studio, где мы подробно рассматриваем этот метод. В двух словах, в метод onActivityResult приходит результат вызова Activity методом startActivityForResult, которым мы вызываем здесь окно авторизации.

Сначала вызываем метод суперкласса. затем проверям, что значение requestCode равно константе SIGN_IN_REQUEST_CODE, которую мы передаем в методе startActivityForResult. Затем мы проверяем, что вызов активити прошел успешно, и отображаем окно чата после оповещения пользователя об удачном входе.

В противном случае показываем уведомление о неудаче пользователю.

И теперь нам осталось реализовать выход пользователя из чата. Сделаем это через меню.

Создаем меню в методе onCreateOptionsMenu.

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

В нашем приложении будет использоваться авторизация по email. Ее нужно активировать в консоли Firebase.
В процессе запуска также возникла ошибка, которая была связана с тем, что у меня было отключено Identity Toolkit API в консоли Google разработчика. для его включения можно перейти по ссылке прямо из ошибки в консоли.
Теперь запустите приложение на разных телефонах, авторизуйтесь и обменивайтесь сообщениями в чате.

Как создать андроид приложение для чата с помощью Firebase обновлено: Декабрь 16, 2016 автором: admin

Добавить комментарий