gpt4 book ai didi

android - 将 telecomManager 与我们的自定义协议(protocol)一起使用

转载 作者:行者123 更新时间:2023-11-29 23:23:35 31 4
gpt4 key购买 nike

我正在尝试使用本指南实现与电信服务的互连:https://developer.android.com/guide/topics/connectivity/telecom/

我已经可以在没有电信服务的情况下显示我自己的全屏来电 UI,调用和接听视频电话。所有,我想用 Telecomservice 做的,只是告诉 Android 操作系统,我们的应用程序正在特定时刻开始/停止视频通话,并从其他调用应用程序接收调用保持/未保持事件。

主要问题是:

1) addNewIncomingCall 在来电的情况下什么都不做:onCreateIncomingConnection 回调没有触发(甚至我的 ConnectionService 的 onCreate 回调根本没有触发)。为什么连接服务没有启动?

2) 在拨出电话的情况下,placeCall 尝试使用我们的用户 ID 打开系统调用应用程序,将其称为电话或 SIP 号码。我可以在没有系统 UI 的情况下使用 placeCall 吗?

或者,如果我只想通知系统视频通话,我可以使用除 TelecomService 之外的其他选项吗?

连接创建如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
connection?.connectionProperties = Connection.PROPERTY_SELF_MANAGED
}
connection?.connectionCapabilities = Connection.CAPABILITY_HOLD and Connection.CAPABILITY_SUPPORT_HOLD
connection?.setVideoState(VideoProfile.STATE_BIDIRECTIONAL)

调用电话:

val telecomService = context.getSystemService(Context.TELECOM_SERVICE) as TelecomManager
try {
val uri = Uri.fromParts(PhoneAccount.SCHEME_SIP, teacherInfo.name, null)
telecomService.placeCall(uri, Bundle.EMPTY)
} catch (e: Throwable) {
e.printStackTrace()
}

接听电话:

val telecomService = applicationContext.getSystemService(Context.TELECOM_SERVICE) as TelecomManager
try {
Log.d("VideoCOnnection", "addNewIncomingCall")
telecomService.addNewIncomingCall(CallUtils.getAccountConnection(telecomService), Bundle.EMPTY)
} catch (e: Throwable) {
Log.d("VideoCOnnection", "crash")
e.printStackTrace()
}


@SuppressLint("MissingPermission")
fun getAccountConnection(teleconManager: TelecomManager) : PhoneAccountHandle? {
return if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val enabledAccounts = teleconManager.callCapablePhoneAccounts
for(account in enabledAccounts) {
if(account.componentName.className.equals(BindTelecomService::class.java.canonicalName)) {
return account
}
}
return null
} else
null
}

最佳答案

https://github.com/pranksterN1/TComTest https://stackoverflow.com/users/4466771/prankstern1发布了这个有效的示例,但我仍然找不到,我的代码有什么问题:)额外的服务,例如示例中的 CallService 仅用于连接监听,可以用 GreenRobot 的 eventbus 或 Rx 代替以简化

关于android - 将 telecomManager 与我们的自定义协议(protocol)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53868446/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com