问题标签 [android-connectionservice]
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.
android - 如何创建一个启用了 SCHEME_SIP uri 且在重启时不会被删除的 PhoneAccount?
我在 android 上构建了一个 WebRTC 软电话客户端(使用 React Native),但该服务使用正确的 uri 进行拨号(不仅仅是电话号码),所以为了获得连接服务集成,我们使用了 PhoneAccount,我将允许的 uri 类型设置为包括SCHEME_SIP - 没有它,我无法使用 tel: uri 拨号,因为它没有遵循正确的格式 - 弹出 UI 警报告诉我。
一切都很好,一切正常,直到手机重新启动并且 PhoneAccount 从列表中消失,如果不再次打开应用程序并启用 PhoneAccount,我们将无法再拨打/接听电话。
我使用一个名为 react-native-callkeep 的项目来处理 callkit/connection 服务,您可以在下面看到我添加对 SIP uris 支持的补丁。
所以是的,在重新启动之前一切都很好,并且 adb 在重新启动期间显示这些日志。
经过一番谷歌搜索后,您将...
因此,如果您的电话帐户附加了一个 SIP 方案,而您没有附加相应的 SipProfile,则您的呼叫帐户/电话帐户将被删除......很有用。
因此,我创建了一个名称与电话帐户 ID 相同的 sip 配置文件……但看起来它没有保存在 SipProfileDb 中(在该代码中引用)……然后重新启动当然,它不在数据库中进行检查……我们绕着圈子转。据我所知,我无法访问该 sipPorofileDb 及其纯粹用于在本机电话应用程序的设置 UI 中创建的帐户。
A) 我可以将 SipProfileDb 引入我的代码并保存到其中吗?如果要这样做;那为什么我找不到任何文档呢?
B)如果我不能,我错过了什么?我可以创建一个启用了 SIP uri 的 PhoneAccount,因为它只能被电信服务删除,这非常奇怪,感觉就像一个错误。
android - android.permission.BIND_TELECOM_CONNECTION_SERVICE 权限被拒绝
我想为 Voip 拨号器应用程序实现“android.telephony”库。所以根据这个https://developer.android.com/reference/android/telecom/ConnectionService我正在尝试注册PhoneAccount。我正在像下面那样做,
尽管我已经包含了许可,但我得到了以下异常
显现,
像这样实现运行时权限https://stackoverflow.com/a/40490990/11630822
我对 BIND_TELECOM_CONNECTION_SERVICE 权限的请求被拒绝。
不知道这是什么原因。
提前致谢。
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 并显示它。
代码:
android - Android 获取 Wifi 连接状态
我目前正在使用NetworkRequest
和NetworkCallback
方法(由 Google 官方推荐)来获取 Wifi 连接的状态,并且它可以部分工作。
我期待onUnavailable()
将在: 时被调用close app -> turn off Wifi -> launch app
,但是什么也没发生:
android - ConnectionService 未从 TelecomManager#placeCall 启动
我需要拦截设备框架发出的呼出事件。
按照android 指南,我停在第 3 点Telecom 子系统绑定到您的应用的 ConnectionService 实现。,也就是我到了这个地步:
呼叫流程
连接服务
显现
问题:调用通过设备框架开始,但从未触发所有服务日志。我的 Android 版本是 10。谢谢
android - 要求用户解锁屏幕
我正在使用react-native-webrtc/react-native-callkeep。
当用户接听来电并且手机被锁定时,是否可以要求用户解锁手机才能打开我的应用程序?和 WhatsApp 一样,当有视频通话时,手机必须解锁才能接听电话
android - VoIP 通话后 Android 通知无法以正确的音量播放
我已经在原生 Android 应用程序中实现了 VoIP 呼叫,但我们发现了一个我被困住的错误。如果有帮助的话,我将使用 Twilio 进行 VoIP 通话。
如果我从我们的应用程序拨出VoIP 电话,在通话结束后,如果我将应用程序置于后台并收到通知,通知的音量大约是我拨打电话之前的一半。这不仅是来自我的应用程序的通知,而且其他应用程序也受到影响。如果我将我的应用程序从应用程序历史记录中滑出,使其不再在后台运行,则通知将返回以正确音量播放。
当我接到来电时不会发生这种情况,即使我已经验证相同的代码会断开呼叫连接,无论它是传入还是传出。
我已经验证,当通知进来时,设备的通知音量仍然使用 AudioManager 的getStreamVolume(AudioManager.STREAM_NOTIFICATION)
API 一直调高。
由于似乎所有应用程序都受到了影响,而不仅仅是我自己的应用程序,我想我可以放心地假设问题不是播放通知声音的代码。我在想也许与 VoIP 通话有关的某些东西没有被正确释放,并且操作系统本身正在以较低的音量播放音调,因为它仍然认为我们正在通话,但我找不到任何证据.
我已经确认我Connection
的调用对象是调用onDisconnect()
, 和destroy()
。我ConnectionService
的也被破坏了。通知时的通话状态不是CALL_STATE_OFFHOOK
根据TelephonyManager
.
您还能想到其他什么会导致通知以降低的音量播放吗?
android - Android 电信/连接服务:从最近的通话记录中打开应用
我已经能够实现ConnectionService
并Android.Telecom
接听来电。我在电话应用程序的最近通话中看到了来电显示的电话号码/姓名。当点击与我的应用程序关联的任何号码/名称时,我想打开我的应用程序。当我点击它时,它会显示“为此呼叫选择 sim”,并带有我的网络提供商和我的应用程序的选项。当我点击我的应用程序时,它没有打开我的应用程序。
基本上我想在点击最近通话时打开我的应用程序 - >电话/姓名。那么如何实现呢?
android - Android呼叫应用程序未重置音频流
我有一个单一的活动应用程序设置为使用自我管理的连接服务,因为我们正在使用音频和视频并且希望能够利用该系统。但是,我们关闭连接或更改音频流的方式导致了一个问题,我将在此处尽我所能描述。
当我开始我们的应用程序的呼叫时,一切都按照我们想要的方式工作,它从免提电话开始,但对免提电话按钮的按钮反应很好,而且音频效果很好!但是,当通话结束时,我的手机卡在了一种模式,即任何通知都不会通过扬声器播放,而是通过听筒播放,这意味着我的所有通知都相当安静。我相信这是因为我们没有正确重置音频流。我不确定这是否意味着在 Connection 对象的 destroy() 中发生,或者在我们请求音频焦点等的 Activity 中发生......下面是我认为是罪魁祸首的代码
此方法初始化音频是从单个 Activity 的 onResume() 调用的。我们根据用户设备的 Build 版本走两条不同的请求路径
所以这里是较新版本的 AudioFocusRequest
这是更过时的 OnAudioFocusChangeListener
最后,我们有从 Activity 中的 onPause() 调用的 tearDownAudio() 方法
我的猜测是问题出在 tearDownAudio() 方法的某个地方,因为设备上的音频在开始和通话期间工作得很好,但在通话结束后没有返回到正常流。
由于我们使用的是自我管理的连接服务,因此 ConnectionService 实现中也可能存在问题,但我的第一直觉是上面的代码是问题所在。