计算机与安卓手机通信工具设计与实现.docx_第1页
计算机与安卓手机通信工具设计与实现.docx_第2页
计算机与安卓手机通信工具设计与实现.docx_第3页
计算机与安卓手机通信工具设计与实现.docx_第4页
计算机与安卓手机通信工具设计与实现.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与安卓手机通信工具设计与实现 III目录第一章 引言11.1 开发背景11.2 设计目的1第二章 可行性研究22.1 技术可行性分析22.2 经济可行性分析22.3 操作可行性分析2第三章 需求分析33.1 功能需求33.1.1 PC端的基本功能33.1.2 安卓手机客户端基本功能43.2系统结构图和流程图43.3 系统界面需求53.5 运行环境需求5第四章 Android 及相关技术介绍64.1 Android 简介64.2 Android 的特性64.3 Android 基本框架74.4 搭建Android 开发环境84.5 Socket编程84.6 HTTP协议94.6.1 HTTP的特点94.6.2 HTPP的操作过程94.6.3 HTTP的报文结构10第五章 系统详细设计115.1 通信工具的服务器的搭建115.2 通信工具的手机客户端的设计125.2.1 应用程序的界面125.2.2 WIFI检测模块设计135.2.3 上传功能设计146.2.4 下载功能设计15第一章 引言 1.1 开发背景作为全球最大的智能手机操作系统Android,因为其是开源的,所以被越来越多的厂商支持和开发者的喜爱,这会使Android OS越来越成熟,应用更加丰富,会成为用户最受欢迎的操作系统,所以实现计算机与Android手机在WIFI下通信的实际意义更大。 1.2 设计目的为了让手机和电脑互传软件更方便和快捷,减少传输的时间,增加传输的距离,针对这种情况,所以设计了这款计算机与安卓手机通信的软件。该软件使用起来很方便,因为有很人性化的提示功能,只要看下该软件的使用说明书,即使不是计算机专业的用户,也能很好的掌握该软件的使用方法。在设计该软件时,要考虑其的健壮性,可扩展性,安全性,集成有效性。而且该软件设计适用于其它的移动终端设备,例如,平板电脑等,为移植到其它安卓系统的移动设备做准备。19第二章 可行性研究 当要开发一款软件时,首先要对其进行可行性分析,确定其软件的价值和目的,可行性研究的意义在于对正式开始实施项目前对各种风险进行分析,用最少的人力和物力来完成项目,下面通过技术可行性分析,经济可行性分析,操作可行性,法律可行性分析三个方面来分析该软件的可行性。2.1 技术可行性分析2.2 经济可行性分析2.3 操作可行性分析第三章 需求分析3.1 功能需求根据项目的需求,不难得知,该项目的基本功能比较少,主要是服务器和客户端的互传文件,所以从两部分来概括:1. PC端(服务器端)基本功能。2. 安卓手机端基本功能。下面用用例图来描述:3.1.1 PC端的基本功能 图3-1 PC端的基本功能用例图表3-1用 例 名 称:启动服务器参 与 者:用户目 标:启动该软件的服务器前 置 条 件:连上局域网基本事件流:1. 点击启动按钮 2. 服务器启动表3-2用 例 名 称:上传文件参 与 者:用户目 标:把文件上传到中间文件夹,以便被手机客户端下载前 置 条 件:服务器已启动基本事件流:1.点击上传按钮 2.浏览文件,并选中 3.确定表 3-3用 例 名 称:接收文件参 与 者:用户目 标:服务器通过客户端的请求,允许文件上传到中间表 前 置 条 件:安卓手机客户端已连接到服务器,并上传文件基本事件流:1.点接收文件表 3-4用 例 名 称:查看文件参 与 者:用户目 标:查看客户端传送的文件前 置 条 件:服务器已打开基本事件流:1.点击查看按钮3.1.2 安卓手机客户端基本功能图3-2 手机客户端基本功能用例图 表 3-5用 例 名 称:上传文件参 与 者:用户目 标:把文件上传到计算机上前 置 条 件:手机客户端已通过WIFI可以跟电脑通信,并自动检测在同一局域网下基本事件流:1.点击上传按钮 2.浏览文件,并选中 3.确定表 3-6用 例 名 称:下载文件参 与 者:用户目 标:把PC端的中间文件夹里的文件下载到手机 前 置 条 件:手机客户端已通过WIFI连接到服务器,并检测在同一WIFI下基本事件流:1.点击下载按钮表 3-7用 例 名 称:连接状态显示参 与 者:用户目 标:查看客户端和手机端连接状态,并自动检测是否在同一WIFI下前 置 条 件:服务器已启动 基本事件流:1.客户端自动去连接服务器,并检测是否在同一局域网3.2系统结构图和流程图 (1) 计算机与安卓手机通信工具的系统流程图(图3-3)图3-3 系统流程图(2)系统功能表(表3-8)表3-8系统组件功能类别子功能 PC端P C端(服务器)界面启动服务器上传文件浏览文件夹选中文件传送到中间文件夹接收文件文件进入中间文件夹查看文件进入中间文件夹目录下 安卓手机端APP程序(客户端)界面菜单网络检测-自动检测上传文件-浏览文件夹选中文件并传送到服务器下载文件-下载PC端中间文件夹里的文件3.3 系统界面需求该系统在安卓手机上的APP程序的界面要友好,简洁,并且有人性化的提示,即使不是计算机专业的用户,也能按照提示能很好的掌握该软件。图3-4 APP程序界面 界面说明:一共两个按钮,上传按钮,和下载按钮。在下面网络检测显示正常的情况下,可以跟电脑端进行文件互传。3.5 运行环境需求该软件在安卓手机上运行环境基本要求:(1)基于Linux平台的手机操作系统;(2)支持Android2.3以上版本。第四章 Android 及相关技术介绍4.1 Android 简介随着Android开发的迅速发展,手机用户对于应用程序的需求也越来越挑剔,他们需要更实用,好玩,个性的应用程序;程序猿想要一个更开放的和更集成的平台,去做出更完善的和人性化的程序,满足客户的一切合理需求;而各个生产手机的公司更想要的是一个具有稳定性、安全性和更廉价的平台,以更好的利用硬件做出更好的手机。应社会的潮流,一个基于Linux内核的平台由操作系统、中间件、用户界面、和应用软件组成的“机器人”Android出现了,它很好的诠释了自由、集成和免费,满足了所有者的需求。它是由Google和Open Handset Alliance领导及开发,主要用于移动设备。Android本义指的是机器人,然而在2007年11月5号被Google公司用做基于Linux平台的开源手机操作系统的名称。现在Android移动平台由“开放者联盟”(它由34个移动运营商、半导体公司和手机制造商组成)研发,因为这个android系统是开源的,所以各个公司研发出来的技术都是共享的,这有利于减少开发成本。而且android系统在得到这么多公司大幅度支持,已慢慢走向成熟,很受用户欢迎,这使得基于Android开发的应用程序需求越来越多,应用也变得越来越丰富。这个开放者联盟促使了Android的快速发展,并使Android系统慢慢走向稳定,而基于Android系统的移动设备,像雨后春笋般出现,推动了Android市场的发展。4.2 Android 的特性Android系统具有如下5个特点:u 开放性。开放性是Android最重要的一个特性,这个特性是Android能快速走向成熟的一个决定性的原因,因为Google允许任何手机或其它移动设备制造商加入“开放手机联盟”,这使得Android平台拥有更多的开发者,而且软件资源是共享的,这使得Android相对于其它系统具有绝对的竞争优势,存在竞争就意味着价格的便宜,而且手机用户可以用更少的钱,买到最合算的手机。u 应用程序无界限。Android上的APP程序是可以互相访问的,这个特性使得Android上的APP程序可以更好的联系起来,组合成更强大的功能,当然这个都是可以通过权限去设置的,安全性也是可靠的。u 应用程序是平等的。Android上的所有应用程序可以被其它的应用程序取代或者扩展,它们是在同一级别上的。这些是其它的移动设备系统无法比较的。u 应用程序可以轻松地嵌入网络。Android上开发的应用程序,可以很好的融合HTML,JavaScript和样式表,也就是说能加载显示一个网页,可以视为一个浏览器,通过WebView组件来实现。u 应用程序可以并行运行。Android系统里每个应用程序都有自己的进程,它们可以并行运行,不会因为一个应用程序的打开,而关闭前面的进程,当然手机硬件的性能决定了能并行运行的进程的数量,它们在后台运行时,它们各自会产生通知信息来提醒用户。4.3 Android 基本框架Android从顶层到底层可分为4层,分别是应用层、应用框架层、系统运行库层和Linux内核层。 图4-1 Android 基本框架(1)应用层应用层,顾名思义就是应用程序的层面,这个层面里都是运行在Dalvik虚拟机上的应用程序,它包括在安装Android系统时自带的核心应用,例如电子邮件应用程序,拨号应用程序,日历,时间系统,浏览器等,这些应用程序都是由一种高级语言Java编写的。(2)应用框架层应用框架层,其实就是一套组件层,它包含许多常用的组件,而开发人员在开发Android应用程序的时候,可以不用去编写这些组件,只需调用它们,根据自己的需求,更改一下这些组件的属性就可以拿来使用,减少了开发的复杂度。该框架包括一些常用的组件,如视图(View)、内容提供器(Content Providers)、窗口管理器(Window Manager)等。(3)系统运行库(C/C+库以及Android运行库)层 当开发人员开发Android应用程序时,就会用到标准框架的组件,而这些组件是一些C/C+库来支持的,这些库能让组件更好的被开发者使用。这些库有Bionic系统C库、SQLite、Webkit等。(4)Linux内核层Android的核心系统服务基于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。Linux内核同时也作为硬件和软件栈之间的抽象层。主要驱动有显示驱动(Display Driver)、音频驱动(Audio Driver)、 蓝牙驱动(Bluetooth Driver)、Wifi驱动、电源管理(Power Management)等。4.4 搭建Android 开发环境在开发之前,我们首先要搭建好Android的开发环境。(1)所需工具简单介绍及下载:n JDK下载,JDK 5或者以上版本。n Eclipse下载,版本在3.4以上。n ADT下载:Android Development Tools(ADT)是一个Eclipse插件,它是为了减少Android开发的复杂度而存在,这个使得“程序猿”在使用Android开发更加方便。n SDK下载:SDK包含了jar文件,运行环境及相关工具.(2)工具的安装:1JDK 7的安装和系统环境变量配置。2. Eclipse 4.0 的安装, 安装或者自定义安装都可以,根据自己的需要。3. 下一步是安装ADT插件。首先打开已安装好的Eclipse软件,在菜单栏中点击Help项,在子菜单中选择Install New Software项,在随后弹出的窗口中,点击Add按钮,在随后弹出的窗口中的name输入栏中,给ADT插件命名,然后点击Archive,浏览和选择已经下载好的ADT插件压缩文件。然后点击OK,这样就安装好了ADT。图4-2 ADT安装界面4. 重启Eclipse,然后在打开的软件界面中的菜单栏中选Window项,在子菜单中选preferences项,在随后弹出的窗口中,点击Android,然后在左边就会出现相应的内容,点击SDK Location,然后选择已解压的SDK文件的位置。然后点击OK。这样我们的SDK就安装好了。然后重启Eclipse,这样就可以进行Android开发了。 图4-3 SDK安装界面4.5 Socket编程这个系统因为涉及到计算机和手机通信,所以必须要把其中一个当服务器,另一个当客户端。本次系统设计是把PC端当做服务器,手机当做客户端。服务器开启监听程序,手机端的APP程序发出请求,或者服务器端发出请求,APP端响应网络请求。上面用到的技术其实就是Socket编程,Socket也称为套接字,一般被用于描述IP地址和端口,应用程序的通信是通过Socket向网络发出请求或者应答网络请求。Socket因为用到协议,而协议分为安全可靠(TCP/IP)和不安全可靠(UDP)两种,而这个系统需要互传文件,需要保证服务器和客户端数据一致,所以选择TCP/IP协议。4.6 HTTP协议现在,网络已深入人们日常生活,我们可以利用网络进行工作、学习和娱乐等。每一刻都有数以亿万计的网络资源在流动,如图片、文本文件、应用程序、音频文件、各种压缩包等,它们就像资源海洋,使人们畅游其中。而HTTP可以从这“海洋”中,快速且可靠的把需要的资源搬到Web浏览器上。HTTP在网络传输协议中的位置如图(4-4)所示图4-4 网络传输协议结构图4.6.1 HTTP的特点从图4-4中,可以看出,HTTP是基于TCP协议的网络传输协议,而TCP是可靠传输的面向对象连接的网络协议。其特点:(1)支持客户端/服务器端的工作形式;(2)可靠性:HTTP是基于TCP协议的网络传输协议,所以其是可靠的传输协议,用户在访问信息时就不用担心其完整性了,因此对用户来说,这是件好事。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心 HTTP 通信会在传输过程中被破坏、复制或产生畸变了。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。(3)无连接性:这个特性使总体传输数据时间减少,因为在使用HTTP传输数据的时候,在没有进行报文互传的时候,是不需要客户端和服务器建立连接的,当需要时才连接,不需要时就断开连接,这有利于快速传输。(4)无状态性:这个特性使服务器的设计简化,让服务器更快速的响应客户端的请求。因为使用HTTP协议时,服务器不需要记忆功能,不用记得这个客户端以前有没有访问过,访问了几次,而是只要每次响应客户端跟第一次一样。 4.6.2 HTPP的操作过程当启动服务器后,服务器就会创建一个进程,它不断是监听Socket创建的端口号80,这样就可以及时发现是否有客户端向它发送连接的请求。当有客户端对这个端口发送请求连接时,就会响应并建立连接,然后发送报文体,等待服务器发送客户端所需的文件作为响应。然后网络连接断开。在服务端响应请求和客户端发送请求,或者服务端发送请求和客户端响应请求时,都必须遵循HTTP传输协议的规则。客户端和服务器端交互过程如图(图4-5):图4-5 客户端与服务器端HTTP交互图4.6.3 HTTP的报文结构(1)请求报文:从客户向服务器发送请求报文。(2)响应报文:从服务器到客户的回答。HTTP的请求报文由三部分组成:1 开始行,相当于一个识别标志,用来区分是请求报文,还是响应报文的。2 首部行,用来记载浏览器、服务器或报文主体的一些信息。3 实体主体,按实际需要而定,一般用不上。第五章 系统详细设计5.1 通信工具的服务器的搭建为了实现一个能手机和PC之间互传文件的软件系统,设计思路是在 PC端搭建一个服务端程序来向外部提供Web服务,手机客户端向服务端发起请求,服务器响应请求,然后服务器向客户端向客户端发起请求,客户端响应请求,如此循环,达到PC端和手机端双向通信的效果。服务端采用Tomcat应用容器,通过Servlet程序提供服务。服务端提供下载服务的是net.blogjava.mobile.LoadFile这个Servlet,通过在web.xml中配置servlet和其对应url映射后,启动服务端应用,就可以通过HTTP的方式请求文件下载LoadFile这个servlet对应的服务。LoadFile核心代码如下:public class LoadFile extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException OutputStream o = response.getOutputStream(); byte b = new byte1024; / the file to download. File fileLoad = new File(d:/temp, test.rar); / the dialogbox of download file. response.setHeader(Content-disposition, attachment;filename= + test.rar); / set the MIME type. response.setContentType(application/x-tar); / get the file length. long fileLength = fileLoad.length(); String length = String.valueOf(fileLength); response.setHeader(Content_Length, length); / download the file. FileInputStream in = new FileInputStream(fileLoad); int n = 0; while (n = in.read(b) != -1) o.write(b, 0, n); 5.2 通信工具的手机客户端的设计为了实现计算机和Android手机通信,手机端的部分就作为客服端。在设计的主界面上有上传和下载功能,当然还有一个前提是检测网络部分。所以设计思路是,先连接到服务端,然后检测是否在同一wifi下,然后通过URL访问服务端提供的web服务,实现上传和下载功能。5.2.1 应用程序的界面该应用程序是为了跟计算机通信,主要是互传文件,所以主界面分别有上传,下载两个按钮,和一个显示网络连接状态的提示框。当网络提示连接正常时,表示可以进行上传文件和下载文件功能了,当点击上传按钮后,进入choice界面。这个界面有两个按钮,一个是上传图片按钮,一个是上传文件按钮。本次设计中图片跟文件上传是分开的。(1) 应用程序的主界面图5-1 通信工具的主界面在Android项目中,每一个可视化界面,都对应一个Activity。设计Activity时,我们需要给这个界面选取一个布局模式,工具栏上提供了两个模式供选择,一个是水平布局,一个是垂直布局,根据需要选择了垂直布局。在Palette上面有许多可视化的控件,例如按钮(Button)、复选框(Check Box)、文本框(Text View)、时间插件(Time Picker)等,你可以直接拖取你需要的控件到这个界面上,当然你也可以在Activity对应的配置文件里写xml代码直接控制,也是可以的。至于控件的属性,例如显示的名称、所占的高度和宽度大小等,只能到其对应的配置文件里去修改了。主界面对应的Activity的.xml配置文件代码:上面代码控制了这个界面最顶级的界面,其它控件就是在这个界面上布置的,代码写在 中。(2) choice界面图 5-2 通信工具选择上传文件界面同主界面一样,choice界面也会有自己的Activty,每个按钮都有自己对应的ID,当在主界面点击上传的时候,程序就会去调用这个按钮的onClick()方法,当按钮没有声明这个方法的时候,就会调用主界面中对应的onClick()方法。本设计中没有对每个按钮进行声明onClick()方法,而是直接写在继承Activity类中的com.wangchao.transfer.Z_testActivity类中,该类实现了OnClickListener()方法,重写了onClick()方法。在点击上传文件或照片之前,需要检测网络情况,所以会调用检测网络的方法,会在下面介绍checkNetworkConnection(),下面是调用的模块public void onClick(View v) if (!checkNetworkConnection(Z_testActivity.this) Toast.makeText(getApplicationContext(), WiFi没有连接!,Toast.LENGTH_SHORT).show();return;if (-1 = getRespStatus(url) message.setText(服务器未打开,请先开起服务器);return;. . . 检测以后,判断是上传按钮还是下载按钮call的这个界面,这里出现一个判断并选择对应的处理模块。5.2.2 WIFI检测模块设计电脑跟手机互传文件的前提是,手机跟电脑在同一局域网下,也及是电脑跟手机都连接在同一个路由器下,手机用wifi连接,电脑可以用无线或有线连接。ConnectivityManager类主要管理和网络连接相关的操作,首先通过方法getSystemService(CONNECTIVITY_SERVICE)获取代表联网状态的NetWorkInfo对象,然后通过getActiveNetworkInfo(),来/获取当前的网络连接是否可用。检测模块代码:/ 判断是否wifi连接上public boolean checkNetworkConnection(Context context) final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);final .NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (wifi.isConnected()return true;elsereturn false;5.2.3 上传功能设计(1)文件上传当点击上传文件按钮,并确定以后,就会调用方法uploadFile()方法,这个方法会首先访问服务器提供的所提供的web服务,通过HTTP协议的URL类。New一个URL对象,用带参数的构造函数,传入的是address,然后设置一些其它的属性,代码块如下: URL url = new URL(address);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setDoInput(true);httpURLConnection.setDoOutput(true);httpURLConnection.setUseCaches(false);httpURLConnection.setRequestMethod(POST);httpURLConnection.setRequestProperty(Connection,Keep-Alive);httpURLConnection.setRequestProperty(Charset, UTF-8);httpURLConnection.setRequestProperty(Content-Type,multipart/form-data;boundary= + boundary);当跟服务器建立好连接时,我们需要读取文件,然后通过流写入缓存,一次写8K,代码块如下:FileInputStream fis = new FileInputStream(srcPath);byte buffer = new byte8192; / 8kint count = 0;while (count = fis.read(buffer) != -1) dos.write(buffer, 0, count);fis.close();(2) 图片上传当点击上传照片时,会调用照相机组件,拍照然后上传。public void onClick(View v) if (dl.isShowing()dl.dismiss();Toast.makeText(getApplicationContext(), 启动相机.,Toast.LENGTH_SHORT).show();Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);/startActivityForResult(intent, 1); 6.2.4 下载功能设计下载服务端的文件时,我们会先去读取文件,然后写入指定文件夹里新建的文件里面。点击下载按钮以后,调用类MyAsynaTask().execute()方法,类MyAsynaTask()继承了AsynaTask()类。生成该类的对象,并调用execute方法之后,首先执行的是onProExecute方法,其次执行doInBackgroup方法,doInBackgroup方法在类中已被重写,代码如下:protected Bitmap doInBackground(String. params) / 输入编变长的可变参数 / 和线程中的Asyna.execute()对应Bitmap bitmap = null;try URL url = new URL(params0);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setDoInput(true);connection.c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论