电话通信功能知识总结

·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进行通话。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值