Sample VoIP Calling App in Android
This article describes the designing & implementation of a sample VoIP calling app using CometChat Pro. CometChat Pro is Messaging & Call SDK that provides enormous features for developers to integrate chat. Using CometChat Pro UI Kit, developers can easily integrate real-time messaging & calling support in their app. By the end of this article, you will create a fully functioning Sample VoIP Calling App.
Key Components & Libraries Used
CometChat Android UI Kit — An ready to use UI Kit library which will help us to develop real-time messaging & call support in our sample app within a few minutes.
Firebase — To receive an event when the app is not in the foreground we will use Firebase Push Notification.
ConnectionService — An abstract class that will help you to build VoIP Calls in a sample app. It uses a built-in System UI to manage a call which is also called System Managed. If you wish to use your own UI to manage calls you can use Self-Managed Service.
Prerequisites
Before diving into more details please ensure that you have checked the below points.
— Android studio installed in your system.
— Android Device or Emulator to run your app.
- We will begin by fetching the code from GitHub.
You can clone the project from the Sample VoIP Calling repository.
- It’s necessary to have CometChat Account to run the app.
You can create your account in CometChat and replace the credentials with yours.
Also, please make sure to setup Push Notification Extension in CometChat.
Please click here to know How to setup Push Notification in CometChat.
- Next step is to setup Firebase Account and create a new project. Once the project is created, setup an Android App in the Firebase Project and add google-services.jsonfile in your “ app” folder
- Once the above mentioned configurations are done you can open the project in Android Studio. You will find the project contains two packages ‘ app’ which is our sample app and ‘ uiKit’ is a library provided by CometChat.
- In ‘ app’ you will find the ‘ utils’ package under which we have files to handle Push Notification and VoIP calls.
PushNotificationService
It extends FirebaseMessageService which is used to handle Push Notification received from Firebase. We are using it to notify the message sent to a user when they are not active. We are also handling incoming & outgoing calls through it.
onMessageReceived() : This method gets triggered whenever you receive a push notification from firebase.
CometChatHelper.processMessage() : This method is provided by CometChat SDK to get BaseMessage from “ data” received as JSON Object in Remote Message.
initiateCallService(call : Call) : This method is used to initiate a call through ConnectionService whenever a Call type message is received.
showMessageNotification(baseMessage: BaseMessage, title: String, alert: String) : This method is used to display and handle the notification for the message when is being received by the particular user.
CallConnectionService
CallConnectionService is custom connectionservice class which is binded with the app to handle incoming & outgoing calls. You will find onCreateIncomingConnection(), onCreateOutgoingConnection() methods in it.
onCreateIncomingConnection() : This method get triggered whenever telecomManager.addNewIncomingCall() get success on receiving a call.
onCreateIncomingConnectionFailed() : This method get triggered whenever telecomManager.addNewIncomingCall() fails to receive a call.
onCreateOutgoingConnection() : This method get triggered whenever telecomManager.placeCall() get successfully executed to place outgoing call.
onCreateOutgoingConnectionFailed() : This method get triggered whenever telecomManager.placeCall() get failed to place an outgoing call.
Currently, we are using CALL_PROVIDER as Capability of ConnectionService. So you can see your system’s native calling UI for incoming & outgoing calls.
You can change it SELF_MANAGED if you wan’t to show your own custom UI for incoming & outgoing calls.
CallConnection
It is a Connection class that is used to initiate a connection when a user receives an incoming or outgoing call. It usually helps the ConnectionService class to handle the connection requests and their callbacks. It includes certain methods like onAnswer(), onReject(), onHold(), onDestroy(),etc. Whenever the user receives an incoming call and if the user accepts the call then onAnswer() will be triggered. Similarly, if user rejects the call then onReject() is triggered.
onAnswer() : Whenever this method gets triggered, we use CometChat.acceptCall() which will start the CometChat Call Service and start the call session.
onReject() : Whenever this method gets triggered, we use CometChat.rejectCall() which will reject the CometChat Call Service and end the call session.
onDisconnect() : This method gets triggered whenever the initiator of a call ends the calls before the receiver accepts the call. This will ends the call session and make it a Missed Call.
CallHandler
It is a class that is used to handle and integrate ConnectionService in your app. Below are its methods that are used in your app.
Источник
Приложения IP телефонии (VoIP-клиенты) для Android — обзор
2019. Новое максимально экономное приложение Zadarma для Android
В Google Play стало доступно полностью обновленное приложение Zadarma для Android. Благодаря push-уведомлениям больше не нужно тратить трафик и аккумулятор на фоновое соединение — принимайте звонки всегда. Другие изменения: Полностью обновленный дизайн и юзабилити приложения; Умные push-уведомления позволяют не держать приложение в фоне — звонок придет в любом случае; Добавлена поддержка кодека G729 и новых версий Android; Добавлена возможность копирования номера; Корректная работа с входящими вызовами на телефонах, в которых отключена синхронизация времени с серверами Google; Мгновенная доставка SMS-сообщений. По-прежнему приложение поддерживает работу с бесплатной облачной АТС и несколькими аккаунтами Zadarma.
2015. Мобильное приложение SigmaCall позволяет звонить дешевле по всему миру
Новое приложение SigmaCall позволяет осуществлять звонки со смартфона (iPhone, Android) на мобильные и стационарные телефоны абонентам по всему миру по выгодным тарифам, используя 3G или Wi-Fi. Звонки можно осуществлять как на мобильные номера, так и на стационарные, при этом абсолютно не важно, использует ли собеседник приложение SigmaCall — достаточно, чтобы оно было установлено только на смартфоне, с которого совершается исходящий вызов. При помощи SigmaCall можно звонить из любой точки планеты, где есть подключение к Интернет. Не важно, в каком месте Вы находитесь — стоимость звонка будет всегда одинаковая и зависит только от направления, куда Вы звоните. Например, звонки в Европу стоят от 0,60 руб/мин, в США — от 0,60 руб/мин, в Китай — от 0,73 руб/мин. При установке приложения каждому пользователю автоматически начисляются премиальные средства на счёт.
2014. Google Hangouts добавил VoIP связь в мобильную версию для iPhone и Android
Раньше в Google Hangouts был только чат и видеочат. Потом (в прошлом году) Гугл добавил голосовую связь, но только в web-версию и в браузер Chrome. Теперь возможность совершать голосовые звонки стала доступна и в мобильных приложениях Google Hangouts для iPhone и Android. Таким образом, сервисы Google Hangouts и Google Voice уже почти объединились. Звонки другим пользователям Hangouts бесплатны, также как звонки на номера в США и Канаде. Тарифы на звонки в другие страны — достаточно низкие. На российские стационарные телефоны — 0,74 руб/мин мобильные 4,44 руб/мин. Чтобы попробовать новую фичу под Android, требуется установить последнюю версию Hangouts (нужна версия 2.3), затем установить «звонилку» Hangouts Dialer для активации голосовой связи.
2013. В cофтфоне 3CXPhone для Android появились PUSH-уведомления
Компания 3CX выпустила новую версию VoIP-софтфона 3CXPhone для Android, которая поддерживает PUSH-уведомления. Это позволяет экономить батарею и ресурсы смартфона, т.к. приложение позволяет ‘разбудить’ смартфон при входящем VoIP звонке или сообщении в чат без необходимости отправки постоянных запросов к АТС. Разработчики клянутся, что 3CX — это первая АТС, поддерживающая PUSH. Кстати, если раньше Android клиент 3CXPhone для Android поддерживал любые SIP-аккаунты, то теперь он работает только с 3CX Phone System.
2012. Вышел новый софтфон YouMagic для Android
Оператор МТТ выпустил обновленный мобильный софтфон YouMagic для платформы Android. В новой версии приложения сервиса интернет-телефонии радикально преобразился интерфейс и добавились востребованные функции. Среди самых заметных нововведений можно выделить функции «Переадресация» и «Голосовая почта», раньше доступные только в личном кабинете на сайте. Функция «Голосовая почта» позволяет в приложении прослушать записанное сообщение от человека, который не смог дозвониться до абонента YouMagic. Функция «Переадресация» позволяет переводить звонки на любые как российские, так и зарубежные телефонные номера. Голосовая почта и переадресация звонков настраиваются непосредственно в софтфоне.
2012. Сервис IP-телефонии Phonty доступен на Android
Вышло Android-приложение к VoIP-сервису Phonty, которое позволит осуществлять международные и междугородные звонки по низким тарифам со смартфона. В среднем стоимость одной минуты разговора составит менее 1 рубля. Например, звонок в США на стационарный или мобильный телефон обойдется в 23 копейки за минуту разговора, а в большинство стран ЕС – 30-40 копеек за минуту. Для совершения звонков необходимо установить бесплатное приложение на свой Android-смартфон с Wi-Fi, 3G или 2G и пройти процесс бесплатной регистрации. Приложение показывает ваш баланс, список контактов, тарифы на звонки в разные страны. В ближайшее время в приложении появится возможность отправки СМС-сообщений, а также будет добавлена поддержка конференц-связи для разговора нескольких человек.
2011. Zadarma выпустил мобильное VoIP-приложение для Android
Украинский VoIP сервис Zadarma представил мобильное VoIP приложение для платформы Android, которое позволяет совершать и принимать дешевые звонки на своем смартфоне. Приложение может работать с любым SIP оператором и кроме голосовой связи поддерживает отправку/прием SMS. Оно интегрируется с телефонной книгой и позволяет настраивать правила обработки звонков. Напомним, сервис Zadarma позволяет не только звонить в любые страны по низким тарифам, но и подключить прямой телефонный номер (в 69 странах) на свой компьютер, SIP шлюз, офисную АТС, мобильный телефон, и любое устройство поддерживающее протокол SIP. Zadarma также предоставляет прямые номера в 25 странах мира, которые позволяют принимать звонки на местный номер.
2011. Viber доступен на Android
Новоявленный конкурент Skype, Viber выпустил мобильное приложение для платформы Android. Android-приложение имеет всю ту функциональность, которую Viber предоставляет для iPhone, включая текстовый чат, и даже содержит несколько новых функций: полноэкранный режим во время звонка, всплывающее оповещение при приеме звонка, которое позволяет отвечать без необходимости открытия приложения, возможность использования Viber в качестве дефолтного канала для совершения звонков из адресной книги. Пока Viber для Android доступен только в бета-версии и еще не присутствует в Android Market. Напомним, Viber хочет победить Skype за счет высокого качества мобильной VoIP связи. На данный момент Viber уже установили 10 миллионов пользователей.
2011. JAJAH позволяет звонить контактам Facebook без знания номера
VoIP провайдер JAJAH, который принадлежит телеком-гиганту Telefonic, добавил в свой Android-клиент возможность звонить своим контактам в социальной сети Facebook. Залогинившись через Facebook Connect, вы можете видеть в смартфоне список Facebook-друзей (которые находятся в онлайне в Facebook Chat) и звонить им даже не зная их телефонные номера. При инициации звонка контакту приходит оповещение через Facebook Chat с приглашением принять звонок. Если он нажимает на ссылку — всплывает окошко в браузере, через которое он сможет с вами разговаривать (с помощью наушников и микрофона). Ваш телефонный номер он тоже не увидит. Для организации соединения через смартфон используется 3G/Wi-Fi/GPRS интернет, а затем вы платите за локальный звонок по тарифам своего оператора. Пока это работает только в США.
2010. Nimbuzz предлагает HD-звонки на Android и iOS
Мобильный VoIP сервис Nimbuzz выпустил новые версии своих клиентов для Android и iPhone / iPod Touch. С помощью обновленных приложений, пользователи смогут совершать VoIP звонки (Nimbuzz to Nimbuzz) в HD-качестве. В отличии от обычных звонков, которые идут через сервера Nimbuzz, HD-звонки совершаются через прямое (P2P) соединение между мобильными девайсами. Разумеется, HD-звонки требуют наличия высокоскоростного 3G или Wi-Fi подключения. Кроме того, новая версия Nimbuzz имеет улучшенный список контактов (со статусом и фотографиями), поддержку оффлайн режима (на iPhone) и возможность установки на SD-карту (на Android).
2010. Skype выпустил приложение для Android
Skype наконец-то выпустил клиент для смартфонов под управлением ОС Android для всех желающих (ранее клиент Skype для Android был доступен эксклюзивно клиентам американского оператора Verizon). Приложение позволяет контролировать онлайн-статус контактов, общаться через чат и совершать бесплатные или платные звонки через WiFi, 3G, EDGE и GPRS (за исключением США, где приложение работает только через Wi-Fi, очевидно из-за того же контракта с Verizon). Видеосвязь, передача файлов, SMS и голосовая почта пока не поддерживаются. Skype для Android можно скачать из Android Market, он работает на версии Android OS 2.1 и выше. Напомним, ранее проблема отсутствия Skype на Android решалась сервисом Fring, который позволял даже совершать видеозвонки через Skype с Android-смартфонов. Но недавно Skype заблокировал Fring, устранив конкурента. Кстати, сегодня же Fring обновил свой клиент для Android, добавив в него возможность совершать звонки на обычные и мобильные телефоны через fringOut.
2010. Truphone — первый VoIP клиент для Nexus One
Британский мобильный VoIP провайдер Truphone первым выпустил мобильный VoIP клиент для гугловского смартфона Nexus One. Британцы в течении месяца хорошо поработали совместно с Google, чтобы обеспечить совместимость своего Android клиента с новым гуглофоном (включая доступ к SIM карте). И у них есть все основания спешить с этим вопросом, т.к. Nexus One может стать спасением для Truphone. В последнее время дела у компании идут не очень успешно. Хотя у Truphone все в порядке с технической точки зрения, но зарабатывать на услугах, которые стремятся стать бесплатными у компании не очень получается. Их новая надежда — сервис Local Anywhere, которым могут воспользоваться владельцы мобильных девайсов, не привязанных к конкретному оператору (как Nexus One). Смысл этого сервиса в глобальном роуминге. Вы можете активировать в Local Anywhere свою SIM-карту (ввести SIM ID) и приезжая в другую страну — звонить со своего мобильника на местные номера по тарифам местного провайдера. Чтобы обеспечить этот роуминг Truphone заключает контракты с сотовыми операторами в разных странах.
2009. Nimbuzz клиент для Android научился совершать VoIP звонки
Вслед за своим основным конкурентом (Fring), нидерландский VoIP сервис Nimbuzz выпустил приложение для голосовой связи на платформе Android. Хотя клиент Nimbuzz для Android уже был доступен некоторое время, но он был предназначен только для обмена мгновенными сообщениями и общения в социальных сетях. Кроме Android, Nimbuzz работает на Symbian и iPhone. Напомним, Nimbuzz позиционируется, как универсальный коммуникационный клиент для мобильных устройств, который позволяет бесплатно звонить на Skype, MSN, Yahoo Messenger, Gtalk, AIM, SIP-номера. Кроме того, недавно был запущен сервис NimbuzzOut — альтернативы SkypeOut — который позволяет за плату звонить на обычные и мобильные телефоны.
Источник