Android在图书查重系统中的应用
王杰
广东广播电视大学计算机技术系 广州 510091
摘要

探讨Android智能手机在图书外采查重系统中的应用,重点介绍系统的设计思路和系统总体架构、应用程序设计的关键技术以及核心模块,包括Android智能手机开发、Android网络接口开发、条形码开发等。

关键词: 智能手机; Android; 图书查重; 条形码开发
中图分类号:TP311.52
Application of Android in Book Acquisition Duplicate Checking System
Wang Jie
Computer Department, Guangdong Radio & TV University, Guangzhou 510091, China
Abstract

This paper discusses the application of Android intelligent mobile phone in book acquisition duplicate checking system, mainly introduces the design thinking method,system structure, key technology and the core modules, including the development of Android intelligent mobile phone, Android network interface and barcode.

Keyword: Intelligent mobile; phone; Android; Book acquisition duplicate checking; BarCodedevelopment

随着智能手机的迅猛发展和普及,手机软件行业也得到快速发展,人们正在不断地拓展手机的新功能,如手机办公、手机证券、手机银行、手机游戏、手机阅读、移动学习、移动互联网等。本文开发的基于Android智能手机的图书外采查重系统,克服了目前图书外采查重方式的缺点,适合于普通读者使用,可以充分发挥智能手机无线接入互联网的能力,利用其操作系统的开放性、可扩展性以及随身携带的特点[ 1]

1 需求分析及技术思路
1.1 图书外采业务分析

通常图书馆负责采购图书的是图书馆采编人员,而采购图书的最终服务对象是读者,这样容易出现采购的图书不符合读者的需要而造成借阅率低和资金浪费,以及由于读者需要的图书未能及时采购而造成读者满意度下降。解决这一问题的最根本的方法是让图书馆的服务对象——读者直接参与图书采购过程,如大学图书馆请教师参与图书采购,公众图书馆邀请热心读者参与图书采购,这可以大大提高图书采购的针对性、资金的使用效益和读者满意度。

图书采购查重方式有人工记忆查重、条码扫描器查重、笔记本单机查重、无线网络联机查重等[ 2],目前各图书馆使用较多的方法是数据采集器查重。这些图书查重方式主要面向图书馆专业人员,使用繁琐,既需要导数据,还需要专业设备,对普通读者不适用。文献[3]中提出基于Windows Mobile的图书外采查重工具,充分利用智能手机运算能力强、存储量大、方便携带的优点;国内有北京厚宽无线数据采集器 HK-9900[ 4]、南京码道图书查重宝NLS-PT-850MD[ 5]、广州联欣iData MC80物联网移动计算机[ 6]等图书查重工具,都是基于Windows CE或Windows Mobile智能手机操作系统。但通过调查,目前使用Windows Mobile智能手机的读者呈下降趋势。

1.2 系统设计技术思路

谷歌Android智能手机操作系统是以Linux为核心的手机操作平台,允许使用多种编程语言来开发Android应用程序,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。根据2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%[ 7]。通过对读者调查,Android智能手机使用率远远大于其他智能手机。

基于Android的图书外采查重系统分为两大模块:图书馆Web服务器端和读者Android客户端,如图1所示:

图1 系统总体架构

图书馆Web服务器端是架设在图书馆的Web服务器,连接到图书馆藏书数据库,可以响应读者Android客户端的图书查重请求,检索图书馆数据库中的藏书数据,如果有藏书,则反馈图书详细信息,防止重复采购;如果没有藏书,则提示可以采购。

读者Android客户端是基于Android智能手机开发的APP应用程序,授权的读者可以到图书馆网站下载安装程序APK文件,安装到自己的智能手机上,安装和使用都非常简单。当读者在新华书店、书城、购书中心等外采现场时,可以通过3G、Wi-Fi、GPRS等通信方式与图书馆Web服务器进行数据通信。

2 系统开发设计
2.1 图书馆Web服务器端

目前,各图书馆应用的管理信息系统LIS不尽相同,使用的数据库管理系统有Oracle、SQL Server、Sybase等,数据库格式也不一样,但是通常都会有藏书数据表,记录图书馆的所有藏书数据,数据表结构如表1所示[ 3]:

表1 藏书数据表Books结构

对于图书馆Web服务器端程序开发比较简单,使用ASP、ASP.net、PHP、JSP等语言开发一个查询程序即可,可以通过ISBN书号、题名(书名)、责任者(作者),查询馆藏数据库是否有相关图书,如果有藏书就显示藏书的详细信息;如果没有就反馈无。

服务器端主要程序代码query.asp如下所示:

<%

'建立与馆藏数据库的连接

Set CONN = Server.CreateObject("ADODB.Connection")

CONN.Open "DSN=gdrtvuLIB;uid=dba;pwd=dba"

'获取读者Android客户端发送的ISBN书号

ISBN=Trim(Request("ISBN"))

'根据ISBN书号查询图书

Set RS = Server.CreateObject("ADODB.Recordset")

SQL="SELECT*FROM books WHERE ISBN='"&ISBN&"'"

RS.open SQL, CONN, 1, 1

If RS.Eof Then

Response.Write "没有ISBN="&ISBN&”图书”

Else

'说明:|符号是生成字符串的分隔符,便于读者Android客户端解析数据

Response.Write RS("ISBN")&"|" &RS("BookName")&"|" &RS("Author")&"|" &RS("Press")&"|" &RS("Reservation")&"|"

End if

%>

2.2 读者Android客户端

Android智能手机平台是基于Linux内核的软件平台和操作系统,采用了软件堆层的架构,共分为4层,是一个真正开放的移动平台,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层[ 8]。如图2所示:

图2 Android智能手机平台体系结构

一个Android 应用程序是由多个不同的组件组合而成的,Android 系统的基本组件包括 Activity、Service、BroadcastReceiver、ContentProvider 4大类,此外还包括负责在基本组件之间传递消息的Intent组件[ 9]。Activity 是最基本的 Android 应用程序组件, 是应用程序的表示层,应用程序中的每个屏幕显示都通过扩展和继承基类Activity来实现;Service是没有用户界面,能长时间在后台运行的程序;BroadcastReceiver广播接收器是用户接受广播通知的组件,广播是一种同时通知多个对象的事件通知机制;ContentProvider 将应用程序的特定数据提供给其他应用程序使用;Intent是一种运行时绑定机制, 能在程序运行的过程中连接两个不同的组件。

在开发读者Android客户端之前,首先要搭建开发环境。Android开发环境主要包括:JDK安装、Eclipse安装、Android SDK安装、ADT安装等几个步骤。Android基于Linux内核,包含了一组优秀的联网功能,目前Android平台有三种网络接口提供给开发者使用,包括标准java.net.*接口、org.apache.*接口、android.net.*接口,如表2所示[ 10]:

表2 Android SDK 网络包

读者Android客户端采用HttpURLConnection方式连接到图书馆Web服务器,包括设置连接参数、执行HTTP操作、处理服务器返回结果等几个步骤,主要程序代码如下所示:

import java.net.HttpURLConnection;

import java.net.URL;

etISBN =(EditText) findViewById(R.id.etISBN );

try {

ISBN=etISBN.getText().toString();

//构造一个URL对象到图书馆Web服务器

URL url = new URL("http://202.19.82.42/query.asp?ISBN="+ISBN);

//使用HttpURLConnection打开连接

HttpURLConnection conn = (HttpURLConnection) url.open

Connection();

conn.setDoInput(true);

//设置连接超时20秒

conn.setConnectTimeout(20000);

//设置使用GET方式发送

conn.setRequestMethod("GET");

//设置字符集UTF-8

conn.setRequestProperty("Charset", "UTF-8");

String location = conn.getRequestProperty("location");

int resCode = conn.getResponseCode();

conn.connect();

InputStream stream = conn.getInputStream();

byte[] data=new byte[102400];

int length=stream.read(data);

//获取图书馆Web服务器反馈数据

str=new String(data,0,length);

String[] strINFO=str.split("\\|");

//关闭HttpURLConnection连接

conn.disconnect();

stream.close();

//显示ISBN号、题名(书名)、责任者(作者)、出版社馆、藏数信息

etISBN.setText ("ISBN号:"+strINFO[0]);

etBookName.setText ("书名:"+strINFO[1]);

etAuthor.setText ("作者:"+strINFO[2]);

etPress.setText ("出版社:"+strINFO[3]);

etReservation.setText ("馆藏数:"+strINFO[4]);

Toast.makeText(this, "已经有馆藏,建议不要采购!",Toast.LENGTH_LONG).show();

System.out.println(str);

} catch (Exception errinfo) {

System.out.print("INFO:"+errinfo.getMessage()); }

}

读者Android客户端需要访问Internet,必须配置相应的权限,在AndroidManifest.xml文件中加入如下节点:

< /uses-permission>

2.3 ISBN号条形码扫描程序

目前,对于Android智能手机来说,摄像头已经是标准配置,为减轻用户录入ISBN号的时间,可以直接使用手机摄像头拍摄图书的ISBN号条形码,程序自动扫描识别。国际标准书号(International Standard Book Number,ISBN),是国际通用的图书或独立的出版物(除定期出版的期刊)代码,通常一个国际标准书号只有一本(套)相应的出版物与之对应[ 11]

在Android上开发条形码扫描程序,可以直接使用ZXing包,ZXing是一个开源Java类库,可以解析多种格式的一维/二维条形码,图书ISBN号使用的条形码是一维的EAN-13条形码[ 12]

使用ZXing包进行条形码程序开发的方法:从Google Code的ZXing官网上下载BarcodeScanner3.4.apk,像安装普通Android应用程序一样安装;创建Android手机应用程序,在自己的应用中,通过Intent调用ZXing扫描条形码的Activity,可以将扫描识别到的条形码结果返回自己程序的Activity中显示出来,ISBN号条形码扫描程序运行如图3所示:

图3 ISBN号条形码扫描

条形码扫描程序代码如下所示:

super.onCreate(savedInstanceState);

setContentView(R.layout.barcodescan);

//调用ZXing条形码扫描Activity

Intent intent = new Intent("com.google.zxing.client.android.SCAN");

//指定条形码扫描格式EAN_13

intent.putExtra("SCAN_MODE","EAN_13");

startActivityForResult(intent,0);

条形码扫描识别程序代码如下所示:

//条形码扫描识别成功,显示条形码ISBN号

if (resultCode == RESULT_OK) {

String ISBN = intent.getStringExtra("SCAN_RESULT");

EditText.setText(ISBN);

}

//条形码扫描识别失败

else if (resultCode == RESULT_CANCELED) {

EditText.setText("扫描条形码失败!");

}

条形码扫描程序需要使用摄像头和自动对焦功能,必须配置相应的权限,在AndroidManifest.xml文件中加入如下节点:

3 应用效果

图书外采查重系统读者客户端运行在Android智能手机上,建议使用Android 2.2以上版本,安装程序APK文件大约3MB,读者可以到图书馆网站下载安装使用;图书馆Web服务器端运行在Windows Server 2003操作系统,Web服务器软件使用IIS。

系统功能模块包括:用户登录、条形码扫描、图书查重、系统设置、使用帮助、退出系统等。为了保证系统的安全性,读者Android客户端必须是图书馆授权的读者才可以使用,在使用时要求录入用户名和密码。读者Android客户端系统界面简洁友好,读者不经过培训就可以使用,如图4所示:

图4 系统运行主界面

读者在进行图书查重时,可以使用手写或键盘录入ISBN号,也可以使用手机摄像头扫描图书ISBN条形码,在扫描图书条形码时,光线要明亮,手机摄像头要垂直正对图书条形码。

系统可以根据ISBN号进行查重,显示馆藏图书的详细信息,包括ISBN书号、题名(书名)、责任者(作者)、出版社、馆藏数等,同时使用Toast向用户提示“已经有馆藏,建议不要采购!”的信息,Toast是Android手机提供给用户简短信息的一种视图,该视图以浮于应用程序之上的形式呈现给用户,系统图书查重界面如图5所示:

图5 系统查重界面

在图书外采现场,读者可以根据现场环境,选用3G、Wi-Fi、GPRS等通信方式连接到图书馆Web服务器。经过测试:

(1)程序扫描识别ISBN号条形码的准确率高、效率高,扫描一本书的条形码1-2秒即可识别完成,准确率99.5%以上;

(2)每查重一本图书,产生的网络流量不超过100 Byte,流量费用几乎为零;

(3)查重速度很快,使用3G或Wi-Fi无线网络查重时间3-5秒左右,使用GPRS查重时间3-10秒左右。

4 结 语

基于Android智能手机的图书外采查重系统,不需要专业设备,只需要在Android智能手机上安装客户端程序,可以为读者提供方便、快捷的图书查重服务,缩短查重时间,实现智能手机与馆藏图书信息的对接。图书馆应加强读者对系统的应用,让读者参与到图书采购中,最大限度地满足读者需求,从而有助于提升图书馆藏书的整体水平。

参考文献
[1] 百度百科. 智能手机[EB/OL]. [2011-10-12]. http://baike.baidu.com/view/535.htm.(BaiduBaike.Smartphone[EB/OL]. [2011-10-12]. http://baike.baidu.com/view/535.htm [本文引用:1]
[2] 孙昌汇, 纪双龙. 图书现场采购查重软件的设计原则与思路[J]. 图书馆学刊, 2008, 30(1): 121-123.
(Sun Changhui, Ji Shuanglong. The Design Principles and Ideas of Duplicate Checking Software for Book Procurement[J]. Journal of Library Science, 2008, 30(1): 121-123. ) [本文引用:1]
[3] 王杰. 基于智能手机的图书外采查重系统开发[J]. 现代图书情报技术, 2009(7-8): 122-125.
(Wang Jie. The Development of Duplicate Checking System in Book Outside Acquisition Based on Smart Phone[J]. New Technology of Library and Information Service, 2009(7-8): 122-125. ) [本文引用:1] [CJCR: 1.073]
[4] 北京厚宽科技有限公司. 图书行业解决方案[EB/OL]. [2011-10-12]. http://www.houkuan.com/solution.html.
(Beijing HouKuan Technology Co. , Ltd. The Solution of Library[EB/OL]. [2011-10-12]. http://www.houkuan.com/solution.html [本文引用:1]
[5] 南京码道科技有限公司. 码道图书查重宝[EB/OL]. [2011-10-12]. http://mdtscc.com/Product.aspx?pid=8.(NanjingBARWAYTechnologyCo.,Ltd. BARWAY Library Duplicate Checking[EB/OL]. [2011-10-12]. http://mdtscc.com/Product.aspx?pid=8 [本文引用:1]
[6] 广州联欣自动识别技术有限公司. iData MC80物联网移动计算机介绍[EB/OL]. [2011-10-12]. http://www.lenx.cn/idata/index.htm.
(Guangzhou LianXin Automatic Identification Technology Co. , Ltd. iData MC80 Mobile Computer [EB/OL]. [2011-10-12]. http://www.lenx.cn/idata/index.htm
[本文引用:1]
[7] 百度百科. Android[EB/OL]. [2011-10-12]. http://baike.baidu.com/view/1241829.htm.
(Baidu Baike. Android[EB/OL]. [2011-10-12]. http://baike.baidu.com/view/1241829.htm
[本文引用:1]
[8] 王向辉, 张国印, 沈洁. Android应用程序开发[M]. 北京: 清华大学出版社, 2010.
(Wang Xianghui, Zhang Guoyen, Shen Jie. Android Application Development[M]. Beijing: Tsinghua University Press, 2010. ) [本文引用:1]
[9] 曾健平, 邵艳洁. Android系统架构及应用程序开发研究[J]. 微计算机信息, 2011, 27(9): 1-3.
(Zeng Jianping, Shao Yanjie. Study of Android’s System Architecture and Application Development[J]. Microcomputer Information, 2011, 27(9): 1-3. ) [本文引用:1]
[10] 杨丰盛. Android应用开发揭秘[M]. 北京: 机械工业出版社, 2010.
(Yang Fengsheng. Android Unleashed[M]. Beijing: China Machine Press, 2010. ) [本文引用:1]
[11] ISBN Website. About the ISBN[EB/OL]. [2011-10-12]. http://www.isbn.org. [本文引用:1]
[12] Google. ZXing[EB/OL]. [2011-10-12]. http://code.google.com/p/zxing/. [本文引用:1]