专微App相关介绍

一. 概述

专微App是一款面向互联网的语音对讲系统的应用,整体架构借鉴了局域网开发语音对讲项目,首先通过UDP广播在mq服务器上发送并接受数据,实现局域网内的语音对讲,然后通过http协议与网络服务器建立连接,实现互联网语音对讲。

二. 局域网语音对讲实现原理

具体项目参考项目地址:

  • intercom-master

目前已实现的功能:

  • 通过UDP广播实现Android局域网Peer Discovering(2017/4/8)
  • 实时Android语音对讲系统架构(2017/4/22)
  • 改进Android语音对讲系统的方法(2017/5/25)

相关知识体系架构可参考:

  • Android Binder跨进程通信—— 内存映射
  • 线程池与五种线程池策略使用与解析

三. 网络连接实现原理

通过c/s架构采用http协议建立与网络服务器之间的连接。客户端采用okhttputils工具类实现访问网络服务器请求接口,用户登录成功后建立与网络服务器的连接。

四. 项目整体架构及涉及到的开源库

  • VisionClient应用整体沿用intercom-master这种MVC架构设计
  • 注解框架应用的butterknife
  • 用户数据个人信息存储在SharedPreference里面
  • 网络请求数据采用gson数据解析
  • 语音数据保存通过greenDAO
  • 权限自己手写的框架参考的Android 6.0 运行时权限处理解析

四. 项目应用技术

1.为实现黑屏起麦这一功能,首先通过注册系统白名单,保证应用进程不被后台回收杀死,另一方面保证在一个tcp上的socket通信利用心跳保持长连接。

2.无法注册白名单的终端采用service双进程守护尽可能地保证进程不被杀死,原理是通过aidl跨进程通信实现两个进程间的相互调用。

3.客户端与服务器建立tcp socket的长连接,登录群组聊天室上传信息到mq服务器,某个客户端通过顶层socket协议向服务器发送实时语音,再由mq服务器对语音socket通信发送给客户端,接受者通过用户id和所在群组判断接受的语音信息。

五. 交接具体问题

1.C10终端加入白名单的具体操作步骤?

交接文件中的PC_Tools_R01.00.01文件中执行PCTools.exe文件,点击配置查看应用白名单,如果应用未注册白名单,点击应用白名单添加应用名称即可,包括添加C10键值也是一样,添加好之后点击写入等待系统重启即可。

2.中山警铃上架过程

更新版本代码之后,升级versionCode和versionName两个参数,导出最新版本的应用包,联系中山警铃上架应用的负责人刘中明,微信号lzm61818,提供.apk的文件和这两个参数即可上架

3.专微GIT上的分支介绍

目前版本的VisionClient在Gitblit上的所有分支已经合并,只有一个主分支,二具体产生的两个版本则是由AndroidManifest.xml文件控制,中山版本LAUNCHER进程启动的是LoginActivity,而北京启动的是LoginActivityForBJ。中山版本和北京版本另一个区别是有无图标启动也就是是否有
以北京的版本为例:


      
            
                    
               
                    

            

    

中山的版本只需要把LoginActivityForBJ改成LoginActivity,并把注释的这行隐式即可。


4.一些代码上需要注意的地方

代码核心部分其实就两点:
1.网络通信
2.线程池
前期各项参数集中在ConnectionModel类中,参数设置完毕后与服务器建立连接,代码关键部分集中在HistoryFragment中,包括连接后点击先向网络服务器发送请求后得到success后才能发送语音数据信息,语音的各种信息封装在一个MessageBean中,接受的语音通过流的形式传递到创建的语音文件中,语音的数据通过线程池方式发送和接收,

ExecutorService threadPool = Executors.newCachedThreadPool();

利用的是5种线程池中的缓存线程池:newCachedThreadPool()创建,五个参数分别是ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue())。
含义是池中不保持固定数量的线程,随需创建,最多可以创建Integer.MAX_VALUE个线程(说一句,这个数量已经大大超过目前任何操作系统允许的线程数了),空闲的线程最多保持60秒,多余的任务在SynchronousQueue中等待。
客户端发送时通过线程池发送有确认发送connection参数等信息的ReadDataThread到服务端,接受的时候通过判断接收参数connection的回调来实现对于接收信息的监听(connection实现了底层对于监听回调的监听,直接用就行)

附专微App交接文件网盘下载地址:

链接:https://pan.baidu.com/s/1-s2OkVRtInBq6bXlIz6Y3g

提取码:ylwo

你可能感兴趣的:(专微App相关介绍)