当前位置:首页 » 《随便一记》 » 正文

电话通信功能知识总结_zdj_Develop的博客

21 人参与  2022年05月28日 12:17  分类 : 《随便一记》  评论

点击全文阅读


·sip固话

·移动双呼

·手机系统电话程序功能

·将我们的通话能力开放出去,第三方APP可以通过调用API调起我们的APP,进行拨打电话。

一、sip固话

我们使用的是PJSIP。原生安卓系统自带的SIP是很不靠谱的,我们自己测试过,这是因为很多手机厂商对这一块进行了阉割,所以我们采用PJSIP。PJSIP的官网:PJSIP - Open Source SIP, Media, and NAT Traversal Library

1、sip协议:

Session initialization Protocol(会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个基于文本的应用层控制协议,用于创建、修改和释放一个或多个参与者的会话。

2、PJSIP:

PJSIP是一个开放源代码的SIP协议栈,它支持多种SIP的扩展功能。它实现了SIP、SDP、RTP、STUN、TURN和ICE。PJSIP作为基于SIP的一个多媒体通信框架提供了非常清晰的API,以及NAT穿越的功能。PJSIP具有非常好的移植性,几乎支持现今所有系统:从桌面系统、嵌入式系统到智能手机。PJSIP同时支持语音、视频、状态呈现和即时通讯。

优点:

1、高度的可移植性

2、极小的内存需求

3、高效的性能

4、支持多种SIP功能及扩展功能

多种SIP功能和扩展功能,例如多人会话,事件驱动框架,会话框架,即时信息,电话传输。

3、如何使用PJSIP:

(1)NDK开发,编译生成so库文件。

(2)把我们生成的so库文件拿到项目中,放在jniLibs文件夹下。

(3)pjsip的初始化:

包括加载so库、创建端点、创建sip传输、启动库、注册等等。

我们这里是写了一个服务,当我们从服务器获取到sip信息后,我们开启这个服务,在这个服务中完成这些事情。

(4)对于sip的操作,我们封装了一个Utils_pjsip这样一个工具类。包括使用pjsip进行呼出,使用pjsip进行接听,使用pjsip进行挂断等等。

二、移动双呼

首先解释下什么是移动双呼:

移动:指移动端号码,也就是手机卡(sim卡)。

双呼:对应双呼系统。双呼系统,A与B进行通话,不是直接进行通话,而是经过双呼系统。类似于美团骑士、饿了么骑士给客户打电话就是这样一个模式。双呼系统的意义在于它能够提供增值服务,比如号码隐藏、通话记录、录音等等。

1、实现:

APP端,就是调用后端的移动双呼接口,当后端返回success的时候,即表示接口调用成功。然后就是等中间号码打过来,然后这边进行接听,然后实现A与B的通话。

2、补充功能:

当用户将我们的APP设置为手机系统默认电话程序后,当移动双呼接口调用成功后,我们会弹出一个“响应中...”的界面,当中间号码打过来后,我们会弹出通话界面,并直接给用户自动接听,然后用户就与另一端通话了。

三、手机系统电话程序功能

就是说在我们的APP中实现了手机默认电话程序的功能。

实现这个主要步骤有以下几大点:

1、将我们的程序声明成一个电话程序。

怎么声明呢?通过在清单文件中注册一个Activity,并且设置action为dial,设置data中的scheme为tel。

2、我们用到了一个Service,即InCallService,它是android.telecom包中的一个类,是Service的派生类。

那么,我们用这个类干嘛呢?我们写一个类,继承InCallService,然后在这个类里面,监听电话通信状态。比如说有电话添加,有电话移除,接听电话,挂断电话。

如果有电话添加,会进onCallAdded回调;如果有电话移除,会进onCallRemoved回调;如果接听电话,会进onStateChanged回调,并且我们能够得到相应的状态(STATE_ACTIVE);如果挂断电话,会进onStateChanged回调,并且我们能够得到相应的状态(STATE_DISCONNECTED)。

3、我们需要封装一个工具类或者说一个管理器,里面包括了一系列的对电话操作的方法,比如说:

打电话、接听电话、挂断电话、指令输出等等。

另外这里再说一下怎么将我们的APP设置为系统默认电话程序,Android 6.0~Android 10.0(包括Android 6.0,不包括Android 10.0)通过TelecomManager,Android 10.0以上(包括Android 10.0)通过RoleManager。

更多关于手机系统电话程序功能的资料可以移步我的另外一篇博客:

Android Telephone_zdj_Develop的博客-CSDN博客

四、将我们的通话能力开放出去

我们这里是通过隐式意图这种方案,提供出我们的API,这样子我们的合作伙伴或者说需要接入我们这个能力的第三方,使用我们的API调起我们的APP进行通话。


点击全文阅读


本文链接:http://zhangshiyu.com/post/40923.html

电话  功能  系统  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1