基于Android手机平台的资产管理数据终端实现方案


打开文本图片集

摘 要:介绍了一种基于低成本的Android手机平台资产管理数据终端实现方案。在手机端识别资产设备的加密二维码标签,并通过Web Service技术与资产管理的后台服务器端进行数据通讯,实现资产设备的现场无纸盘点,保证了重要资产设备信息的安全性。同时,针对系统功耗问题给出了一个优化后的设计方案。

关键词:Android;二维码;数据解密;资产管理;信息安全

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2015)005-0092-03

作者简介:邱斌(1979-),男,浙江宁波人,硕士,宁波职业技术学院电信学院讲师,研究方向为信息安全、软件工程;孟德欣(1971-),男,山西太原人,硕士,宁波职业技术学院电信学院副教授,研究方向为软件工程、图像处理;汪志达(1965-),男,新疆乌鲁木齐人,宁波职业技术学院电信学院副教授,研究方向为信息安全。

0 引言

目前,很多资产设备通过软件与二维码标签相结合进行管理,但对于资产设备的现场盘点等工作还是需要通过专用数据终端进行,某些终端仅仅提供扫描功能,识别处理二维码数据还需导入到资产管理系统后进行,因此标签扫描与资产管理系统之间存在一个应用空白地带,还需要人工操作去完成。另外,对于涉密等资产二维码标签内容必须进行加密,防止这些资产的二维码标签中敏感信息泄露导致危及涉密资产安全的事件发生[1]。

1 系统架构设计

本文提出一种利用Android手机作为手持数据终端平台进行资产管理的廉价高效的解决方案[2]。Android系统的开放性使得在该平台上进行应用开发有较高的灵活度。并且,Android手机价格不断降低,处理器性能不断提升,普通Android手机在硬件配置上即可完全满足作为手持数据终端的要求。在Android平台上开发资产管理应用程序,实现资产变更、借用、调拨、维修、统计、盘点等管理功能,并通过无线网络与资产管理服务器进行数据处理与同步功能。系统整体架构如图1所示。

2 二维码编码与解码方案设计

本文二维码编码方案采用QR编码,该编码方案是目前使用最广泛的二维码编码方案,已被纳入国标GB/T18284-2000中。二维码编码在资产管理系统中实现,二维码解码在Android手机上实现,二维码编码与解码采用开源的ZXing库来实现。其中二维码解码需要在Android智能手机上完成,在手机端的应用程序中使用ZXing的Java库来完成解码任务[3]。

二维码解码实现方法如下:

(1)在Android项目中需要创建一个显示捕捉二维码图像,并实现二维码解码的Activity类。

(2)调用ZXing库中CameraManager类的init方法实现系统初始化。

CameraManager.init(getApplication())

(3)初始化数据终端的摄像头。

private void initCamera(SurfaceHolder surfaceHolder){

try {

CameraManager.get().

openDriver(surfaceHolder);

} catch (IOException ioe) {

return;

} catch (RuntimeException e) {

return;

}

if (handler == null) {

handler = new CaptureActivityHandler(

this,decodeFormats,characterSet);

}

}

(4)使用handleDecode方法处理捕捉到的二维码标签图像。

public void handleDecode(

Result result,Bitmap barcode) {

inactivityTimer.onActivity();

String resultString = result.getText();

Intent resultIntent = new Intent();

Bundle bundle = new Bundle();

bundle.putString("result",resultString);

bundle.putParcelable("bitmap",barcode);

resultIntent.putExtras(bundle);

this.setResult(RESULT_OK,resultIntent);

}

3 二维码数据解密算法实现

在服务器端采用AES分组加密算法对二维码中的数据进行加密。数据终端的任务都是对加密后的二维码进行解密。在AES解密算法实现上,可以直接使用成熟高效的crypto++算法库加密算法库来实现对于二维码数据的加密与解密功能。

在Android端使用Jni调用crypto++算法库[4]中的AES解密函数对二维码解码后的密文进行解密[5],实现代码如下:

string MyAES::Decrypt(const string & cipher)

{

String recover;

CBC_Mode::Decryption aesDecryptor(key,key_length,iv);

StringSource(cipher,true,

new StreamTransformationFilter

(aesDecryptor,new StringSink(recover)));

return recover;

}

4 数据终端远程访问方案

在资产管理系统远程访问架构设计上,应用程序使用SOAP协议远程调用服务器端资产管理系统的Web Service。使用该架构可以在移动端的应用程序中便捷访问资产管理服务器端的资源,并使用SOAP协议将现场扫描二维码得到的原始数据传送至资产管理服务器,完成现场资产盘点等功能。

在Android开发环境中需要使用第三方的kSOAP2开发包并结合JSON进行SOAP协议开发[6],实现移动端与服务器端之间的快速访问[7]。以资产盘功能为例,Android端使用Web Service访问服务器端的代码如下:

String serviceUrl=

"http://10.63.0.10/AssetManServ?wsdl";

String methodName = "getAssetId";

SoapObject request = new SoapObject(

"http://service",methodName);

request.addProperty("AssetId",assetid.toString());

SoapSerializationEnvelope envelope = new

SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.bodyOut = request;

HttpTransportSE ht = new HttpTransportSE(serviceUrl);

try {

ht.call(null,envelope);

if (envelope.getResponse() != null){

SoapObject soapObject = (SoapObject)

envelope.getResponse();}

}

catch (Exception e){ }

5 性能优化

Android手机作为二维码的手持数据终端与专用手持数据终端相比,其在设计上待机功耗较高,且Android手机的电池容量比专用手持终端要小得多。因此,可对其性能进行优化,通过缩短应用程序占用数据终端CPU的时间,降低数据终端进行资产管理操作的功耗水平。

5.1 对于计算量较大的模块使用C语言编写

应用程序中计算量最大的是对二维码的解密计算。Android程序使用Java编写并在Dalvik虚拟机上运行。Java程序在虚拟机上的运行速度比用C++编写的程序要慢得多。因此,本文应用程序采用Java与C++混合编程模式,即程序的主体框架使用Java编写,涉及数据解密计算则使用JNI直接调用C++编写的二进制解密库来实现。这样可在最耗时间的解密阶段绕过低性能的虚拟机,提高了运行效率,大大缩短了程序运行时间。

5.2 采用数据批量同步方式

资产管理数据终端的一项重要功能是进行资产设备的盘点,在盘点时需要将盘点的资产设备信息通过无线网络上传到服务器上,因此每次盘点操作都需要进行以下操作:①建立网络连接;②调用服务器端的Web Service;③传输盘点的数据;④返回结果。

若盘点的资产数量较多,就需要频繁地执行上述操作,且盘点操作需要无线网络支持,因此在网络信号不好或者无法上网的地域,无法使用上述模式进行资产设备盘点操作。

本文采用盘点数据批量处理方式,将扫描资产设备的二维码数据存储在数据终端中,在盘点任务完成后再将所有数据同步到服务器,避免频繁的数据同步及连接服务器端的操作,减少了资产管理应用程序占用CPU的时间。

6 系统测试

本文应用系统在华为A199手机上进行真机运行测试。该手机采用了Android4.1操作系统,4核1.5G处理器。使用资产管理手机端应用程序扫描的资产设备二维码标签如图2所示。扫描资产设备的二维码可以得到该设备的详细信息,如图3所示。

为了解性能优化后方案的实际性能指标,以120个资产设备的盘点任务为例,测试不同的实现方案对于程序运行时间的影响。从表1数据可以看到,优化前的方案需要56.4s,采用优化后的方案耗费处理器时间仅为8.8s,只需前者时间的15.6%,即优化后的方案在程序运行效率上具有明显优势。

采用本文的资产管理数据终端方案,能大大降低资产管理中的硬件设备投入,有效提高资产设备的管理效率,降低管理成本。并且,采用功耗优化方案后在数据终端的待机时间上得到了有效延长,从一定程度上解决了Android手机作为手持数据终端而带来的电池容量小、续航时间短等问题。

参考文献:

[1] 张文爱,吕韬.物料数据加密QR码识别系统的实现[J].电子技术应用,2012,38(4):118-119.

[2] 霍文杰.基于二维码技术的高校大型仪器设备信息管理系统[J].沈阳航空工业学院学报,2007,24(2):90-91.

[3] 刘云龙,吕韬,曾晋,等.基于Android手机的加密QR二维码识别系统[J].软件,2012,33(4):34-35.

[4] SHERAN GUNASEKERA.Android apps security[M].Berkeley :Apress,2013.

[5] JEFFREY WALTON.Data security with crypto++[M].Oreilly & Associates Inc,2012.

[6] 龚瑞琴,毕利.基于Web Service的Android技术应用研究[J].电子技术应用:2014,40(1):134-135.

[7] 李刚.疯Android讲义[M].第2版.北京:电子工业出版社,2013.

(责任编辑:孙 娟)

推荐访问:终端 资产管理 方案 数据 手机