Workaround missing audio focus requests & wrong audio manager mode when TelecomManager APIs aren't available on device

This commit is contained in:
Sylvain Berfini 2025-12-01 10:11:31 +01:00
parent c99acbb5e1
commit 3ffda24b82

View file

@ -68,15 +68,14 @@ class TelecomManager
} }
} }
private val hasTelecomFeature = context.packageManager.hasSystemFeature("android.software.telecom")
private var currentlyFollowedCalls: Int = 0 private var currentlyFollowedCalls: Int = 0
init { init {
val hasTelecomFeature =
context.packageManager.hasSystemFeature("android.software.telecom")
Log.i( Log.i(
"$TAG android.software.telecom feature is [${if (hasTelecomFeature) "available" else "not available"}]" "$TAG android.software.telecom feature is [${if (hasTelecomFeature) "available" else "not available"}]"
) )
try { try {
callsManager.registerAppWithTelecom( callsManager.registerAppWithTelecom(
CallsManager.CAPABILITY_BASELINE or CallsManager.CAPABILITY_BASELINE or
@ -194,12 +193,21 @@ class TelecomManager
@WorkerThread @WorkerThread
fun onCoreStarted(core: Core) { fun onCoreStarted(core: Core) {
Log.i("$TAG Core has been started") Log.i("$TAG Core has been started")
core.addListener(coreListener) if (hasTelecomFeature) {
core.addListener(coreListener)
} else {
Log.w(
"$TAG android.software.telecom feature is not available, enable audio focus requests in Linphone SDK"
)
coreContext.core.config.setBool("audio", "android_disable_audio_focus_requests", false)
}
} }
@WorkerThread @WorkerThread
fun onCoreStopped(core: Core) { fun onCoreStopped(core: Core) {
Log.i("$TAG Core is being stopped") Log.i("$TAG Core is being stopped")
core.removeListener(coreListener) if (hasTelecomFeature) {
core.removeListener(coreListener)
}
} }
} }