·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. 计算机键盘分区,电脑初学者必看键盘五个分区功能知识.doc

    文档介绍: 电脑初学者必看键盘五个分区功能知识,电脑初学者必看键盘基本分区,初学者熟悉键盘,初学者熟悉键盘图片,美发初学者分区要多久,初学者熟悉键盘视频,电脑键盘功能介绍,钢琴键盘示意图简谱,键盘26 ...

  2. html转换成keynote,Keynote教程(一)——隐藏的功能知识

    @潘团子:我有一次被迫做视频,然后就在网上找了半天keynote的动效教程,突然发现好像就不太会用keynote,特别是过年的时候在家学keynote的课程,看到好多功能平时都不知道可以用,我觉得可能 ...

  3. 了解ES6 The Dope Way Part II:Arrow功能和'this'关键字

    by Mariya Diminsky 通过玛丽亚·迪明斯基(Mariya Diminsky) 了解ES6 The Dope Way Part II:Arrow功能和'this'关键字 (Learn E ...

  4. [文摘20090203]手机基本知识

    本文转自:http://www.paipaitxt.com/r4625042/ 原文如下: @~手机类型~@ 按操作系统划分,可分为:智能手机与非智能手机 一般具有:Symbian6.0,Window ...

  5. java继承原理内存角度_Java基础知识巩固

    最近发现自己的Java基础知识还是有点薄弱,刚好有点空闲时间进行再补一补,然后进行整理一下,方便自己以后复习.其实个人认为Java基础还是很重要的,不管从事Java后端开发还是Android开发,Ja ...

  6. 如何使用小程序自定义组件功能

    标签: 小程序 component 需求 小程序开发时通过自定义组件将频繁使用的模块抽取出来,简化代码; 实现难点 小程序文档相关的说明太过于详细,以至于不能快速上手使用,因此这里从顽意小程序中拿出一 ...

  7. 知识图谱数据管理:存储与检索

    目录 1 知识图谱大数据 2 知识图谱数据模型 3 知识图谱数据的检索 3.1 RDF图查询语言 4 Neo4j使用简介 1 知识图谱大数据 1 知识图谱是一种有向图结构,描述了现实世界中存在的实体. ...

  8. 开源全平台版知识付费系统源码 支持微信小程序+公众号+H5+PC端

    分享一个开源全平台版知识付费系统源码,系统支持微信小程序+公众号+H5+PC端,一套系统实现全端数据及用户体系全面打通,轻松实现店铺全网一站式运营.含完整代码包和详细搭建教程. 系统支持视频课程.音频 ...

  9. 【知识图谱】知识图谱数据库提供一站式全域行业数据融合

    知识图谱数据库为金融 AI 革新贡献最前沿的力量,该平台运用大数据.知识图谱数据库.人工智能等技术服务于金 融行业,可提升金融机构合规和风控能力,从而帮助实现行业人工智能.在对公业务中,知识图谱数据库 ...

最新文章

  1. MATLAB   xls数据读写
  2. efcore mysql autofac_Asp.NetCore3.1版本的CodeFirst与经典的三层架构与AutoFac批量注入
  3. _ZNote_Chrom_插件_Chrom运行Android软件_APK
  4. A Faster Volatile
  5. Java线程:线程交互
  6. 《Non-invasive Fetal ECG Signal Quality Assessment for Multichannel Heart Rate Estimation》论文解读-废弃
  7. 创建macOS 启动安装盘
  8. python123动物重量排序_Python爬虫图片学习(一)
  9. 析构函数virtual与非virtual区别
  10. OpenCV——绘制基本图形
  11. 第五章 Windows基础控件
  12. 联发科MT2503D处理器详细参数介绍
  13. catia曲面设计从入门到精通_CATIA V5曲面设计从入门到精通
  14. w10计算机恢复出厂设置,如何给win10系统的电脑强制恢复出厂设置
  15. CAD制图初学入门 零基础学CAD要掌握技能精选
  16. 优化屏蔽广告.提高浏览体验
  17. 读《矿矿上高中一年级》所得到的收获
  18. 可微硬件:AI将如何重振摩尔定律的良性循环
  19. 6.4.1等价关系2
  20. 达梦DM8之使用dmmdf恢复误删除的undo/redo文件

热门文章

  1. 使用Python完成自动录入信息
  2. 社群营销总结的这几天,新手你看完就知道怎么做了,如何被动吸粉
  3. 新威电池测试仪软件打不开,新威电池测试仪软件使用教程
  4. 免堆期由谁申请_什么是免箱期 什么是免堆期
  5. 计算机在多媒体技术的应用论文,多媒体技术在计算机教学的应用论文
  6. 基于RxJava2.0+Retrofit2.0的文件下载实现(带进度,非覆写ResponseBody和拦截器)
  7. PCIE地址空间理解
  8. 计算机网络实验教程钱德沛_《计算机网络实验教程-第2版》【价格 目录 书评 正版】_中国图书网...
  9. java猜四位数字游戏
  10. WinPE中工具ImageX工具用法