Android是Google公司推出的基于Linux的开源手机操作系统,由于代码开源,受到很多手机厂家的青睐。可视对讲系统在Android操作系统未出现之前,软件研发一般采用底层语言,容易出现功能单一、产品升级困难等情况,要在对讲系统中开发出具有3D图形效果的界面更是难上加难。鉴于此,本文利用Android平台的可移植性、代码开源等优势,结合JNI、NDK技术,提出了基于Android平台的可视对讲系统的设计方案并加以实现。
JNI[1](Java Native Interface)是Java本地调用接口,它使得运行于Android平台的Java程序可以使用C、C++甚至汇编语言编写的动态链接库。在需要频繁访问内存或复杂计算的情况下,使用C动态链接库比在Android平台上使用Java语言实现相同功能更具有效率[2]。NDK[3](Native Development Kit)提供了一系列的工具,可以生成ARM二进制码的动态库,并且能自动地将生成的动态库和Java应用程序一起打包成Android系统可以直接安装的apk安装包,即NDK可以将包含JNI接口函数的C源程序文件编译生成动态库,供Android应用程序调用,提高了对现有代码的重用性,而加快了开发进度。
本文提出一种可视对讲系统设计方案,对讲双方为门口机和室内机,并将设计方案在i.MX51硬件平台进行实现。门口机进行音视频的采集、编码、传输及音频解码、播放;室内机采用Android平台,但考虑用户室内信息的保密性,室内机没有视频采集功能,室内机只进行音视频的解码、播放以及音频的采集、编码、传输。
1 可视对讲系统设计
1.1 通信流程设计
数据包传输协议使用面向无连接、资源消耗小、处理速度快的UDP协议。寻址完成建立UDP直连后,门口机首先对视频进行编码传输,直到被叫方按下接听键后,门口机才对音频数据进行传输。为了保证通话一直在线,室内机每隔一定的时间向门口机发送通话在线询问,如果收到在线确认应答则保持通话状态,否则就结束通话。可视对讲系统通信流程如图1所示。
表2中:包头为对讲数据包的标示符,命令类型、操作类型说明详见表3,时间戳主要是用于音视频的同步,数据类型分为音频和视频两种,帧序号为0~65 535。如果没有进行数据包分段,则总包数与当前包数均为1。音视频数据从第41位开始算起,音视频数据长度由数据包格式中的数据长度所指定。
根据系统通信流程图1、结合数据包格式,本对讲系统参数如表3所示。其中命令类型、操作类型分别与表2数据包格式相对应。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉