《Android项目式程序设计》12-网络编程写字字帖_第1页
《Android项目式程序设计》12-网络编程写字字帖_第2页
《Android项目式程序设计》12-网络编程写字字帖_第3页
《Android项目式程序设计》12-网络编程写字字帖_第4页
《Android项目式程序设计》12-网络编程写字字帖_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

项目十二网络编程学习目标掌握使用线程编程掌握Socket通信掌握HTTP通信掌握Handler-Message消息传递机制情景导入日常生活中通过手机进行资料查询、交流、数据监控已成为大多数人的选择。本项目以火灾监测系统为背景,通过Socket,HTTP请求网络编程,实现火情监控系统中的核心功能,火灾信息监控以及回馈报警信息等。任务描述本任务将设计一款获取灾情信息功能并且能够反馈信息的程序。使用线性布局技术来设计登录系统界面点击“开始获取”按钮,建立Socket网络通信,并且开始获取灾情数据显示到界面上点击“回馈信息”按钮,将灾情信息情况回馈到服务端【基本框架】基本框架如图12.1所示,将框架图转换成的效果如图12.2所示。任务描述任务技能技能点1线程1线程简介线程是CPU调度和分派的基本单位,线程必须依赖进程而存活,并和其他线程共享依赖的进程的资源。线程是独立运行(相对于其他线程而言),线程也需要有自己的资源,包括栈、寄存器、状态、程序计时器。线程有新建、就绪、运行、阻塞、死亡五种状态。2线程实现方法在Android中有实现线程thread的方法有两种,第一种是扩展java.lang.Thread类,第二种是实现Runnable接口。Thread类代表线程类,它的两个主要方法是:run(),start()。任务技能3进程与线程的区别在Android平台上一个程序(应用APP)是一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程与进程在执行过程中的区别为:每个独立的线程都有一个程序运行的入口、顺序执行序列和程序的出口。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程程序比多线程程序健壮。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同的执行路径。对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。任务技能技能点2Socket1Socket简介工作于TCP/IP协议中应用层和传输层之间的一种抽象层为Socket,在Android系统中,可以分为流套接字(streamsocket)和数据报套接字(datagramsocket)。而Socket中的流套接字将TCP协议作为其端对端协议,提供了一个可信赖的字节流服务,数据报套接字使用UDP协议,提供数据打包发送服务。Socket工作机制中包括服务端和客户端两部分。在服务端有多个端口,每个端口由端口号标识。当客户端与服务端建立连接时,首先服务端打开端口监听来自客户端的请求,然后客户端通过IP地址和端口号向服务端发送连接请求,最后服务端接收请求,若连接成功,可以开始通信。任务技能2Socket实现方法当客户端、服务器端产生了对应的Socket之后,程序无需再区分服务器、客户端,而是通过各自的Socket进行通信。Socket提供了两个方法获取输入流和输出流,如表12.1所示。任务技能任务技能android实现socket简单通信需要添加的权限:<!--允许应用程序改变网络状态-->

<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/>

<!--允许应用程序改变WIFI连接状态-->

<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>

<!--允许应用程序访问有关的网络信息-->

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

<!--允许应用程序访问WIFI网卡的网络信息-->

任务技能

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

<!--允许应用程序完全使用网络-->

<uses-permissionandroid:name="android.permission.INTERNET"/>

。任务技能技能点3HTTP1HTTP简介超文本传输协议(HypertextTextTransferProtocol,简称HTTP)是应用层协议,自1990年起,HTTP就已经被应用于www全球信息服务系统。HTTP是一种请求/响应式的协议。一个客户机与服务器建立连接后,会发送一个请求给服务器,这个服务器接到请求后,会给予客户机相应信息。HTTP的第一版是一种简单的用于网络间原始数据传输的协议,HTTP/1.0由RFC1945定义,进一步的改进HTTP/0.9,它允许消息是类MIME信息格式。任务技能2HTTP请求HTTP包含了两种请求方式:GET和POST。GET请求一般用于获取或查询资源信息,POST请求一般用于更新资源信息。

HttpGet、HttpPost分别实现了HttpRequest、HttpUriRequest接口,构造方法如表12.2,12.3所示。任务技能任务技能Android提供了HttpURLConnection和HttpClient接口来开发HTTP程序。HttpURLConnection是Java的标准类,继承自HttpConnection。它是抽象类,不能实例化对象,主要通过URL的openConnection()方法获得HttpConnection接口的常用抽象方法如表12.4所示。任务技能3HttpClient开发Apache提供了一个HttpClient项目,能更好的处理向Web站点请求,包括处理Session、Cookie等细节问题,Apache是一个简单的HTTP客户端,可以发送HTTP请求,接收HTTP响应,执行过程如图12.3所示,但不会缓存服务器的响应,HttpClient接口的常用抽象方法如表12.5所示。任务技能任务技能使用HttpClient发送请求、接收请求步骤如下:(1)创建一个HttpClient对象。(2)若需要发送GET请求,则创建HttpGet对象,若需要发送POST请求,则创建HttpPost对象。(3)调用HttpClient对象的execute(HttpUriRequestrequest)方法来发送请求,执行过后该方法返回一个HttpResponse。(4)调用HttpResponse的getEntity()方法可获取HttpEntity对象,这个对象包装了服务器的响应内容。技能点4Message(消息类)与Handler(消息处理类)1Message简介当Android平台启动一个应用程序时会开启一个主线程(界面UI线程),界面UI线程管理显示的所有控件,并监听用户点击事件响应用户分发事件。在界面UI线程中一般不执行耗时的操作,如联网下载数据等,会出现ANR错误。AndroidUI线程是不安全的,所以只能在主线程中更新UI。任务技能任务技能android.os.Message是定义一个Message包含必要的描述和属性数据,并且此对象可以被发送给android.os.Handler处理。属性字段:arg1、arg2、what、obj、replyTo等;其中arg1和arg2是用来存放整型数据的;what是用来保存消息标识;obj是Object类型的任意对象;replyTo是消息管理器,会关联到一个Handler,Handler处理其中的消息。通常Message对象不是直接new出来的,调用Handler中的obtainMessage方法获得Message对象如表12.6所示。任务技能2Handler简介使用Handler处理消息时,Handler发挥两个作用分别是:在新线程中发送消息,在主线程(界面线程)中获取并处理消息。在实际的程序开发中,Handler类为开发人员提供了便捷的开发策略,在新线程(可以是多个新线程)中编写消息发送的功能代码,在主线程中统一接收、识别并处理。解决何时发送、何时处理的问题。现把常用到的一些方法说明提供如表12.7所示。任务技能技能点5JSON1JSON简介JSON是一种轻量级的数据交换格式,完全独立于文本格式,易于读者阅读和编写,同时也易于解析和生成。服务器请求成功后得到的数据大多是JSON类型的数据,而不是客户所需要的明确信息。任务技能2JSON解析方式JSON解析一般有三种方式,原生解析方式,JSON解析方式,和FastJson解析,FastJson是第三方框架,本次讲解原生解析方式,步骤如下。第一步:将得到的数组JSON进行拆分,拆分为字符串形式。第二步:将字符串形式的JSON进行进一步拆分,将其中各个对象取出。任务技能任务实施第一步:在Eclipse中创建一个Android工程,命名为”火情监测系统”,并设计界面。如图12.2所示:第二步:在src文件夹中下建立MainActivity文件,并实现点击“开始获取”按钮,建立Socket通信,获取获取灾情信息显示到界面上。第三步:接收抛出信息,并显示到界面上。第四步:实现点击“回馈信息”按钮,将灾情情况回馈到服务端并显示到界面上。第五步:运行程序任务拓展【拓展目的】

熟悉并掌握使用线程实现网络编程获取信息。【拓展内容】本任务设计一款获取服务器图片的软件,效果如图12.5所示。【拓展步骤】1设计思路

点击“获取图片”按钮,获取服务器图片,将获取到的图片显示到界面。2获取服务器图片并将其显示到界面上。任务拓展任务总结本项目主要介绍了Android网络编程的相关知识。Android支持JDK网络编程中的ServiceSocket、Socket等

温馨提示

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

评论

0/150

提交评论