资源预览内容
第1页 / 共41页
第2页 / 共41页
第3页 / 共41页
第4页 / 共41页
第5页 / 共41页
第6页 / 共41页
第7页 / 共41页
第8页 / 共41页
第9页 / 共41页
第10页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第10章 网络编程,Android应用开发教程,黑龙江,吉林,山东,西藏,新疆,浙江,台湾,课堂引入,问题:Android有那些通信方式? 各种通信方式的特点? Android网络通信的实现?,通信程序的方法 通信程序的实现 通信的注意事项,学习内容,Socket网络编程,1,HTTP网络编程,2,WebService编程,3,WebView编程,4,GPS定位,5,一、Socket编程,70代,现在,1. Socket介绍,Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信连接的句柄,Android中的Socket与Java中的Socket类同。Socket 提供了程序内部与外界通信的端口并为通信双方提供了数据传输通道。Socket通信在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,不需要每次由客户端向服务器发送请求。,2. Socket通信模型,(1)基于TCP的Socket通信,服务器端的Socket主要使用ServerSocket来创建,利用这个类可以监听来自网络的请求。创建ServerSocket的方法: ServerSocket(Int localPort) ServerSocket(int localport,int queueLimit) ServerSocket(int localport,int queueLimit,InetAddress localAddr) ServerSocket的主要方法: Socket accept():为下一个传入的连接请求创建Socket实例,并将已成功连接的Socket实例返回给服务器套接字,如果没有连接请求,accept()方法将阻塞等待; void close():关闭套接字对象。,客户端使用Socket创建通信对象,创建客户端Socket的方法: Socket(InetAddress remoteAddress,int remotePort) 利用Socket的构造函数,可以创建一个TCP套接字,然后连接到指定的远程地址和端口号。 操作Socket的主要方法: InputStream getInputStream():获取数据流对象; OutputStream getOutputStream():获取输出流对象; void close():关闭套接字对象,基本的实现过程是服务端首先声明一个ServerSocket对象并且指定端口号,然后调用ServerSocket的accept()方法接收客户端的数据,accept()方法在没有数据可接收时处于堵塞状态,一旦接收到数据即可以通过inputstream读取接收的数据。客户端创建一个Socket对象,指定服务器端的ip地址和端口号,建立连接后,通过inputstream读取数据,获取服务器发出的数据;也可将要发送的数据写入到outputstream中传送给服务器。,(2)基于UDP的Socket通信,主要使用两个对象:报文对象DatagramPaket和通信对象DatagramSocket。,报文对象DatagramPacket的构造函数,数据包含在第一个参数当中: DatagramSocket(byte data,int offset,int length,InetAddress remoteAddr,int remotePort) UDP通信对象DatagramSocket的构造函数: DatagramSocket(int localPort) UDP通信对象DatagramSocket的主要方法: void send(DatagramPacket packet):发送DatagramPacket实例; void receive(DatagramPacket packet) :阻塞等待,直到接收到数据报文,并将报文中的数据复制到指定的DatagramPacket实例中。,数据报通信方式的主要实现过程是服务器端首先创建一个DatagramSocket对象,并且指定监听的端口,接下来创建一个空的DatagramPacket对象用于接收数据,使用刚才创建的DatagramSocket对象的receive()方法接收客户端发送的数据,receive()方法在没有接收到数据时同ServerSocket对象一样也会处于阻塞状态,接收的数据将存在于DatagramPacket对象中。客户端也创建一个DatagramSocket对象,并且也指定监听的端口,接下来创建一个InetAddress网络地址对象,定义接收消息的服务器端地址,创建一个DatagramPacket报文对象,定义发送的数据内容,并指定要将这个数据发送到网络的InetAddress地址对象以及端口号,最后使用DatagramSocket对象的send()发送数据。,二、Http网络编程,1. HttpURLConnection对象,HttpURLConnection一般适用于只需要到某个简单页面提交请求并获取服务器响应的情况。,HttpURLConnection继承于URLConnection类,二者都是抽象类。其对象主要通过URL对象的openConnection方法创建,在获得HttpURLConnection对象后,默认是采用GET方式请求数据,此时即可使用输入流读取信息,/创建URL地址对象 URL url = new URL(“http:/www.cqcet.com/index.jsp?item=43252“); /获取HttpURLConnection对象 HttpURLConnection urlConn=(HttpURLConnection)url.openConnection(); /获取输入流 InputStream is = conn.getInputStream();,(1)从Internet获取网页,即向URL发送请求,将网页以流的形式读回本地。使用时需要设置连接超时,如果网络不好,Android系统在超过默认时间后会中断操作并收回资源;对连接返回的响应码检测是否是200,以测定连接是否成功;其后对获取的输入流的操作同Java中对流的操作类似;最后关闭网络连接,释放资源。,(2)从Internet获取文件,即利用HttpURLConnection对象从网络中获取文件数据。使用时注意在对大文件的操作,争取将文件写到SDCard中,不要直接写到手机内存里;操作大文件时要一边从网络上读,一边往SDCard上面写,减少手机内存的使用;对文件流操作完,要及时关闭。,(3)向Internet发送请求参数,即向服务器传递参数。HttpURLConnection默认使用GET方式,如果需要使用POST方式请求数据,必须设置允许输出参数;使用时最好不使用缓存,容易出现问题;在开始读取数据前用HttpURLConnection对象的setRequestProperty()进行设置,相当于生成HTML文件头。,(4)向Internet传送xml数据,XML格式是网络通信的标准语言,Android系统也支持通过传送XML文件传输数据。使用HTML的方式传输文件,一般文件大小在5M以下,传输大文件不适合HTML通信方式,对大文件的传输最好使用Socket通信方式,保证程序的稳定性。,Apache HTTP客户端对请求和响应进行封装,根据请求方式的不同,可以使用HttpGet和HttpPost分别表示Get方式和Post方式。对请求的结果使用HttpResponse表示,使用DefaultHttpClient()对象获得响应。,二、HttpClient编程,(1)发送Get请求的一般处理步骤是首先创建HttpClient对象和HttpGet对象,如果需要发送请求参数,可以直接将发送的参数连接到URL的字符串中,也可以调用HttpGet的setParams()方法添加请求参数,接着调用HttpClient的execute()方法发送请求,此方法返回一个HttpResponse对象,最后调用HttpResponse的getEntity()方法获得包含服务器响应内容的HttpEntity对象,通过该对象获取服务器的响应内容。,(2)对复杂数据前的请求一般使用POST方式,首先创建HttpClient对象和HttpPost对象,如果需要发送参数,可以调用HttpPost的setParams()方法添加请求参数,也可以调用setEntity()方法设置请求参数,接着调用HttpClient对象的execute()方法发送请求,返回一个HttpResponse对象,调用HttpResponse的getEntity()方法获取包含了服务器响应内容的HttpEntity对象,通过这个对象获取服务器的响应内容。,1. Web Service调用,三、WebService编程,Web Service是实现异构程序之间方法调用的一种机制。Web Service通过一种XML格式的特殊文件来描述方法、参数、调用和返回值,这种格式的XML文件成为WSDL(Web Service Description Language 即Web服务描述语言)。Web Service采用的通信协议是SOAP,Android SDK中并没有提供调用WebService的库,Google也发布了针对Android的KSOAP2 jar包。,1. WebView组件,四、WebView编程,WebView组件对象通过WebChromeClient子类可以对影响浏览器ui交互动作发生时的事件进行处理。通过WebViewClient子类可以在一些影响内容喧嚷的动作发生时被调用,通过WebSettings子类可以对WebView进行配置和管理。,1) 添加权限 首先必须在AndroidManifest.xml中添加网络访问权限“android.permission.INTERNET”,否则系统会抛出“Web page not available”的网络访问异常错误。,2) 创建WebView组件 在Activity中创建WebView对象: WebView webView = new WebView(this); 或者在activity的layout文件里添加webview组件: ,3) WebView常用方法如表所示。,4) 如果希望网页事件由自己处理,而不是由Android打开系统的浏览器来响应处理,则需要给WebView添加一个事件监听对象并重写其中的一些方法,5) 如果用WebView浏览了多个网页后,当用户点击系统的“Back”键时,由于Activity默认的back键处理为结束当前Activity,所以如果不做任何处理,整个浏览器会调用finish()方法程序从而结束进程。如果希望处理的是回退网页而不是退出浏览器,需要在当前Activity中处理掉该Back事件。,2. WebView与javascript,1)如果需要WebView支持Javascript处理功能,则调用WebView的子类作以下设置:webview.getSettings().setJavaScriptEnabled(true),2)javascript中调用java对象及方法。,WebView可以通过调用addJavascriptInterface()方法将java对象绑定到WebView中,以方便从页面javascript中调用java对象,实现用本地java代码和html页面进行交互,甚至可以进行页面自动化。,4)java和javascript混用实现一些效果,3)java中调用js的方法 可以使用webView的loadUrl方法实现。,1.手机定位的方式,五、GPS定位,1)GPS定位,2)基站定位,3)小区定位,4)AGPS定位,5)Wifi定位,2. GPS开发常用工具类,1)LocationManager 与Android系统中
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号