问题标签 [telecom-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
380 浏览

android - InCallService 和 ConnectionService 的区别

我想制作一个自定义拨号器应用程序,它将替换我的默认拨号器应用程序。我进行了一些搜索,发现可以使用ConnectionServiceInCallService构建拨号器应用程序。 这里他们使用connectionService 来制作调用应用程序,而这里IncallService 被用来制作调用应用程序。

ConnectionService 的用例:

  1. 可以拨打电话(VoIP 或其他方式)并希望将这些电话集成到内置电话应用程序中。称为系统管理的ConnectionService。
  2. 是一个独立的呼叫应用程序,不希望将他们的呼叫集成到内置电话应用程序中。称为自我管理的 ConnectionService。

InCallService的用例:

此服务由希望提供管理电话呼叫功能的应用程序实现。

所以一个区别是视频通话。使用 connectionService 可以进行视频通话。我还缺少其他区别吗?我应该使用哪一个来制作自定义拨号器应用程序?

0 投票
1 回答
236 浏览

android - 在 ConnectionService.onCreateIncomingConnection 中调用 TelecomManager.addNewIncomingCall 时如何接收传入的 Bundle 'extras'?

我正在尝试使用 Android 的 ConnectionService 创建一个呼叫应用程序。我可以成功接听电话,但我试图通过 TelecomManager.addNewIncomingCall 中的“extras”参数传递应用程序特定的数据。但是,当我在 ConnectionService 类中实际创建 Connection 对象时,我找不到访问我设置和传入的 Bundle 的位置。

当我检查 onCreateIncomingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) 中的传入参数时,connectionManagerPhoneAccount.getExtras() 或 request.getExtras() 都不是我传递给 TelecomManager.addNewIncomingCall 的额外参数。

有没有人在将它传递给 TelecomManager.addNewIncomingCall 后设置和检索这个额外的对象?

我正在尝试将呼叫的电话号码传递给 Connection 对象,以便我可以正确解析来自设备联系人的呼叫者 ID 并显示它。

代码:

0 投票
0 回答
76 浏览

android - ConnectionService 未从 TelecomManager#placeCall 启动

我需要拦截设备框架发出的呼出事件。
按照android 指南,我停在第 3 点Telecom 子系统绑定到您的应用的 ConnectionService 实现。,也就是我到了这个地步:

呼叫流程

连接服务

显现

问题:调用通过设备框架开始,但从未触发所有服务日志。我的 Android 版本是 10。谢谢

0 投票
0 回答
24 浏览

java - 如何在语音通信期间将 CallAudiostate 路由到耳机

即使我没有在耳机插孔中连接任何物理设备但无法实现它,我也想强制将声音从听筒传到耳机插孔实现这一目标?

0 投票
0 回答
347 浏览

android - 使用 TelecomManager.placeCall 进行自定义呼叫

我正在尝试在两个已在其设备上安装我的应用程序的用户之间使用 TelecomManager 进行呼叫的自定义实现

按照本指南,我实现了连接服务、Connection 的子类、添加权限、注册了 PhoneAccount 等等......

我已经第三周努力理解的事情是如何在不使用电话号码但用户名或用户 ID 的情况下在我的应用程序用户之间拨打电话。

下面的代码开始从我的设备拨打电话,但此电话永远不会到达最终用户设备

需要提及的是,在我的 BroadcastReceiver 实现中,我可以检测到来自其他应用程序的传入呼叫,因此我似乎正确处理了呼叫检测,并且来自上述代码的呼叫从未真正发送到预期的用户设备。

现在是问题所在。我觉得我错过了一些重要的东西。具有相同应用程序的设备如何在没有电话号码的情况下相互通信?将用户名传递给 telemanager.placeCall 真的足够了吗,它应该设法找到安装了应用程序的正确设备并拨打电话?telemanager如何区分在哪里拨打电话?

对不起,不清楚的问题,这是我第一次做与电话有关的事情,我觉得我很幸运地理解了这个主题,而且很难让问题更具体,因为我不完全知道我错过了什么。

我将在下面放一些我现在正在使用的代码

开始拨出电话

在连接服务中

创建电话帐户

感谢您的时间!任何可以帮助我理解更多的建议和链接将不胜感激!

0 投票
1 回答
87 浏览

android - Android呼叫应用程序未重置音频流

我有一个单一的活动应用程序设置为使用自我管理的连接服务,因为我们正在使用音频和视频并且希望能够利用该系统。但是,我们关闭连接或更改音频流的方式导致了一个问题,我将在此处尽我所能描述。

当我开始我们的应用程序的呼叫时,一切都按照我们想要的方式工作,它从免提电话开始,但对免提电话按钮的按钮反应很好,而且音频效果很好!但是,当通话结束时,我的手机卡在了一种模式,即任何通知都不会通过扬声器播放,而是通过听筒播放,这意味着我的所有通知都相当安静。我相信这是因为我们没有正确重置音频流。我不确定这是否意味着在 Connection 对象的 destroy() 中发生,或者在我们请求音频焦点等的 Activity 中发生......下面是我认为是罪魁祸首的代码

此方法初始化音频是从单个 Activity 的 onResume() 调用的。我们根据用户设备的 Build 版本走两条不同的请求路径

所以这里是较新版本的 AudioFocusRequest

这是更过时的 OnAudioFocusChangeListener

最后,我们有从 Activity 中的 onPause() 调用的 tearDownAudio() 方法

我的猜测是问题出在 tearDownAudio() 方法的某个地方,因为设备上的音频在开始和通话期间工作得很好,但在通话结束后没有返回到正常流。

由于我们使用的是自我管理的连接服务,因此 ConnectionService 实现中也可能存在问题,但我的第一直觉是上面的代码是问题所在。

0 投票
1 回答
66 浏览

java - Kotlin 到 Java 的迁移

我无法翻译(从 Kotlin 到 Java)或理解service.connectionListener = { addConnection(it) }在以下文件的内部类中找到的此语句:

我无法翻译上述声明(已注释掉):

如果您需要更多参考资料,这是我正在翻译的项目: https ://github.com/dmalukov/TComTest/tree/master/app/src/main/java/com/example/tcomtest

这是问题的扩展形式:

使用电信的自我管理电话呼叫

0 投票
0 回答
88 浏览

java - 找到 JSMPP 否定响应 00000001(消息长度无效)

我有这个错误:jsmpp.extra.NegativeResponseException:否定响应 00000001(消息长度无效)。会有什么问题?我正在使用 SMSC 模拟器,它返回给我一个消息 ID,但是当我将代码传递给我的测试团队时,他们收到错误,我该如何解决?

完整的错误堆栈是:

16:00:01.011 [main] INFO com.notificaciones.util.LoggerNotificacionesMDB - 连接 16:00:01.039 [main] INFO com.notificaciones.util.LoggerNotificacionesMDB - 与 SMSC 连接,系统 ID 为 12545 1 16:00:01.068 [main ] 错误 com.notificaciones.util.LoggerNotificacionesMDB - 收到否定响应 org.jsmpp.extra.NegativeResponseException:在 org.jsmpp.session.AbstractSession.validateResponse(AbstractSession.java:284) 找到否定响应 00000001(消息长度无效)~[ notifysat-0.0.1-jar-with-dependenciesVersion2.jar:?] at org.jsmpp.session.AbstractSession.executeSendCommand(AbstractSession.java:345) ~[notifysat-0.0.1-jar-with-dependenciesVersion2.jar:? ] 在 org.jsmpp.session.SMPPSession.submitShortMessage(SMPPSession.java:384) ~[notifysat-0.0.1-jar-with-dependenciesVersion2.jar:?] 在 com.notifysat.Principal.main(Principal.java:117) [notifysat-0.0.1-jar-with-dependenciesVersion2.jar:?]

我正在使用:jsmpp 2.3.12-SNAPSHOT

0 投票
0 回答
41 浏览

java - 如何从 Android 上的通话目录运行 voip 应用程序

我开发了一个带有 android ConnectionServices 和电信框架的语音通话应用程序。

当收到来自 firebase 的来电通知时,我可以显示本机通话屏幕,一切都很好。我想添加两个功能;

  1. 当我从目录中选择联系人时,我想选择我的应用程序开始通话并在我的应用程序中获取联系人数据,例如 ios callkit 提供
  2. 当我接到电话时,我的应用程序会创建通话记录,并且我想在通过我的应用程序点击此电话时回电。

有可能用android java做这个吗?

0 投票
0 回答
19 浏览

android - Android Telecom Manager 隐藏/禁用添加呼叫和发送消息按钮

我正在尝试使用 Telecom Manager API 来显示用于 VoIP 呼叫的本机拨号器 UI,但我不知道如何隐藏或禁用“添加呼叫”和“发送消息”按钮。

有没有人已经尝试过并找到了一种方法来做到这一点?

提前致谢。