微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于局域网的视频聊天系统--蛙酷

基于局域网的视频聊天系统--蛙酷

时间:12-29 来源:电子产品世界 点击:

它会向控制通道发送事件通知扫描完成, wifi_wait_for_event函数会接收到该事件,由此WifiMonitor中的MonitorThread会被执行处理这个事件,WifiStateTracker接着广播SCAN_RESULTS_AVAILABLE_ACTION这个Intent,WifiLayer注册了接收SCAN_RESULTS_AVAILABLE_ACTION这个Intent,所以它的相关处理函数handleScanResultsAvailable会被调用,在该函数中拿到SCAN的结果(最终是往wpa_supplicant发送SCAN_RESULT命令并读取返回值来实现的)。

对每一个扫描返回的AP,WifiLayer会调用WifiSettings的onAccessPointSetChanged函数,从而最终把该AP加到GUI显示列表中。

3.2.3 连接AP

当用户在AcessPointDialog中选择好加密方式和输入密钥之后,再点击连接按钮,Android就会去连接这个AP。

WifiLayer会先检测这个AP是不是之前被配置过,这个是通过向wpa_supplicant发送LIST_NETWORK命令并且比较返回值来实现的,如果wpa_supplicant没有这个AP的配置信息,则向wpa_supplicant发送ADD_NETWORK命令来添加该AP,ADD_NETWORK命令返回一个ID,WifiLayer再用这个返回的ID作为参数向wpa_supplicant发送ENABLE_NETWORK命令,从而让wpa_supplicant去连接该AP。

3.2.4 配置IP地址

当wpa_supplicant成功连接上AP之后,它向控制通道发送事件通知连接上AP了, wifi_wait_for_event函数接收到该事件, WifiMonitor中的MonitorThread被执行来处理这个事件,WifiMonitor再调用WifiStateTracker的notifyStateChange,WifiStateTracker接着往自身发送EVENT_DHCP_START消息启动DHCP去获取IP地址,然后再广播发送NETWORK_STATE_CHANGED_ACTION这个Intent。

WifiLayer注册了接收NETWORK_STATE_CHANGED_ACTION这个Intent,所以它的相关处理函数handleNetworkStateChanged会被调用,当 DHCP拿到IP地址之后,会再发送EVENT_DHCP_SUCCEEDED消息,WifiLayer处理EVENT_DHCP_SUCCEEDED消息, 会再次广播发送NETWORK_STATE_CHANGED_ACTION这个Intent,这次带上完整的IP地址信息。至此为止,整个连接过程完成。

3.3 相机

Android的Camera包含取景器(viewfinder)和拍摄照片的功能。目前Android发布版的Camera程序功能比较简单,其程序的架构分成客户端(Client)和服务器(Server)两个部分,它们建立在Android的进程间通讯Binder的结构上。

以开源的Android为例,Camera的代码主要在以下的目录中:

Camera的JAVA程序的路径:

packages/apps/Camera/src/com/android/camera/

其中Camera.java是主要实现的文件

frameworks/base/core/java/android/hardware/Camera.java

这个类是和JNI中定义的类是一个,有些方法通过JNI的方式调用本地代码得到,有些方法自己实现。

Camera的JAVA本地调用部分(JNI):

frameworks/base/core/jni/android_hardware_Camera.cpp

这部分内容编译成为目标是libandroid_runtime.so。

主要的头文件在以下的目录中:

frameworks/base/include/ui/

Camera底层库在以下的目录中:

frameworks/base/libs/ui/

这部分的内容被编译成库libui.so。

Camera服务部分:

frameworks/base/camera/libcameraservice/

这部分内容被编译成库libcameraservice.so。

为了实现一个具体功能的Camera,在最底层还需要一个硬件相关的Camer库(例如通过调用video for linux驱动程序和Jpeg编码程序实现),而这个库最终将会被Camera的服务库libcameraservice.so调用。

4 实验结果与比较

这款视频聊天软件——“蛙酷”能够稳定地完成各项功能,可以完美地实现视频聊天和视频会议等功能,经过反复测试以及调试后,程序中的BUG也已基本得到有效解决。一开始在与其他视频聊天平台的对比测试中,我们发现“蛙酷”视频传输存在延迟,延迟时间大约为0.8至1.0秒,视频画面呈现出较多的噪点,在较差的网络环境下也频繁出现视频画面卡顿的现象。对于这一系列问题,在查阅相关资料后,我们发现主要问题在于我们没有选择最佳的视频解码,还有一个问题是我们没有对网络传输进行优化。在进行了一系列优化后,视频效果已经显著改善,达到视频聊天标准。

参考文献:
  [1] Android实时视频采集——camera预览采集[EB/OL].http://www.cnblogs.com/skyseraph/archive/2012/03/26/2418665.html
  [2] Android之SurfaceView实现视频播放[EB/OL].http://www.cnblogs.com/devinzhang/archive/2012/02/03/2337576.html
  [3]秦延东.基于UDP的可靠性数据传递算法研究与实现,信息科学与技术学院[EB/OL].http://www.doc88.com/p-6611634997913.html
  [4] Android开发之socket编程UDP和TCP通信实现[EB/OL].http://wenku.baidu.com/link?url=W5m0SW-NBCgNlgjfIR0Gorh-zv7qfqJ6WaaVEehMQJCqNSs6DX0VuYMOup9IPHo4O39sGBUwSoGQ11OOVng9uuu96-o_L2lUgSAY-IsLD3W
  [5] Android Wi-Fi获取组播[EB/OL].http://www.apkbus.com/android-16351-1-1.html
  [6] IP组播技术及其应用[EB/OL].http://wenku.baidu.com/link?url=Q4egZm_VLHn28au6JlEM6R-nki8AndPchGqKwGMRFsmfUT34E3bAtkzd_PQzo90otP3yh-5dfNMatoB_d8vnX-FVZUS7uESaIaEINr4nf9K
  [7] Android Wi-Fi 工作原理[EB/OL].http://blog.csdn.net/sunxingzhesunjinbiao/article/details/22822083

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top