基于Android的网络资源应用探析

2016-04-14 13:36龙军杨鹏
电脑知识与技术 2016年5期
关键词:网络资源

龙军 杨鹏

摘要:该文就APP开发中本地应用、Web应用和混合应用三种模式进行研究,针对本地应用和Web应用调用网络资源的主要技术进行分析比较,提出对一些已使用应用系统、建有丰富网络资源的单位采用混合应用模式的建议,即能实现App应用功能,还可融合原有系统的资源,有效地拓展的应用平台的适用范围和功能。

关键词:网络资源;Native App;Web App;Hybrid App

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)05-0191-03

目前智能手机、平板电脑已经大众化,App应用也快速发展起来,越来越多的企事业单位开始建立自己的App应用,将原有的业务系统、办公管理系统、信息系统等拓展到App应用已成为发展趋势,如何将不同系统融合到App应用中也是急解决的问题。

1 移动设备应用的主要技术

移动设备的App应用目前主要实现方式有本地应用(Native App)、Web应用(Web App)和混合应用(Hybrid App)三种模式。

Native App即原生应用,是根据特定操作系统而采用相应的语言、框架和开发套件进行开发,充分利用设备特性,性能优越。通常由“云服务器数据+APP应用端”构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上,利用设备资源完成优质的交互操作。

Web App是一种框架型开发模式,通常由“HTML5云网站+APP应用端”构成,由于移动Web支持各种标准的协议,使用HTML5、CSS3、JavaScript技术可将各种移动交互与桌面任务有效地连接起来,跨平台优势显著。APP应用端只需安装应用的框架部份,数据则是运行APP时通过云端服务将数据呈现给用户。

Hybrid App 是整合上述两种模式优势的混合模式应用,同时使用网页语言与程序语言编写,包含Native视图和Web视图两种方式,分为多View混合型、单View混合型、Web主体型三种类型。多View混合型的基本信息用Native View, 复杂的数据体现直接用Web View,即Native App为主Web技术为辅。单View混合型同时包括Native View和Web View,且视图间相互覆盖,常用于Native View中部分数据接口不方便实现的页面。Web主体型是在Native外壳内嵌入纯Html网页,与用手机浏览器操作接近,使用较少。

2 Native App网络资源应用的主要技术

Android平台上Native应用可采用套接字、HttpClient、JDBC等技术使用网络资源、数据库。

2.1 套接字

标准Java接口通过Java.net包中提供的ServerSocket和Socket两个类构建套接字,依据TCP/IP协议的传输层协议分为面向连接(TCP)和无连接(UDP)两类。ServerSocket类用于面向连接应用中服务器端构造的等待连接套接字,在创建套接字时设置端口号参数同步绑定到指定端口,可设置客户连接请求队列长度、确定服务器能同时监听的客户数等。Socket用于客户端套接字或服务器端响应连接请求时创建的套接字。

采用TCP协议时要求App应用一直在线且与服务器保持连接状态,消耗的资源较多,一般用在网络游戏或适时在线的应用开发中。采用UDP协议时由于数据不用确认,安全没保证,常用在即时通讯应用中。面向连接的App应用端一般流程为用Socket连接服务器并创建套接字,基于该套接字创建用于接收数据的输入流和用于发送数据的输出流,并进行数据的读写操作。

Socket s=new Socket(“服务器端的IP地址”,端口);//创建客户端套接字

DataInputStream dis=new DataInputStream(new DataInputStream(s.getInputStream()));

DataOutputStream dos=new DataOutputStream(s.getOutputStream()); //创建数据输入、输出流

dis.readUTF();//读数据

dos.writeUTF(“要写的的内容”);//写数据

dos.flush();

2.2 HttpClient或HttpURLConnection及Web Service的使用

Android网络应用中使用最多的是Apache接口,核心的HttpClient类是一个完善的HTTP客户端,提供了对HTTP协议的全面支持,通过HttpPost和HttpGet使用HTTP的GET和POST进行访问服务器。针对多个请求要使用多线程,通过getHttpClient()方法为HttpClient配置一些基本参数,再用ThreadSafeClientManaget来创建线程安全的HttpClient。

而HttpURLConnection是URLConnection的子类,在其基础上增加了一些用于操作HTTP资源的方法。一般来说,简单的应用可用HttpURLConnection,复杂的用HttpClient。

在服务器端可建立动态网站,再根据提交的参数返回XML、JSON格式数据或简单字符串,如jsp文件中用request.getParameter(String)方法获得App提交的参数,进行相应数据处理后,用out.println(String)方法返回数据供客户端使用。

在服务器端也可建立用jsp、php、c++、C#等语言编写的WebService,Web Service是一种基于可编程跨平台的的web应用程序,用于开发分布式、交互操作的应用程序,可使用XML、XSD标准来描述、发布、发现、协调和配置应用程序,使得运行在不同机器上的应用可相互交换数据或集成。Web Service 的调用有HttpGet、HttpPost、HttpSoap三种方式。

App应用先创建HttpClient对象,再用要访问的Web文件网址创建HttpPost对象,在进行相应的传递参数处理后,提交给服务器的网页,并获得返回的数据。这一过程中要注意Web文件和App文件的编码处理,否则对中文会出现乱码。Java在网络中传递使用的是ISO-8859-1编码,下面是android中通过HttpURLConnection获得jsp网页返回数据的核心代码。

String urlstr=new String("要访问的网址".getBytes("utf-8"),"ISO-8859-1");//将网址转码

URL url=new URL(urlstr);

HttpURLConnection urlCon=(HttpURLConnection)url.openConnection();//打开网址

nputStreamReader in=new InputStreamReader(urlCon.getInputStream());

BufferedReader buf=new BufferedReader(in);

while((line=buf.readLine())!=null) str+=line;//读取Web返回的数据

str=new String(str.getBytes("ISO-8859-1"),"utf-8");//将数据转码

针对asp.net等使用utf-8编码的Web应用,可参照下面通过HttpClient获得其返回的数据。

String urlstr=new String("要访问的网址".getBytes("utf-8"),"ISO-8859-1");//将网址转码

HttpClient hc=new DefaultHttpClient();

HttpGet get=new HttpGet(urlstr);//此处用get方式访问网址

HttpResponse hr=hc.execute(get);//获得返回的数据

HttpEntity he=hr.getEntity();

str=EntityUtils.toString(he,"utf-8");//将数据转码

2.3 JDBC

JDBC是由一组用Java语言编写的类和接口组成,为java层直接操作关系型数据库提供了标准的API。用Android设备连接远程服务器上诸如MySQL、MS SQL server或Oracle等数据库,建议用webservice在服务器端将数据库中的数据用json或xml进行封装后发送给Android,当然也可以用JDBC直接连接数据库,就类似于原有的C/S架构的应用,安全性不高,数据量大时易出错,且要求保持在线连接状态。

使用JDBC时首先在工程的“Java Build Path”中加入相关数据库的驱动包,并在活动中用import导入,再用Class.forName(驱动类名)建立驱动,用DriverManager.getConnection(路径,用户名, 密码)建立连接(Connection),最后进行相关操作。

3 Web App网络资源应用的主要技术

随着HTML5的发展及云服务普及,采用HTML5进行Web App开发成为一种趋势,由于目前高端智能手机的内置浏览器都是基于Webkit内核,WebKit对JavaScript 支持力度和运行速度都有所提高,在开发Web App时,使用HTML5和CSS3技术做UI布局,要避免延用以往web开发中使用的HTML4和CSS2技术,因为很多效果如“自适应网页设计”是无法实现的。自适应网页设计即应用能自动根据手机屏幕宽度、分辨率加载相应的CSS文件、选择不同的CSS规则,且布局、文本、图片均能实现自动缩放,实现页面在不同设备上均能正常的显示。

3.1 WebKit引擎和WebView组件

Webkit是一个开源浏览器引擎,几乎所有的网站和手机都支持,Android提供的WebView组件就是基于WebKit来加载显示网页的,使用便捷,非常适合将一些定制的网站或触摸屏版网站应用集成到App应用中。

WebView通过WebSettings类进行属性、状态等的设置,WebViewClient类用于辅助WebView进行处理各种通知、请求等事件,WebChormeClient类用来帮助WebView处理JavaScript的对话框、网站图标、加载进度等。

3.2 HTML5与CSS3

HTML5提供了诸如地理位置感知 API、运动感应事件、通用感应器 API、触控交互事件、WebSocket API、Messaging API 等支持Web 应用扩展的API。其离线应用使WebApp在无网络连接的情况下,仍然可以完成数据存储及交换业务,通过Navigator的属性值和Online/Offline事件两种方式进行在线检测,用Cache Manifest确定WebApp离线时所需的资源,提供了Web Storage(用key_value对的形式)和Web SQL Database(见下示代码)两种本地数据存储。

webSettings.setDatabaseEnabled(true);

webSettings.setDatabasePath(this.getApplicationContext().getDir(数据库, Context.MODE_PRIVATE).getPath());

webSettings.setDomStorageEnabled(true);

通过Device Description Repository API这一统一的服务器API和基于CSS的两种设备适配技术,达到兼容不同设备,用合适的页面布局体现内容。

3. 3 Android与JavaScript的交互

手机的Android应用可通过Web页面的JavaScript实现交互,完成相互的功能处理和数据传递。首先在Android程序中建立接口,通过WebView的WebSettings.setJavaScriptEnabled(true)启动JavaScript。再在WebView中把一个实例添加到JavaScript的全局对象window中。

WebView.addJavascriptInterface(new JavaScriptInterface(),实例名);

并在JavaScriptInterface()类中定义方法public void runOnAndroidJavaScript(final String str){方法体}。最后在Web页面的JavaScript中通过windows.实例名.runOnAndroidJavaScript(str)调用Android的函数。

4 Native应用与Web应用比较

1)Native App应用与Web App应用的特点

Native App应用可调用UI控件及UI方法,可直接使用诸如摄像头、GPS、蓝牙、传感器等硬件设备,调用语音、短信、视频、通信录等资源。安装包中有UI、框架及数据,较大,升级也需根据版本下载更新,当用户无法上网时可访问应用中以前下载的数据。

Web App应用打开应用均要通过APP框架向云网站索取UI及实时的最新云端数据,访问速度受手机终端上网的限制,每次使用均会消耗上网流量;安装包只包含框架文件,数据内容则放在云端,无须频繁升级APP应用,与云端实现的是实时数据交互。

2)Native App应用常用在游戏、电子杂志、管理应用、物联网等无需经常更新程序框架的APP应用开发中。由于游戏要使用许多设备API或平台API,占用较多的资源,用户对应用的视觉和操作效果要求高,常采用Native App开发。使用摄像头时,Native App开发可简化拍摄的过程,先在手机上对照片做预处理,当需要时再通过HTTP将照片上传给服务器。要使用传感器,如屏幕的旋转、检测移动、温度、压力等。访问手机的文件系统,启用或保存本地数据,如通讯录、音频、视频、图片、文件等。

3)Web App应用常用在电子商务、金融、新闻资讯、企业集团需经常更新内容的APP应用开发中。目前Web App提供了丰富的功能接口,使其拥有Native App一样功能,还能跨平台使用,但要考虑到适配不同平台的网页应用设计,平衡平台间软硬件差异带来的交互特性和系统习惯的差别,及不同设备的分辨率。

最后,由于Hybrid App有Native APP调用终端设备、交互体验及Web App跨平台的优势,开发成本低、周期短,逐渐成为APP开发的主要模式,尤其针对诸如政府、高校、图书馆等已经建设有较为丰富网络资源的单位来说,采用这种模式可以用较小的成本进行资源的拓展利用,并将一些共享资源做成公共的通用接口,供其他应用使用、共享,提高资源的利用率。

参考文献:

[1] 姜文波, 龙军. Android平台的套接字应用浅析[J].科技信息,2014(9).

[2] 龙军. 基于Java语言的流式套接字编程探析[J].电脑知识与技术,2013,9(10).

[3] 顾春来. APP应用程序开发模式探究[J].硅谷,2014,5(149).

[4] 周其飞. 基于Android平台的Hybrid App开发[J].电脑编程技巧与维护,2014,15(9).

[5] 黄悦深. 基于HTML5的移动Web App开发[J].图书馆杂志,2014(7).

猜你喜欢
网络资源
网络资源在阿拉伯语教学中的应用及成效分析
基于预测的虚拟网络资源分配方法
网络资源在高中班级管理中的运用
谈网络资源在大学计算机教学中的应用
网络资源在语文综合性学习中的运用
对等网络资源搜索模型研究