如何在其他呼叫运行时以编程方式合并呼叫(电话会议)

Aam*_*han 40 api merge android

我的要求是这样的:假设我在那个时间拨打一个号码,我想以编程方式拨打另一个号码.到目前为止,我所做的是:我可以拨打特定号码,而某些电话已经开始.例如,假设我呼叫号码123并且在1分钟后(通过使用Alarm Manger我触发事件来呼叫另一个号码456并且已完成!

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:456"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的意图打电话,现在我能够看到手机上的屏幕上有一个按钮来合并通话:

手机截图

在此图像中,您可以看到合并呼叫的按钮.现在,当用户点击合并时,它将合并所有3个呼叫.我想以编程方式进行,而不是使用用户界面.

MeT*_*TeO 15

你的问题似乎很有趣,所以我开始挖掘Android Source.这是我发现的:

您发布的图片中的活动称为InCallUI

当你开始环顾四周时,你会发现第463行的InCallPresenter:

final boolean canMerge = activeCall.can(Capabilities.MERGE_CALLS);
Run Code Online (Sandbox Code Playgroud)

然后在472:

CallCommandClient.getInstance().merge();
Run Code Online (Sandbox Code Playgroud)

当您在CallCommandClient中检查merge()方法时,您会发现它使用ICallCommandService接口,我认为这就是您在哪里寻找:)

CallCommandClient的初始化在第193行的CallHandlerService中.

希望这有帮助,祝你好运.

PS.我列出的API主要是内部Android内容.您可能必须使用反射来调用它或者根本不可能 - 它可能无法用于您的应用程序,因为它未标记为系统应用程序.

  • 我按照你的代码执行此操作,但我得到了ClassNotFound`com.android.incallui.CallCommandClient`. (4认同)
  • @MeTTeO ....我已经制作了一个自定义的android.jar,我可以访问所有内部和隐藏的API方法,但无法访问`InCallUI`,`CallCommandClient`.此外,我无法使用**REFLECTION**访问它们.请详细说明您的建议方式. (3认同)
  • 你不能直接调用CallCommandClient,因为这个类在InCallUI应用程序中,这是一个完全独立的apk包 - 不是Android SDK的一部分,而是一个独立的应用程序.相反,您应该看看CallHandlerService如何访问ICallCommandService. (3认同)
  • @MeTTeO,我已经完成了我可以使用的概念,但是作为您的方法,无法在第三方应用程序中访问这些方法.所以我认为上述解释没有任何意义.所以你能告诉我怎么办吗? (2认同)

Akh*_*Dad 8

Android API不支持呼叫合并功能,您可以看到此线程. https://groups.google.com/forum/?fromgroups#!searchin/android-developers/conference $ 20call/android-developers/6OXDEe0tCks/8cuKdW1J9b8J但你可以做的是打开手机的呼叫板屏幕,使用来自用户的援助可以添加另一个电话或合并电话.

  • 我能够打电话给第三方,问题是如何合并,当我们建立第三个电话的同时已经有两个人正在讲话时合并选项来自手机屏幕,我不希望用户点击合并按钮并建立一个电话会议,我想以Programetically合并它 (2认同)

use*_*123 5

您无法使用智能手机管理会议.您需要一个可以为您执行此操作的中间服务.您可以使用CCXML对会议管理器进行编程.

Voxeo有一个很好的CCXML实现托管平台,您可以查看有关如何设置会议的文档."在CCXML 1.0中学习CCXML 1.0 \多方会议"中有一些示例.

您可以在Voxeo上免费开发和测试,如果您将其投入生产,他们只会开始向您收费.另一种选择是Twillio.

以下是您在其平台上编制电话会议的方式的链接.

检查链接,您将获得有用的信息.#courtesy-所以