我正在开发一款允许用户通过Twilio进行通信的应用。这正在使用FCM通知,其中呼叫接听时可以正常说话和听到。
由于我必须构建一个UI拨号来管理调用的控件,我正在考虑使用ConnectionService,其中doc说它支持VOIP;我会因为构建UI而被解雇。
现在我被困住了;我不知道如何合并这两个工具。
当我开始呼叫(Twilio)时,我也打电话给尝试打开Android UI手机的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手机,其中包含参数,并在其上方显示“Disconected”。
我还读到我应该使用SIP,只有这样才能使用Android,但我不知道更多。
我是新手,我不确定我是否走在正确的道路上,也许我应该像this suggestion那样继续建立我自己的用户界面拨号;但首先我想知道是否值得继续使用 ConnectionService 。
答案 0 :(得分:0)
Twilio开发者传道者在这里。
Android Voice SDK团队一直在研究使用ConnectionService
,但我们现在没有它的示例。有一个ongoing discussion on GitHub你可能会得到一些见解,但这就是我现在所拥有的一切。
答案 1 :(得分:0)
我们正在做 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 实例。启动模式:单实例。
一个问题是旧版 Android 上的 VOIP 屏幕是全屏的,它自己的活动称为 InCallActivity,但在 Android 10 上,当您接听电话时,它只会出现一个小下拉菜单,并有两个拒绝/接听按钮。
一个有用的 adb 命令,它将向您显示 TASK 和活动堆栈,并向您显示 InCallActivity 以及您的活动隐藏的位置:
/Users/gbxc/Library/Android/sdk/platform-tools/adb shell dumpsys activity activities | sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p'