Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AND-143] Integrate the Telecom Framework #1150

Open
wants to merge 78 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
517bbb7
Add Telecom Framework dependency
liviu-timar Jul 26, 2024
df93a16
Create TelecomCallManager class
liviu-timar Jul 26, 2024
a0e5835
Call correct method onSetActive when registering call
liviu-timar Jul 26, 2024
9c7fe15
Add logging in TelecomCallManager
liviu-timar Jul 26, 2024
792d7a6
Use TelecomCallManager in appropriate scenarios
liviu-timar Jul 26, 2024
9eb4754
Pass Context instead of CallsManager to getInstance()
liviu-timar Jul 29, 2024
e382d63
Integrate SDK version check in getInstance()
liviu-timar Jul 29, 2024
a4e4dbf
Use package manager to check for Telecom feature
liviu-timar Jul 29, 2024
5041d08
Add exceptionLogTag to safeCall
liviu-timar Jul 29, 2024
670e76c
Improve TelecomCallManager
liviu-timar Jul 29, 2024
541f052
Rename TelecomCallManager to TelecomHandler
liviu-timar Jul 29, 2024
c4bcfc0
Move TelecomHandler init to after client install in Builder
liviu-timar Jul 30, 2024
2eb1b5e
Use application context and video client in TelecomHandler
liviu-timar Jul 30, 2024
305d765
Rename TelecomHandler components
liviu-timar Jul 30, 2024
a3d8003
Update TODOs
liviu-timar Jul 30, 2024
5d5983b
Start posting notifications from TelecomHandler
liviu-timar Jul 30, 2024
f767471
Change call handling in existing SDK code
liviu-timar Jul 31, 2024
85c5c2f
Handle incoming call in TelecomHandler
liviu-timar Jul 31, 2024
374e43e
Update logging and todos
liviu-timar Jul 31, 2024
251d244
Mark disabled existing call handling
liviu-timar Jul 31, 2024
7e480e1
Adapt notifications to Telecom
liviu-timar Jul 31, 2024
a81d9bb
Apply spotless and api dump
liviu-timar Jul 31, 2024
5ee0a92
Add isSupported method to TelecomHandler
liviu-timar Aug 1, 2024
7a0acfd
Use CallService if Telecom is not supported
liviu-timar Aug 1, 2024
b2a154f
Use ongoing notification for outgoing in CallService as well
liviu-timar Aug 1, 2024
5e7d681
Manage own coroutine scope in TelecomHandler
liviu-timar Aug 1, 2024
00c8fe6
Add TelecomCompat class to choose between TelecomHandler or CallService
liviu-timar Aug 2, 2024
08bc20d
Check for notifications permission in postNotifications()
liviu-timar Aug 2, 2024
75a7499
Update TODOs
liviu-timar Aug 2, 2024
ee339eb
Fix avatar for ongoing call notification
liviu-timar Aug 5, 2024
9b64e93
Add basic support for device switching
liviu-timar Aug 6, 2024
b921646
Improve support for device switching
liviu-timar Aug 7, 2024
3808af3
Initial support for multiple calls
liviu-timar Aug 8, 2024
f60e5ba
Improve call registering and unregistering
liviu-timar Aug 8, 2024
af24207
Improve call state change
liviu-timar Aug 9, 2024
5221a3e
Improve fallback to CallService
liviu-timar Aug 12, 2024
afcc021
Polish and refactor code
liviu-timar Aug 13, 2024
65534fb
Improve output/input device handling
liviu-timar Aug 13, 2024
7cfc060
Reorganize TelecomCall class
liviu-timar Aug 14, 2024
79196a6
Fix pending bugs & add improvements
liviu-timar Aug 14, 2024
c71de51
Use correct CallControlScope for device selection
liviu-timar Aug 19, 2024
6abdcc9
Fix bug that selects only Earpiece after mic enabling
liviu-timar Aug 20, 2024
9d378e7
Use MediaPlayer to play incoming/outgoing ringtones
liviu-timar Aug 20, 2024
2829768
Merge branch 'develop' into PBE-2773-integrate-telecom-framework
liviu-timar Jan 7, 2025
507e9b3
Clean up
liviu-timar Jan 7, 2025
3be2812
Merge remote-tracking branch 'origin/develop' into PBE-2773-integrate…
liviu-timar Jan 7, 2025
b5861af
Clean up DefaultNotificationHandler
liviu-timar Jan 7, 2025
3c91021
Use fallback notification for fg service
liviu-timar Jan 13, 2025
6b63c03
Adapt active/ringing call handling to newest changes
liviu-timar Jan 13, 2025
08efcfc
Use most recent CallConfig for fg service
liviu-timar Jan 14, 2025
51040ae
Adapt MediaManager to recent changes
liviu-timar Jan 14, 2025
d828660
Remove unnecessary stop fg service call
liviu-timar Jan 14, 2025
2d4edd4
Fix kdocs
liviu-timar Jan 14, 2025
182bea5
Merge branch 'develop' into PBE-2773-integrate-telecom-framework
liviu-timar Jan 14, 2025
26ec98c
Merge branch 'refs/heads/develop' into PBE-2773-integrate-telecom-fra…
liviu-timar Jan 15, 2025
6ef6051
Clean-up MediaManager
liviu-timar Jan 15, 2025
c0ddbe6
Use call sounds
liviu-timar Jan 15, 2025
8b3afc7
Use call config (wip)
liviu-timar Jan 15, 2025
9cc0630
Use call config (finalized)
liviu-timar Jan 23, 2025
badeb7c
Better describe notification handling methods
liviu-timar Jan 24, 2025
5dfcdbc
Rename notification methods and params (breaking changes)
liviu-timar Jan 24, 2025
c056416
Restructure event bridges and other classes
liviu-timar Jan 24, 2025
0a27a91
Add small improvements for StreamToTelecomEventBridge
liviu-timar Jan 27, 2025
1f52e07
Tweak permissions message
liviu-timar Jan 27, 2025
0711cf6
Pass missed call scenario to Telecom
liviu-timar Jan 27, 2025
4b135a3
Remove TelecomHandler from Client and keep TelecomCompat
liviu-timar Jan 27, 2025
5614479
Clean up
liviu-timar Jan 27, 2025
8992090
Refactor telecom event bridge architecture
liviu-timar Jan 28, 2025
8cfa63b
Merge branch 'refs/heads/develop' into PBE-2773-integrate-telecom-fra…
liviu-timar Jan 28, 2025
40a85b7
Fix mic unmute issue in lobby scenario
liviu-timar Jan 29, 2025
c4a81b0
Simplify event handling
liviu-timar Jan 30, 2025
833d90f
Improve logging
liviu-timar Jan 30, 2025
f0f9d31
Make small improvements
liviu-timar Jan 31, 2025
9e22d12
Remove StreamVideoInitHelper (demo-app) changes
liviu-timar Jan 31, 2025
cbb403e
Address CallSoundPlayer comments
liviu-timar Feb 3, 2025
46d43c2
Remove unnecessary runBlocking calls
liviu-timar Feb 3, 2025
6a33a26
Fix issues with handling state
liviu-timar Feb 3, 2025
4d57d26
Clean-up logging
liviu-timar Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ androidxLifecycle = "2.8.6"
androidxStartup = "1.2.0"
androidxActivity = "1.9.2"
androidxDataStore = "1.1.1"
androidxCoreTelecom = "1.0.0-beta01"

googleService = "4.4.2"

androidxComposeBom = "2024.11.00"
Expand Down Expand Up @@ -86,6 +88,7 @@ androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.r
androidx-material = { group = "com.google.android.material", name = "material", version.ref = "androidxMaterial" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidxAppCompat" }
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" }
androidx-core-telecom = { group = "androidx.core", name = "core-telecom", version.ref = "androidxCoreTelecom" }
androidx-activity = { group = "androidx.activity", name = "activity-ktx", version.ref = "androidxActivity" }
androidx-annotation = { group = "androidx.annotation", name = "annotation", version.ref = "androidxAnnotation" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidxContraintLayout" }
Expand Down
81 changes: 56 additions & 25 deletions stream-video-android-core/api/stream-video-android-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ public final class io/getstream/video/android/core/ClientState {
public final fun handleEvent (Lorg/openapitools/client/models/VideoEvent;)V
public final fun hasActiveOrRingingCall ()Z
public final fun removeActiveCall ()V
public final fun removeRingingCall ()V
public final fun removeRingingCall (Z)V
public final fun setActiveCall (Lio/getstream/video/android/core/Call;)V
}

Expand Down Expand Up @@ -894,14 +894,15 @@ public abstract interface class io/getstream/video/android/core/api/SignalServer
}

public abstract interface class io/getstream/video/android/core/audio/AudioHandler {
public abstract fun selectDevice (Lio/getstream/video/android/core/audio/StreamAudioDevice;)V
public abstract fun start ()V
public abstract fun stop ()V
}

public final class io/getstream/video/android/core/audio/AudioSwitchHandler : io/getstream/video/android/core/audio/AudioHandler {
public static final field Companion Lio/getstream/video/android/core/audio/AudioSwitchHandler$Companion;
public fun <init> (Landroid/content/Context;Lkotlin/jvm/functions/Function2;)V
public final fun selectDevice (Lcom/twilio/audioswitch/AudioDevice;)V
public fun selectDevice (Lio/getstream/video/android/core/audio/StreamAudioDevice;)V
public fun start ()V
public fun stop ()V
}
Expand All @@ -912,21 +913,25 @@ public final class io/getstream/video/android/core/audio/AudioSwitchHandler$Comp
public abstract class io/getstream/video/android/core/audio/StreamAudioDevice {
public static final field Companion Lio/getstream/video/android/core/audio/StreamAudioDevice$Companion;
public static final fun fromAudio (Lcom/twilio/audioswitch/AudioDevice;)Lio/getstream/video/android/core/audio/StreamAudioDevice;
public abstract fun getAudio ()Lcom/twilio/audioswitch/AudioDevice;
public abstract fun getAudioSwitchDevice ()Lcom/twilio/audioswitch/AudioDevice;
public abstract fun getName ()Ljava/lang/String;
public abstract fun getTelecomDevice ()Landroidx/core/telecom/CallEndpointCompat;
public static final fun toAudioDevice (Lio/getstream/video/android/core/audio/StreamAudioDevice;)Lcom/twilio/audioswitch/AudioDevice;
}

public final class io/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset : io/getstream/video/android/core/audio/StreamAudioDevice {
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> ()V
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/twilio/audioswitch/AudioDevice;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)Lio/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset;
public final fun component3 ()Landroidx/core/telecom/CallEndpointCompat;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)Lio/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$BluetoothHeadset;
public fun equals (Ljava/lang/Object;)Z
public fun getAudio ()Lcom/twilio/audioswitch/AudioDevice;
public fun getAudioSwitchDevice ()Lcom/twilio/audioswitch/AudioDevice;
public fun getName ()Ljava/lang/String;
public fun getTelecomDevice ()Landroidx/core/telecom/CallEndpointCompat;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
Expand All @@ -937,43 +942,52 @@ public final class io/getstream/video/android/core/audio/StreamAudioDevice$Compa
}

public final class io/getstream/video/android/core/audio/StreamAudioDevice$Earpiece : io/getstream/video/android/core/audio/StreamAudioDevice {
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> ()V
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/twilio/audioswitch/AudioDevice;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Earpiece;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$Earpiece;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Earpiece;
public final fun component3 ()Landroidx/core/telecom/CallEndpointCompat;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Earpiece;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$Earpiece;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Earpiece;
public fun equals (Ljava/lang/Object;)Z
public fun getAudio ()Lcom/twilio/audioswitch/AudioDevice;
public fun getAudioSwitchDevice ()Lcom/twilio/audioswitch/AudioDevice;
public fun getName ()Ljava/lang/String;
public fun getTelecomDevice ()Landroidx/core/telecom/CallEndpointCompat;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone : io/getstream/video/android/core/audio/StreamAudioDevice {
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> ()V
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/twilio/audioswitch/AudioDevice;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone;
public final fun component3 ()Landroidx/core/telecom/CallEndpointCompat;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$Speakerphone;
public fun equals (Ljava/lang/Object;)Z
public fun getAudio ()Lcom/twilio/audioswitch/AudioDevice;
public fun getAudioSwitchDevice ()Lcom/twilio/audioswitch/AudioDevice;
public fun getName ()Ljava/lang/String;
public fun getTelecomDevice ()Landroidx/core/telecom/CallEndpointCompat;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset : io/getstream/video/android/core/audio/StreamAudioDevice {
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> ()V
public fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/twilio/audioswitch/AudioDevice;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;)Lio/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset;
public final fun component3 ()Landroidx/core/telecom/CallEndpointCompat;
public final fun copy (Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;)Lio/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset;
public static synthetic fun copy$default (Lio/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset;Ljava/lang/String;Lcom/twilio/audioswitch/AudioDevice;Landroidx/core/telecom/CallEndpointCompat;ILjava/lang/Object;)Lio/getstream/video/android/core/audio/StreamAudioDevice$WiredHeadset;
public fun equals (Ljava/lang/Object;)Z
public fun getAudio ()Lcom/twilio/audioswitch/AudioDevice;
public fun getAudioSwitchDevice ()Lcom/twilio/audioswitch/AudioDevice;
public fun getName ()Ljava/lang/String;
public fun getTelecomDevice ()Landroidx/core/telecom/CallEndpointCompat;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}
Expand Down Expand Up @@ -4417,14 +4431,14 @@ public class io/getstream/video/android/core/notifications/DefaultNotificationHa
public fun isInForeground ()Z
public fun maybeCreateChannel (Ljava/lang/String;Landroid/content/Context;Lkotlin/jvm/functions/Function1;)V
public static synthetic fun maybeCreateChannel$default (Lio/getstream/video/android/core/notifications/DefaultNotificationHandler;Ljava/lang/String;Landroid/content/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
public fun onIncomingCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public fun onLiveCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public fun onMissedCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public fun onNotification (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public fun onPermissionDenied ()V
public fun onPermissionGranted ()V
public fun onPermissionRationale ()V
public fun onPermissionRequested ()V
public fun onRingingCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public fun showLiveCallNotification (Landroid/app/PendingIntent;Ljava/lang/String;I)V
public fun showMissedCallNotification (Landroid/app/PendingIntent;Ljava/lang/String;I)V
public fun showNotificationCallNotification (Landroid/app/PendingIntent;Ljava/lang/String;I)V
Expand Down Expand Up @@ -4496,10 +4510,10 @@ public abstract interface class io/getstream/video/android/core/notifications/No
public abstract fun getRingingCallNotification (Lio/getstream/video/android/core/RingingState;Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;Z)Landroid/app/Notification;
public static synthetic fun getRingingCallNotification$default (Lio/getstream/video/android/core/notifications/NotificationHandler;Lio/getstream/video/android/core/RingingState;Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;ZILjava/lang/Object;)Landroid/app/Notification;
public abstract fun getSettingUpCallNotification ()Landroid/app/Notification;
public abstract fun onIncomingCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public abstract fun onLiveCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public abstract fun onMissedCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public abstract fun onNotification (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
public abstract fun onRingingCall (Lio/getstream/video/android/model/StreamCallId;Ljava/lang/String;)V
}

public final class io/getstream/video/android/core/notifications/NotificationHandler$Companion {
Expand Down Expand Up @@ -5324,6 +5338,13 @@ public final class io/getstream/video/android/core/socket/sfu/state/SfuSocketSta
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/video/android/core/sounds/CallSoundPlayer {
public fun <init> (Landroid/content/Context;)V
public final fun cleanUpAudioResources ()V
public final fun playCallSound (Landroid/net/Uri;)V
public final fun stopCallSound ()V
}

public abstract interface class io/getstream/video/android/core/sounds/RingingConfig {
public abstract fun getIncomingCallSoundUri ()Landroid/net/Uri;
public abstract fun getOutgoingCallSoundUri ()Landroid/net/Uri;
Expand All @@ -5349,6 +5370,16 @@ public final class io/getstream/video/android/core/sounds/Sounds {
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/video/android/core/telecom/TelecomEvent : java/lang/Enum {
public static final field ANSWER Lio/getstream/video/android/core/telecom/TelecomEvent;
public static final field DISCONNECT Lio/getstream/video/android/core/telecom/TelecomEvent;
public static final field SET_ACTIVE Lio/getstream/video/android/core/telecom/TelecomEvent;
public static final field SET_INACTIVE Lio/getstream/video/android/core/telecom/TelecomEvent;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lio/getstream/video/android/core/telecom/TelecomEvent;
public static fun values ()[Lio/getstream/video/android/core/telecom/TelecomEvent;
}

public final class io/getstream/video/android/core/utils/AndroidUtilsKt {
public static final fun shouldShowRequestPermissionsRationale (Landroid/app/Activity;[Ljava/lang/String;)Z
}
Expand Down
1 change: 1 addition & 0 deletions stream-video-android-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.lifecycle.process)
implementation(libs.androidx.core.telecom)

// coroutines
implementation(libs.kotlinx.coroutines.core)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -337,9 +337,7 @@ public class Call(

response.onSuccess {
state.updateFromResponse(it)
if (ring) {
client.state.addRingingCall(this, RingingState.Outgoing())
}
if (ring) client.state.addRingingCall(this, RingingState.Outgoing())
}
return response
}
Expand Down Expand Up @@ -375,9 +373,9 @@ public class Call(
clientImpl.permissionCheck.checkAndroidPermissions(clientImpl.context, this)
// Check android permissions and log a warning to make sure developers requested adequate permissions prior to using the call.
if (!permissionPass) {
logger.w {
logger.d {
"\n[Call.join()] called without having the required permissions.\n" +
"This will work only if you have [runForegroundServiceForCalls = false] in the StreamVideoBuilder.\n" +
"This will work only if you set [runCallServiceInForeground = false] in StreamVideoBuilder.build().\n" +
"The reason is that [Call.join()] will by default start an ongoing call foreground service,\n" +
"To start this service and send the appropriate audio/video tracks the permissions are required,\n" +
"otherwise the service will fail to start, resulting in a crash.\n" +
Expand Down Expand Up @@ -508,6 +506,7 @@ public class Call(
private fun Call.monitorSession(result: JoinCallResponse) {
sfuEvents?.cancel()
sfuListener?.cancel()

startCallStatsReporting(result.statsOptions.reportingIntervalMs.toLong())
// listen to Signal WS
sfuEvents = scope.launch {
Expand Down Expand Up @@ -797,7 +796,7 @@ public class Call(
camera.disable()
microphone.disable()
client.state.removeActiveCall() // Will also stop CallService
client.state.removeRingingCall()
client.state.removeRingingCall(willTransitionToOngoing = false)
cleanup()
}

Expand Down Expand Up @@ -1220,8 +1219,7 @@ public class Call(
logger.d { "[accept] #ringing; no args" }
state.acceptedOnThisDevice = true

clientImpl.state.removeRingingCall()
clientImpl.state.maybeStopForegroundService(call = this)
clientImpl.state.removeRingingCall(willTransitionToOngoing = true)
return clientImpl.accept(type, id)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1476,4 +1476,4 @@ private fun getCallingMethod(): String {
}
}

private const val REJECT_REASON_TIMEOUT = "timeout"
internal const val REJECT_REASON_TIMEOUT = "timeout"
Loading
Loading