基于Android系统及Wi‑FiDirect的实时协作数据共享系统的制作方法

文档序号:12280120阅读:231来源:国知局
基于Android系统及Wi‑Fi Direct的实时协作数据共享系统的制作方法与工艺

本发明属于数据通信领域,具体地涉及一种基于Android系统及Wi-Fi Direct的实时协作数据共享系统。



背景技术:

Android设备就目前来说拥有较高的普及率,并且由于其自身的便携性使得人们在生产和生活的协作更为方便。然而,对于野外的坏境或者是工业环境中,由于流动性等原因,我们不容易把无线局域网覆盖到整个工作环境中,手机移动信号在野外被屏蔽的情况下则更难进行交流。

例如在较为偏远的山区有一群游客失踪了,紧急组成的搜索队分开寻找失联人员,然而此时并没有手机信号或者其他通讯工具,分布在大面积范围内的人员无法及时的信息沟通和任务分派。

又或者是在一片大区域的工业环境中,几个施工人员负责一件需要协同完成的任务,然而此时没有手机信号和无线网络,由于相隔较远,无法及时沟通。

因此我们需要在不能连接到互联网中同时移动信号也无法获得的情况下,通过我们的移动智能设备如手机等进行即时而方便的信息交流。

Wi-Fi Direct通信协议是指允许设备无需通过无线路由器或者是移动数据网络即可对等连接。建立对等连接后的设备可以进行数据传输等其他功能,通过合理的设置数据格式及灵活的Android设备间的数据流及控制流的交互机制,可以实现设备采集到的音视频数据的灵活共享。与蓝牙技术相同的地方在于,这种协议允许无线设备以P2P的形式互连,不过相比较蓝牙在传输速度和传输距离上有大幅提升。由此可见,在中距离的不基于基础网络设施的无线通信中Wi-Fi Direct具有更好的应用前景。



技术实现要素:

针对上述技术问题,本发明目的是:提供一种基于Android系统及Wi-Fi Direct的实时协作数据共享系统,使得用户可以在有效工作范围内搜索到其他设备并建立起对等连接,建立连接的过程不需要依赖移动信号或者是无线热点。当连接建立之后,设备之间可以进行实时视频画面传输和音频对讲功能的实时协作数据共享。

本发明的技术方案是:

一种基于Android系统及Wi-Fi Direct的实时协作数据共享系统,其特征在于,包括:

Wi-Fi Direct模块,通过Wi-Fi Direct进行设备搜索与匹配连接及管理;

Socket通信模块,用于在已连接的设备间基于TCP协议的套接字进行数据传输;

实时视频模块,用于在成功匹配连接的设备中,通过TCP/IP网络通信协议发送和接收实时视频图像;

语音对讲模块,用于在成功匹配连接的设备中,通过TCP/IP网络通信协议发送和接收语音信息。

优选的,所述Wi-Fi Direct模块包括:

Wi-Fi Direct启动模块,将页面跳转至系统的Wi-Fi设置界面,用于设置打开或者关闭;

Wi-Fi Direct搜索模块,当打开Wi-Fi Direct后,注册一个广播监听器监听设备当前的连接状态和设备信息并把附近的可用设备显示在列表中,当设备的当前信息改变时,触发相应的事件;

Wi-Fi Direct连接模块,通过调用相应的API函数进行连接请求建立对等连接小组,建立小组的过程中确立服务器端和客户端。

优选的,所述Socket通信模块的通信包括服务器端Socket通信和客户端Socket通信,所述服务器端Socket通信包括:

a) 创建服务器Socket实例对象用于监听设定的端口;

b) 创建一个线程用于监听客户端的连接请求,等待客户端连接;

c) 成功建立连接后,进行读取的数据和写入;

所述客户端Socket通信包括:

1)创建客户端Socket实例对象,设定网络地址和端口号来指定对应的服务器端的服务器Socket实例对象;

2)主动连接到服务端的Socket;

3)成功建立连接后,进行读取的数据和写入。

优选的,所述实时视频模块包括:

图像采集模块,通过Android的onPreviewFrame()重载函数获取摄像头的当前图像,对图像进行压缩和裁剪,转换成文件线程类中传输格式数据,发送图像数据;

图像显示模块,接收到图像数据后,对图像数据进行解码还原,通过图像展示组件显示图像。

优选的,所述语音对讲模块包括:

音频采集模块,创建音频录制的实例对象用于录音设置,根据触发事件开始录音线程,并把采集的音频信息存入buffer缓冲区,通过传输线程根据触发事件将采集的音频信息进行发送;

音频播放模块,创建音频设置的实例对象对播放时的参数进行设置,当子线程获取到接收到的音频数据后,通过相应的API函数方法将获取到的内容以音频形式播放。

本发明又公开了一种基于Android系统及Wi-Fi Direct的实时协作数据共享方法,其特征在于,包括以下步骤:

S01:通过Wi-Fi Direct进行设备搜索与匹配连接及管理;

S02:在已连接的设备间基于TCP协议的套接字进行数据传输;

S03:在成功匹配连接的设备中,通过TCP/IP网络通信协议发送和接收实时视频图像和语音信息。

优选的,所述步骤S01包括:

将页面跳转至系统的Wi-Fi设置界面,用于设置打开或者关闭;

当打开Wi-Fi Direct后,注册一个广播监听器监听设备当前的连接状态和设备信息并把附近的可用设备显示在列表中,当设备的当前信息改变时,触发相应的事件;

通过调用相应的API函数进行连接请求建立对等连接小组,建立小组的过程中确立服务器端和客户端。

优选的,所述步骤S02包括服务器端Socket通信和客户端Socket通信,所述服务器端Socket通信包括:

a) 创建服务器Socket实例对象用于监听设定的端口;

b) 创建一个线程用于监听客户端的连接请求,等待客户端连接;

c) 成功建立连接后,进行读取的数据和写入;

所述客户端Socket通信包括:

1)创建客户端Socket实例对象,设定网络地址和端口号来指定对应的服务器端的服务器Socket实例对象;

2)主动连接到服务端的Socket;

3)成功建立连接后,进行读取的数据和写入。

优选的,所述步骤S03包括:

通过Android的onPreviewFrame()重载函数获取摄像头的当前图像,对图像进行压缩和裁剪,转换成文件线程类中传输格式数据,发送图像数据;

接收到图像数据后,对图像数据进行解码还原,通过图像展示组件显示图像;

创建音频录制的实例对象用于录音设置,根据触发事件开始录音线程,并把采集的音频信息存入buffer缓冲区,通过传输线程根据触发事件将采集的音频信息进行发送;

创建音频设置的实例对象对播放时的参数进行设置,当子线程获取到接收到的音频数据后,通过相应的API函数方法将获取到的内容以音频形式播放。

与现有技术相比,本发明的优点是:

1、使用Wi-Fi Direct技术的移动设备不需要通过无线局域网络或者GPRS基站等其他基础网络设施,也不需要通过网线将设备限制在一个固定的路由器或者中心节点上,Wi-Fi Direct设备可以随时随地进行对等连接。

2、可以简单方便的设备发现功能。使用Wi-Fi Direct技术的移动设备能够搜索对等设备,同时将在有效工作范围的设备信息展示出来,用户可以方便地选择想要连接的设备。

3、Wi-Fi Direct设备的连接是简单而安全的。因为Wi-Fi Direct设备采用的是安卓设备的WPS机制,所以相应简化了在对等设备之间建立连接的过程。

4、Wi-Fi Direct设备的采用的是P2P的数据传输模式,因为不用接入无线网络,从而避免了通道的阻塞。

5、应用前景广阔,未来越来越多的设备会使用Android系统,比如手机、相机、显示器和打印机等等。通过Wi-Fi Direct的通信方式,可以使用一台智能手机在没有无线局域网的情况下与周围的其他智能设备进行数据交互。比如,通过移动智能手机与打印机通过Wi-Fi Direct进行互连,可以很方便的打印出我们手机中的照片或者文档;又比如,在办公室里,员工可以通过基于Wi-Fi Direct的移动设备互连来进行会议文件或者视频音频等文件的传输。Wi-Fi Direct标准的推出,为未来的移动智能办公、智能家居生活等方面提供了非常大的帮助。

附图说明

下面结合附图及实施例对本发明作进一步描述:

图1为本发明基于Android系统及Wi-Fi Direct的实时协作数据共享系统的层次结构图;

图2为本发明基于Android系统及Wi-Fi Direct的实时协作数据共享系统的模块结构图;

图3为本发明广播接收器的监听流程图;

图4为本发明设备搜索流程图;

图5为本发明图像接收流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

实施例:

本实施例以Android智能移动设备,每台设备都能够对Wi-Fi进行设置,然后开始搜索可用的对等设备并在可用设备列表中显示出来。用户选择想要连接的设备点击连接按钮后系统发出连接请求,收到连接请求的设备确认后即可建立起对等连接。

系统会使正在连接过程中的设备组成一个小组,系统由GroupOwner协商算法决定服务器端和客户端。

本发明的系统可分为四个层次,如图1所示,包括用户直接操作的界面层(UI层)、业务处理的逻辑层、数据交互的通信层和设备底层的驱动层。每层的功能具体如下:

a) 界面层(UI层):用户通过界面层(UI层)直接和系统进行交互,通过进行相应的操作发送给请求给逻辑层,逻辑层做出相应的不同反应然后展示到界面上,完成用户对软件进行操作的过程。

b) 逻辑层:对用户不同的操作请求进行处理和响应,通过不同的API函数库进行相应的操作,实现系统和用户的交互。

c) 通信层:实现设备间的信息数据交互,即搜索、连接、图像数据和音频数据等。

d) 驱动层:本层主要实现系统的Wi-Fi Direct的相关技术支持,为底层的应用程序提供API函数接口等。

本系统通过Socket套接字且利用Wi-Fi Direct技术进行设计,如图2所示,本发明包括四个模块,分别为实时视频模块、语音对讲模块、Socket通信模块和Wi-Fi Direct模块,每个模块具体内容如下:

a) 实时视频模块:在成功匹配连接后的设备中,用户可以对方传送自己摄像头当前的画面,亦或可以接受对方的实时画面。

b) 语音对讲模块:在成功匹配连接后的设备中,用户可以进行语音对讲,实现交流协作。

c) Socket通信模块:通过Socket套接字为上述的系统功能实现提供网络通信接口。

d) Wi-Fi Direct模块:系统通过Wi-Fi Direct完成设备的搜索与匹配连接,在连接建立成功后,进行其他的功能实现。

Wi-Fi Direct模块是系统的核心模块,通过底层的硬件支持和API的函数接口为后面基于Socket的通信提供技术支持。Wi-Fi Direct模块包括以下几个模块:

1) Wi-Fi Direct启动模块

在用户打开程序后,如果设备没有默认开启Wi-Fi Direct功能,为了方便用户的操作体验,在需要开启Wi-Fi Direct功能选项的时候,通过按钮来直接跳转到系统的Wi-Fi设置界面,用户可以直接选择打开或者关闭选项,然后返回程序界面。

2) Wi-Fi Direct搜索模块

当用户打开Wi-Fi Direct功能后,通过注册一个广播监听器来监听设备的当前的连接状态、设备信息等并把附近的可用设备显示在列表中,当设备的当前信息改变时,触发相应的事件。

3) Wi-Fi Direct连接模块

当用户搜索到附近的可连接的对等设备后,用户可以选择想要连接的设备进行连接。此时,通过调用相应的API函数进行连接请求建立起对等连接小组,建立小组的过程中确立服务器端和客户端。设备连接的过程使用的是WPS(Wi-Fi Protected Setup)机制,在Android系统中有三种WPS:PIN(Personal Information Number)模式,通过4或8位数建立连接;PBC(Push Button Configuration)模式,通过点击按钮确认建立连接;WAP2加密模式,通过安全密码建立连接。

Wi-Fi Direct的实现包括初始化Wi-Fi Direct、监听Wi-Fi Direct状态、搜索对等设备和连接对等设备。

初始化Wi-Fi Direct

a) 获取系统权限

Android应用程序必须在AndroidManifest.xml文件中设置了应用程序的权限后才能够使用Wi-Fi Direct的相关接口函数和其他设备硬件使用权限。

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">

</uses-permission>

上述代码就加入了APP访问Wifi状态的权限,同时还需要加入拍摄图片视频、完全访问WLAN、读取手机状态和身份等权限。之后在安装应用程序的时候,系统会显示需要用到的权限并确认安装。

b) 初始化

在应用程序的主Activity中的创建一个WifiP2pManager实例对象,通过相应的Wi-Fi Direct接口函数注册当前的应用程序。应用程序通过WifiP2pManager系统服务进行Wi-Fi Direct的连接与管理,成功注册后返回一个WifiP2pManager.Channel对象,这两个参数最后都被传给系统创建的广播接收器。系统创建一个WifiP2pManager的动作监听器,通过Broadcast Intent得到WifiP2pManager相关联的动作返回值。主要代码如下:

//表示Wi-Fi对等网络状态发生了改变

intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);

//表示可用的对等点的列表发生了改变

intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);

//表示Wi-Fi对等网络的连接状态发生了改变

intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);

//设备配置信息发生了改变

intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);

c) Wi-Fi Direct广播接收器

在系统的主Activity中注册Wi-Fi Direct广播接收器同时要在onDestroy()方法里面主要这个广播接收器。主要代码如下:

//注册wifi广播接收者

receiver = new WiFiDirectBroadcastReceiver();

registerReceiver(receiver, intentFilter);

//取消wifi广播接收者

protected void onDestroy() {

super.onDestroy();

unregisterReceiver(receiver);

}。

监听Wi-Fi Direct状态

a) 创建广播接收器,用来监听相应的事件并进行响应。

首先注册WifiP2pManager和其中Channel的实例化对象,然后创建一个广播接收器。

b) 在广播接收器对特定的意向进行函数操作从而实现监听响应。具体流程如图3所示。

搜索对等设备

当用户按下搜索按钮后,系统会广播匹配意向,程序接收到该意向后,调用相应的方法就能获得已经得到的设备清单。具体流程如图4所示。

连接对等设备

用户点击可连接列表中的设备进行连接,需要调用Wi-Fi Direct中的connect()方法,而设备的相关信息保存在WifiP2pConfig对象中。

成功连接后的设备通过Socket通信来进行设备之间的数据传输。Socket通信是服务器和客户端之间的通信,Socket通信模块是基于TCP协议的套接字来进行实时画面的传输和音频数据的传输。分为服务器端的Socket通信和客户端的Socket通信两个部分。

首先,服务端的Socket通信包括:

a) 创建ServerSocket实例对象用来监听设定好的端口。

b) 创建一个线程用来监听客户端的连接请求,等待客户端主动连接。

c) 成功建立连接后,通过Input Stream读取数据,通过Output Stream写入数据。

其次,客户端的Socket通信包括:

a) 创建客户端Socket的实例对象,设定好网络地址和端口号来指定对应的服务端的ServerSocket。

b) 主动连接到服务端的Socket。

c) 成功建立连接后,通过Input Stream读取数据,通过Output Stream写入数据。

实时视频模块用于获取当前摄像头的实时画面并进行传输。实时视频模块是建立在服务器和客户端的连接基础上的,主要分为三个部分:图像的采集,数据的传输和图像的显示。以下分别对三个部分进行介绍。

a) 图像采集

通过Android的onPreviewFrame()重载函数来获取摄像头的当前图像,参数byte[]是这个函数中的一个重要参数,内容是摄像头的实时图像数据,然后系统使用YuvImage方法可以将该数据转换为图片文件,之后系统就可以对该图片进行压缩和裁剪,将图片进行压缩转换后转换成文件线程类中需要的ByteArrayOutputStream数据,然后启动发送线程将图像数据发送给对方。

b) 数据传输

在用户成功建立Socket连接后,单击开始传输按钮触发点击时间后,启动数据传输的线程。发送方将数据通过OutputStream传送给接收方,接收方则通过发送方的Socket获取对应的InputStream,读取其中的字节流,然后通过相应的数据还原展现在图像展示组件中。

c) 图像显示

接收方在收到发送方传来的数据后,对数据进行解码还原,通过surfaceview组件将收到的图像显示在屏幕上,主要流程如图5所示。

语音对讲模块主要负责实时语音通信的功能。语音对讲模块同样也是建立在服务器和客户端的连接基础上的,主要分为三个部分:音频数据的采集,数据的传输和音频的播放。以下分别对三个部分进行介绍。

a) 音频的采集

在录音开始前需要创建一个AudioRecord的实例对象来进行相关的录音设置。在用户按下录音按钮触发点击事件后开始录音线程,系统通过start Recording()开始录音并且把采集到的音频存入到buffer缓冲区中,然后通过传输线程将采集到音频信息发送给对方的设备。用户松开按钮后触发相应的事件结束录音并启动发送线程。

b) 数据传输

与视频画面传输类似,通过OutputStream和InputStream进行数据流的传输接收。

c) 音频的播放

系统通过Android的AudioTrack类来进行音频的播放。通过创建一个AudioTrack实例对象并对播放时的参数进行相应的设置。当子线程获取到接收到的数据后,通过相应的API函数方法将获取到的内容以音频的形式播放,从而让用户听到对方的语音信息。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1