我一直在使用 Kotlin 在 Android Studio 中构建一个独立的呼叫应用程序tutorial
:https ://developer.android.com/guide/topics/connectivity/telecom/selfManaged
我已经实现了所有必要的东西,并多次阅读了整个文档,但我仍然无法让我的代码正常工作。我遇到的问题是接听来电和拨打电话。
传入调用:根据 Logcat,每个函数都以正确的顺序调用。但是,当有来电时,我总是会收到以下信息:
I/TelecomFramework: CallHandler: reject TC@71_1: (...->CSW.hCCC)->CS.r->H.CS.r(cet/cast/cast)@E-E-E-Bn0
I/TelecomFramework: CallHandler: notifyCreateConnectionComplete TC@71_1: (...->CSW.hCCC)->CS.crCoC->H.CS.crCoC(cet/cast)@E-E-E-Bn0
CallHandler
是我实现的类之一,它扩展了ConnectionService
. 该类中没有拒绝呼叫的函数或命令(如信息中所示)。当我尝试使用call.answer()
或接听电话时connection.setActive()
,应用程序崩溃且没有任何错误消息。我已经尝试过调试以及我想到的所有其他事情,但我找不到解决方案。
拨出电话:我真的不知道为什么这不起作用,似乎连连接都没有建立。再次以正确的顺序调用每个函数,我没有收到任何错误消息。我得到以下信息:
I/TelecomFramework: CallHandler: notifyCreateConnectionComplete TC@173_1: (...->CSW.hCCC)->CS.crCoC->H.CS.crCoC(cast)@E-E-E-gX
I/TelecomFramework: CallHandler: onAudioStateChanged TC@173_1 [AudioState isMuted: false, route: EARPIECE, supportedRouteMask: EARPIECE, SPEAKER, activeBluetoothDevice: [null], supportedBluetoothDevices: []]: CS.cASC->H.CS.cASC@AAE
这是CallHandler
课程:
class CallHandler : ConnectionService(){
@RequiresApi(Build.VERSION_CODES.O)
override fun onCreateOutgoingConnection(
connectionManagerPhoneAccount: PhoneAccountHandle?,
request: ConnectionRequest?
): Connection {
//return super.onCreateOutgoingConnection(connectionManagerPhoneAccount, request)
val callConnection = CallConnection(applicationContext)
callConnection.setInitializing()
callConnection.setInitialized()
callConnection.setDialing()
callConnection.setActive()
Log.i("CallHandler", "onCreateOutgoingConnection called")
return callConnection
}
@RequiresApi(Build.VERSION_CODES.O)
override fun onCreateIncomingConnection(
connectionManagerPhoneAccount: PhoneAccountHandle?,
request: ConnectionRequest?
): Connection {
// super.onCreateIncomingConnection(connectionManagerPhoneAccount, request)
val callConnection = CallConnection(applicationContext)
callConnection.setRinging()
callConnection.setInitializing()
Log.i("CallHandler", "onCreateIncomingConnection Called")
return callConnection
}
我已经删除了onCreateIncomingConnectionFailed
(和传出的)功能,因为它们所做的只是展示祝酒词。是在其 initCallConnection()
中扩展connection
和设置的类。connectionProperties = PROPERTY_SELF_MANAGED
我真的很感激任何帮助。我一直在寻找这个问题好几天了,但没有找到原因或解决方案。