@fuliozor
Web and Android developer

Реализация функционала звонилки как в Telegram, Skype, Viber ....?

Пишу приложение в котором должен быть функционал звонков наподобии как в Telegram, Skype, Viber. Для реализации выбрали webrtc, с этим проблем никаких нет, все работает. Проблема в том как реализовать непосредственно функционал входящего вызова. Я к сожалению не смог найти никакой информации как это сделать, находил только примеры которых просто отображается уведомление. Но мне такой вариант не подходит, необходимо чтоб при звонке играла мелодия та которая установлена на устройстве для звонков, к тому же уведомление через несколько секунд после показа скрывается.
Может кто-то может поделится ссылкой на статью в которой описывается реализация подобного функционала или хотя бы подскажет в какую сторону нужно смотреть.
  • Вопрос задан
  • 230 просмотров
Решения вопроса 1
@fuliozor Автор вопроса
Web and Android developer
Звук звонка и вибрацию необходимо воспроизводить самому.
Для отображения нотификации необходимо настроить максимальный приоритет для NotificationChannel-а, так же стоит отключить звуки и вибрацию, чтоб на звук звонка не накладывался звук уведомления
val channel = NotificationChannel(CALLS_CHANNEL_ID, name, NotificationManager.IMPORTANCE_HIGH)
channel.lockscreenVisibility = NotificationCompat.VISIBILITY_PUBLIC
channel.enableLights(false)
channel.enableVibration(false)
channel.setSound(null, null)

Так же необходимо для уведомления задать категорию CATEGORY_CALL и установить FullScreenIntent
У меня вышло вот так:
val notificationBuilder = NotificationCompat.Builder(context, CALLS_CHANNEL_ID)
            .setSmallIcon(R.mipmap.logo)
            .setContentTitle(title)
            .addAction(
                answerButtonIcon,
                answerButtonText,
                answerPendingIntent
            )
            .addAction(
                decineButtonIcon,
                declineButtonText,
                declinePendingIntent
            )
            .setSound(null)
            .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
            .setPriority(NotificationCompat.PRIORITY_MAX)
            .setCategory(NotificationCompat.CATEGORY_CALL)
            .setCustomBigContentView(customContentView)
            .setCustomHeadsUpContentView(customContentView)
            .setShowWhen(false)
            .setFullScreenIntent(
                PendingIntent.getActivity(
                    context,
                    12345,
                    callActivityIntent,
                    PendingIntentUtil.flags(0)
                ), true
            )
            .setDeleteIntent(declinePendingIntent)


В принципе на этом все. Более подробно можно посмотреть в исходниках телеграма
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы