android - 是否可以将来自 VoIP 应用程序的来电信号发送到汽车导航系统?
问题描述
问题
我正在开发一个 Android VoIP 应用程序。当手机通过蓝牙连接到汽车时,我必须向汽车导航系统发出来电信号。
到目前为止我做了什么
除了大量的搜索和阅读以及反复试验之外,这是当前状态:
- 在 StackOverflow 上发现了一个类似但未得到解答的问题:如何使 VOIP 应用程序使用像本机呼叫应用程序一样的 carkit?
当有来电(应用程序收到 SIP INVITE)时,会发生以下情况:
- 将 AudioManager 中的模式设置为 RINGING:
audioManager.setMode(AudioManager.MODE_RINGING);
- 请求音频焦点:
audioManager.requestAudioFocus(this, AudioManager.STREAM_RING, AudioManager.AUDIOFOCUS_GAIN);
- 启用并启动 bluetoothSco:
audioManager.setBluetoothScoOn(true);
audioManager.startBluetoothSco();
怎么了
在车内直接显示来电屏幕,而不是来电。因此,用户只能挂断电话,不能接听,因为接听按钮没有显示。
我猜我没有正确地发出状态信号,即使 AudioManager 上的 JavaDoc 说 RINGING 模式用于发出这样的信号。
如果您对如何解决此问题有任何想法,请告诉我。
解决方案
推荐阅读
- android - 插件版本以下的 kotlin 运行时
- javascript - 使用 Javascript ES5 创建自定义错误
- bash - 在 Gitlab CI 期间 Sed 无法替换引号中的字符串
- c# - 如何从 FileStream 创建 TextWriter
- wso2 - VFS:URL 参数 transport.vfs.passive 在 WSO2 EI 6.2.0 中不起作用
- django - Pytest 使用 django_db 和 rest 框架
- bash - 带有点 (.) 的 bash 命令的最终结果
- c++ - 暗示插入 std::map 会导致树不平衡吗?
- python - Python 3:如何从包中的模块导入 __init__.py?
- javascript - 如何使用正则表达式拆分字符串,开头字符匹配任何 <= | >= | = | !=