Android 连接服务与 Twilio

Android ConnectionService with Twilio

我正在开发一款允许用户通过 Twilio 进行通信的应用程序。这是使用 FCM 通知工作的,当电话被接听时可以正常说话和听到。

由于我必须构建一个 UI 拨号盘来管理呼叫控制,所以我考虑使用 ConnectionService 文档说它支持 VOIP;我会被解雇构建 UI.

现在我卡住了;我不知道如何合并这两个工具。

当我开始调用 (Twilio) 时,我还调用了尝试打开 Android UI Phone 的 TelecomManager,请参阅下面的代码:

Uri uri = Uri.fromParts("tel", params.getString("To"), null);
Bundle callInfoBundle = new Bundle();
callInfoBundle.putString("to", params.getString("To"));
Bundle callInfo = new Bundle();
callInfo.putParcelable(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS,callInfoBundle);
callInfo.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, handle);
tm.placeCall(uri, callInfo);
tm.showInCallScreen(true);
Log.d(TAG,"Outgoing call successful");

此时,我可以在短时间内看到 Android UI Phone,以及 params 和顶部它说 "Disconected".

我还读到我应该使用 SIP,只有这样 Android 才能工作,但我不知道更多。

我是这方面的新手,我不确定自己是否走在正确的道路上,也许我应该继续构建自己的 UI 表盘,例如 this suggestion;但首先我想知道是否值得继续使用 ConnectionService.

此处为 Twilio 开发人员布道师。

Android 语音 SDK 团队一直在研究使用 ConnectionService,但我们现在没有它的示例。有一个 ongoing discussion on GitHub 您可能会从中获得一些见解,但这就是我现在能为您提供的全部内容。

我们正在做 Cordova + CallKit + Twilio。目前正在努力解决 Android 问题。

这是一个使用 iOS Callkit 和 Android(连接服务)的插件 https://github.com/mattkhaw/cordova-plugin-callkit

这是基于另一个有更多文档的 https://github.com/WebsiteBeaver/CordovaCall

主要代码在onAnswer嵌套方法中。 我们的第一个大问题是 ConnectioNService 和 MainActivity 同时响应 VOIP 推送,因此当用户按下 onAnswer 并且我们切换到 TwilioVideoActivity 时,呼叫可能无法连接。我不得不推迟。

还应该只有一个 TwilioVideoActivity 实例。 launchMode:singleInstance.

一个问题是旧 Android 上的 VOIP 屏幕是全屏的,它自己的 activity 称为 InCallActivity 但在 Android 10 上,当您接听电话时,它只是一个小下拉菜单出现并有两个 DECLINE/ANSWER 按钮。

一个有用的 adb 命令将显示 TASK 和 Activities 堆栈并显示 InCallActivity 以及隐藏 activity 的位置是:

/Users/gbxc/Library/Android/sdk/platform-tools/adb shell dumpsys activity activities | sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p'