diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallAudioRouter.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallAudioRouter.kt index 585f3324..989a7e7d 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallAudioRouter.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallAudioRouter.kt @@ -521,9 +521,15 @@ class CallAudioRouter { val generation = ++btProfileGeneration try { val adapter = BluetoothAdapter.getDefaultAdapter() ?: return + val received = mutableSetOf() // Дубликат callback не возобновляет уже освобождённый proxy. val accepted = adapter.getProfileProxy(ChatApplication.instance, object : BluetoothProfile.ServiceListener { override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) { synchronized(this@CallAudioRouter) { + if (proxy in received && proxy !== btHeadset && proxy !in btProxies) { + LogManager.addLog("WARN", "CallAudioRouter", "released BT proxy callback ignored proxy=$proxy generation=$generation") + return + } + received.add(proxy) btProxies[proxy] = adapter to profile if (!started || generation != btProfileGeneration || profile != BluetoothProfile.HEADSET || proxy !is BluetoothHeadset) { LogManager.addLog("WARN", "CallAudioRouter", "retired BT proxy received proxy=$proxy profile=$profile " +