Fixed issue with headset audio routing when connecting it during call

This commit is contained in:
Sylvain Berfini 2022-02-09 13:13:47 +01:00
parent 101d9aa931
commit b30f5baef6
3 changed files with 15 additions and 4 deletions

View file

@ -257,8 +257,14 @@ class Api26Compatibility {
vibrator.vibrate(effect, audioAttrs)
}
fun changeAudioRouteForTelecomManager(connection: NativeCallWrapper, route: Int) {
fun changeAudioRouteForTelecomManager(connection: NativeCallWrapper, route: Int): Boolean {
Log.i("[Telecom Helper] Changing audio route [$route] on connection ${connection.callId}")
if (connection.callAudioState.route == route) {
Log.w("[Telecom Helper] Connection is already using this route")
return false
}
connection.setAudioRoute(route)
return true
}
fun requestTelecomManagerPermission(activity: Activity, code: Int) {

View file

@ -232,10 +232,11 @@ class Compatibility {
}
}
fun changeAudioRouteForTelecomManager(connection: NativeCallWrapper, route: Int) {
fun changeAudioRouteForTelecomManager(connection: NativeCallWrapper, route: Int): Boolean {
if (Version.sdkAboveOrEqual(Version.API26_O_80)) {
Api26Compatibility.changeAudioRouteForTelecomManager(connection, route)
return Api26Compatibility.changeAudioRouteForTelecomManager(connection, route)
}
return false
}
/* Contacts */

View file

@ -112,7 +112,11 @@ class AudioRouteUtils {
Log.i("[Audio Route Helper] Telecom Helper & matching connection found, dispatching audio route change through it")
// We will be called here again by NativeCallWrapper.onCallAudioStateChanged()
// but this time with skipTelecom = true
Compatibility.changeAudioRouteForTelecomManager(connection, route)
if (!Compatibility.changeAudioRouteForTelecomManager(connection, route)) {
Log.w("[Audio Route Helper] Connection is already using this route internally, make the change!")
applyAudioRouteChange(callToUse, types)
changeCaptureDeviceToMatchAudioRoute(callToUse, types)
}
} else {
Log.w("[Audio Route Helper] Telecom Helper found but no matching connection!")
applyAudioRouteChange(callToUse, types)