基于Android的智慧家园综合服务系统的设计

2016-03-04 02:26:14
湖北科技学院学报 2016年12期
关键词:服务器端客户端服务器

刘 方

(安徽工商职业学院 电子信息系,安徽 合肥 231131)

基于Android的智慧家园综合服务系统的设计

刘 方

(安徽工商职业学院 电子信息系,安徽 合肥 231131)

根据智慧小区建设的需求,设计和实现了基于Android的智慧家园综合服务系统。该系统运用Android技术与J2EE架构的整合,采用C/S设计,实现了社区公告、物业报修、物业缴费、快递收发、家政服务、公交查询和生活超市等功能。该系统的建立有助于物业公司服务效率的提高,也给居民带来新的智能生活方式体验。

智慧社区;Android平台;J2EE分层结构;JSON;Sqlite 数据库

随着城镇化推进,城市管理模式也在变革中提升。 “智慧社区”理念的提出,为社区治理模式和服务体系的创新,提供了新的思路。 “互联网+公共服务”的社区管理服务,有助于社区管理的智能化,有助于物业服务效率的提高,有助于“便捷、舒适、安全”社区生活环境的构建,以及居民生活幸福感的获得。

借助当今移动互联网的飞速发展,以及个人移动设备在社区居民中的广泛普及,本文基于Android 技术,实现了一款智慧家园综合服务系统,有针对性地为小区居民提供社区资讯及各式便民服务,从而为融洽物业管理者、服务者、居住者三者之间关系,改善社区居民生活方式提供了方便。

一、系统设计

(一)系统的体系结构

智慧家园综合服务系统采用Client/Server架构,主要由Web服务器、数据库服务器、PC 端和移动端组成。系统的物理架构如图1所示。

服务器端采用J2EE的分层结构。分层体系使得Android 客户端不需直接与后台数据库交互,而只要通过网络与控制器组件交互,通过JSON数据交换格式,获取服务器端返回的数据。后台管理员通过PC管理端发布物业通知、社区新闻,小区活动和家政服务等信息,社区居民则通过客户端软件进行浏览和操作。系统的体系架构如图2所示。

图1 系统应用物理架构

图2 系统整体体系架构

(二)系统功能结构

智慧家园综合服务系统以社区管理为基础, 以服务业主为核心,服务内容涉及各项物业管理和多种便民服务。 (见图3)

该系统具有以下功能:

1.用户管理

用户管理分为用户登录和密码修改两个子功能。

(1) 用户登录:用户输入相应的登录信息(用户名、密码),进行系统登录。用户的类别有业主和物业管理员。

(2) 密码修改:用户用初始密码登录系统后,可以在“设置”按钮中对密码进行修改操作。输入原密码和两次新密码,如果原密码验证通过,并且两次新密码输入一致,就能成功修改密码。

图3 系统的功能结构

2.物业管理

(1)物业通知:发布各种社区公告,及时通知业主,例如停水停电通知、小区新闻动态、温馨提醒资讯等,由物业公司通过管理后台发布。客户端以ListView 列表视图呈现出各通告或新闻的标题、图片及简介,单击列表中某一项后,可以查看相应详细信息。

(2)物业报修:业主可以通过在线进行报修,还可以通过拍照的方式把要报修的内容传到物业中心,让物业及时地处理。

(3)缴费账单:可以进行当期物业费、停车费、水电费等查询、历史缴费查询等。支持微信和支付宝在线缴费。

(4)快递收发:为业主提供快递收发服务,通过平台及时发送信息,方便业主下班来取。

(5)投诉建议:可在线对社区信息进行咨询,提出意见和建议。

3.生活服务

(1)公交查询:包括公交线路查询、站点查询。

(2)家政服务:可查看经过小区物业认证的社区家政服务人员信息;提供新居开荒及家庭保洁服务。

(3)生活超市:为业主提供周边商家各类超级特惠商品展示,给业主实惠,为商家促销。

(4)更多服务:提供小区周边的各类生活服务信息黄页,(如周边餐饮外卖、衣物干洗、废品回收、开锁换锁、物流搬家等),方便热线电话查询并可一键拨号。

二、系统实现及关键技术

(一)客户端与服务器端数据交互

Android客户端与服务端之间的数据交换格式,目前较理想的是JSON,它语法简单,易于解析和生成,且传输效率高。

在本系统中,Android与服务器间通信,采用了 HTTP 协议作为通信桥梁。由于网络请求是比较耗时的操作,为此使用了异步HTTP和JSON相结合的方式来实现数据传输。

异步HTTP主要是通过android-async-http来处理对服务器的异步网络请求的。Http异步请求均在UI(主)线程之外执行,通过回调方式来处理从服务器端返回的数据。

android-async-http是基于Apache的HttpClient基础上的,一个开源的异步网络请求处理框架。该框架提供了一个RequestParams类,用于封装参数处理,具体实现中,数据传输的主要流程为:

首先调用getrequestParams方法,把客户端输入的信息进行封装,产生一个键-值对形式的RequestParams数组。调用post方法,向服务器端发送异步数据。在服务器端,从HttpServletRequest中获得客户端传来的请求数据;对数据读取处理后,将需要返回的内容封装成JSON对象,使用HttpServletRespone发送至客户端;客户端接收到返回内容JSON对象,将其解析成所需的数据格式并正确显示。异步HTTP实现过程如图4所示。

图4 异步HTTP交互过程

实现系统前后端数据的交互,JSON作用显得尤为重要。为了使得Java 对象和 JSON 数据互相转换的操作更为简便,本项目中利用了JSON-lib包相关的JSONArray 、JSONObject类来实现。

以用户(业主)登录模块为例,服务端在处理完客户端数据后,需要将返回内容封装成JSON对象,方法实现为:创建JSONArray对象,把Owner对象封装,put()方法在JSONObject对象中放入名为“result”的JSONArray对象。定义makeOwnertoJSON方法,传入Owner对象,返回JSONObject对象,即实现返回内容的JSON封装。代码如下:

private JSONObject makeOwnertoJSON

(Owner o,String type){

JSONObject r = new JSONObject();

if(type.equals("业主")){

JSONArray jsonArray = new

JSONArray();

Owner owner = new Teacher();

owner.setTName(t.getTName());

owner.setTPassword(t.getTPassword());

oOwner.setTId(t.getTId());

jsonArray = JSONArray.fromObject

(owner);

r.put("result", jsonArray);

}

return r;

}

客户端接收到服务器的返回内容JSON对象,需要将返回内容解析成所需的数据格式,下面对JSON数据的解析调用了getOwnerFromJSON方法。

代码如下:

//把返回内容解析成Owner对象

private Ownerr getOwnerFromJSON

(JSONObject object){

Owner owner = new Owner ();

if (object != null && !object.equals("")) {

owner.setTName(object.optString("TName"));

owner.setTPassword(object.optString

("TPassword"));

owner.setTId(object.optInt("TId"));

}

return owner;

}

(二)系统数据库的设计

服务器端采用的数据库是MySQL。根据系统功能分析,设计了业主用户信息表、报修记录表、缴费账单表、物业通知表、快递信息表、投诉建议表、家政服务表、商品目录表、商家电话表等系列数据库表,用来满足系统对数据存储和处理的要求。客户端采用Android内嵌的Sqlite 数据库来进行数据的存储和管理。在本系统的登录功能模块实现中,要将己通过服务器端验证合法的用户名和密码存放在客户端,需建立Sqlite 数据库进行本地化存取。

实现用户登录信息SQLite存储的过程如下:

首先定义一个名为“db”的SQLiteDatabase对象,使用Android提供的SQLiteDatabase类的静态方法,打开或创建SQLite数据库:

db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() + "/ Community user.db3", null);上述代码即创建了“Community user”SQLite数据库。

然后通过编写SQL语句建立 “user_info用户信息表”。该数据表属性列为:id (主键且自动增加)、user_name(用户名)、user_password(密码)、user_type(类别)等字段。

接下来就可以调用SQLiteDatabase对象提供的相关方法,完成对数据库的操作。

下面是通过添加insertData()方法,实现将已经登录的用户信息存入这个表中。

private void insertData(SQLiteDatabase db,String name,String password,String type){

String sql = "insert into user_info values(null,?,?,?)";

db.execSQL(sql, new String []{name,password,type});

}

用户信息SQLite存储后,当再次登录时,由于已将合法的用户名和密码存放在客户端,用户就可方便地登录了,而不需要再重新去访问服务器端,将输入的用户信息与服务器数据库进行匹配验证了。

(三)手机移动地图技术

为方便小区居民出行,本系统提供了“公交查询”模块。该功能主要是通过调用百度地图SDK提供的MKSearch类来实现二次开发的。

其实现过程为:在申请获得使用百度地图移动版的API Key后,接着在Eclipse中进行地图SDK的工程配置。为了使用网络和GPS设备,另需在应用程序的AndroidManifest中添加相应的权限和应用程序的配置信息,并进行全局Application的初始化,然后即可使用百度地图SDK的功能进行开发了。

具体实现步骤:首先创建MKSearch对象,并初始化MKSearch对象;为搜索按钮添加事件监听器,该监听器用于返回poi(位置、关键点)搜索、公交搜索、驾乘路线和步行路线结果。使用poiSearchInCity()方法搜索城市信息,从onGetPoiResult()方法中返回所有poi信息,然后获取公交线路poi信息。下面是部分关键代码:

public void onGetPoiResult(MKPoiResult arg0,

int arg1, int arg2) {

// TODO Auto-generated method stub

if (arg2 != 0 || arg0 == null) {

Toast.makeText(mContext, "对不起,

没有相应结果",

Toast.LENGTH_LONG).show();

return;

}

MKPoiInfo curPoiInfo = null;

int totalPoiNum = arg0.getCurrentNumPois();

busLineIDList.clear();

for (int i = 0; i < totalPoiNum; i++) {

if (2 == arg0.getPoi(i).ePoiType) {

curPoiInfo = arg0.getPoi(i);

busLineIDList.add(curPoiInfo.uid);

}

}

if (curPoiInfo == null) {

Toast.makeText(mContext, "对不起,

没有相应结果",

Toast.LENGTH_LONG).show();

return;

}

mBDMKSearch.busLineSearch ("合肥",

busLineIDList.get(0));

}

接下来,再调用BusLineSearch()方法,根据poi信息来搜索公交路线详细信息;并使用RouteOverlay在地图上绘制一条公交详情路线,最后刷新地图。

(四)Camera功能的调用和开发

在“物业报修”模块中,业主可以通过“文字描述”和“现场拍照上传至服务器”方式,实现在线报修。该功能的实现,涉及Camera功能的开发,以及媒体文件的上传至网络服务器。其实现过程解析如下:

1.Camera的使用和开发:首先在AndroidMainfest.xml文件中,申明要使用拍摄功能并取得存储权限,然后编写相关代码:(1)构造一个Camera Intent ,创建一个拍摄照片的Intent;(2)通过执行startActivityForResult()来开启Camera intent;(3)保存图片到本地SD卡中;(4)建立一个onActivityResult()方法,接收来自系统Camera程序的执行结果。

2.照片上传至服务器:(1)首先创建线程来连接服务器,通过处理异步Http请求来实现;其核心方法为: FileUtil.post(requestUrl, params, formfile);其中requestUrl:上传路径; params:请求参数; formfile:上传的文件。(2)把上传的文件按照 HTTP 协议格式封装,通过HTTP协议提交数据到服务器: outStream.write(textEntity.toString().getBytes()); (3)执行上传操作后,接下来在服务器上实现文件流的接收和数据保存;(4)最后在数据库中添加相应的记录。

图5 主页 图6 物业通知界面 图7 快递代收界面 图8 生活超市界面

(五)客户端的界面设计

在“智慧家园”整体布局中,各主要功能界面框架风格基本相似,顶部为 “智慧家园客户端”项目标题栏,标题栏下是一个“小区景观图片的动态展示窗口”。

该“小区图片动态展示窗口”设计为一个小的长条,放在项目标题之下,它既可以美化软件界面(或作为广告植入),也不会影响用户正常使用系统的功能。

由于系统多个界面都有“小区景观动态展示窗口“,因此我们将项目标题栏和展示窗口做成了一个公共的布局(title.xml),来供其它布局进行引用。引用该布局很简单,只要使用即可。

对于“展示窗口”的处理,采取的是将其定义为一个播放控件类AdView,定义出它加载图片的方法,让其在固定的时间间隔内不断地刷新循环显示图片,以增加软件的可看性。

客户端的部分界面布局效果如图5~8所示。

三、结语

本系统设计了基于Android的智慧家园综合服务系统,借助Android智能终端便携和强大网络功能的优势,为小区居民提供了社区资讯及各种便民服务,有助于物业公司服务效率的提高,给居民带来新的现代生活方式体验。该系统在社区建设方面有较好的应用价值。

[1]辜胜阻.智慧城市建设的理论思考与战略选择[J].中国人口·资源与环境,2012, (5) :76~80.

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

[3]冯艳红,何加铭,杨任尔,等.基于Android技术的社区服务系统设计[J].移动通信,2015,(5): 90~93.

[4]王卫红.Android应用开发基础教程[M].北京:机械工业出版社,2015.

[5]阮昆,王勉.基于Android 的高校招生就业工作信息平台的研究与设计[J].计算机应用与软件,2015, (9) :219~222.

[6]张爱凤,巩秀钢,王荣,等.基于Android 的智慧小区管理系统[J].电脑知识与技术,2015,(15):69~71.

[7]万明,李娟娟.基于Android 的社区信息管理系统的设计与实现[J].电脑知识与技术,2014,(3):561~563.

[8]钟元生.Android开发案例教程[M].北京:清华大学出版社,2015.

2095-4654(2016)12-0075-05

2016-11-04

TP311.52

A

猜你喜欢
服务器端客户端服务器
通信控制服务器(CCS)维护终端的设计与实现
县级台在突发事件报道中如何应用手机客户端
传媒评论(2018年4期)2018-06-27 08:20:24
孵化垂直频道:新闻客户端新策略
传媒评论(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客户端的设计与实现
电子测试(2018年10期)2018-06-26 05:53:34
浅析异步通信层的架构在ASP.NET 程序中的应用
成功(2018年10期)2018-03-26 02:56:14
得形忘意的服务器标准
知识产权(2016年8期)2016-12-01 07:01:13
计算机网络安全服务器入侵与防御
在Windows中安装OpenVPN
客户端空间数据缓存策略
网页防篡改中分布式文件同步复制系统