1、毕 业 设 计基于 Android 的太原市景点推荐系统的设计与实现学生姓名: 学号: 系 部: 计算机工程系 专 业: 计算机科学与技术 指导教师: 年 月毕业设计(论文)任务书毕业设计(论文)题目: 基于 Android的太原市景点推荐系统的设计与实现 系部: 计算机工程系 专业: 计算机科学与技术 学号: 学生: 指导教师(含职称): 1课题意义及目标随着人们生活水平的提高,外出旅游已经成了人们放松休闲的主要活动之一。现在移动端设备已是人们必备,最重要的是携带方便,基于 Android的太原市景点推荐系统可以让人们更好的了解太原市的景点信息,方便游客更好的选择。 2主要任务(1)了解景点
2、信息以及分析需要实现的功能以及细节内容,并搭建框架。(2)进行各个景点的信息的收集整理,并添加到对应的功能模块中。(3)添加简单的地图功能以及公交查询功能。(4)实现自驾游地图导航功能(选做)(5)为了游客记录出行心得,添加记事本模块,并进行增删改查功能的的实现。3主要参考资料1 崔玥.蓉城旅游管理系统设计与实现D.四川:电子科技大学,2013.2 吴晓红.基于 Android的旅游景区自助导游系统的设计与实现J.新疆大学信息科学与工程学院,2013,(28):61.3 贺全荣.暑期自助游手机来搞定J.2012,(11):28.4进度安排设计(论文)各阶段名称 起 止 日 期1 查阅文献,提交
3、开题报告 12 月 15 日03 月 01 日12 月 152 搜集整理景点信息,分析功能模块并搭建框架03 月 02 日04 月 04 日3 系统总体设计,并完成可视化交互界面的设计04 月 05 日04 月 14 日4 功能模块的设计 04 月 15 日05 月 20 日5 完成毕业设计论文及答辩工作 05 月 21 日06 月 22 日审核人: 年 月 日基于 Android 的太原市景点推荐系统的设计与实现摘要随着移动通信与计算机互联网技术的迅猛发展,手机已成为现代人们工作生活必不可少的通讯和娱乐工具。旅游作为一种精神享受和休闲游乐的新型产业,走信息化高速发展道路,能随时随地获取旅游相
4、关信息已成为旅游者们的迫切需求。本文通过分析 Android 的体系架构及应用程序的组成,利用 Java 和 SQLite 技术,构建了一个基于 Android 的太原市的景点推荐系统。该景点推荐系统主要包括主界面、景点信息介绍、写微记、搜索以及定位导航等。主界面以图文并茂的方式展示了数十个景点简略信息;景点信息介绍界面从八个方面详细介绍了景点;微记可以增删改差,并且具有分享功能,增加互动;搜索功能可以快速搜索景点名称,查看相关景点信息;定位导航功能首先需要进行当前位置的定位,获取地址以及经纬度,然后进行路线规划,获取导航路线、距离并预测行驶时间,可实现语音播报。关键词:Android,旅游,
5、数据库,百度地图 apiThe Design and Implementation of the Recommendation System of the Scenic Spots in Taiyuan Based on AndroidAbstractWith the rapid development of mobile communications and computer Internet technology, mobile phone has become a indispensable tool of communication and entertainment for peop
6、les work and life. When it comes to tourism, as a new kind of spiritual enjoyment and leisure amusement industry, it can anytime and anywhere access to travel information by using new information-based high-speed development road ,which has become the urgent need of tourists.This paper analyzes the
7、architecture of Android and its application, and constructs a recommendation system based on Android for Taiyuan city based on SQLite and Java technology. The main attractions of the system including the main interface, attractions information, writing searching and positioning navigation,etc.Main i
8、nterface with illustrations show dozens of attractions brief information. It introduces the scenic spot information interface from eight aspects in detail introduced the attractions. Micro mindshas the increase, delete, modify, query functions,and has the share function.It increases interaction.Sear
9、ch function can quickly search for the name of the attractions,and view the relevant information attractions. Positioning and navigation function needs to locate the current position and gets address as well as the latitude and longitude, and route planning, obtaining navigation routes, distance and
10、 prediction of travel time and voice broadcasting can be realized.Key:Android,travel,database,baidu map api太原工业学院毕业设计(论文)第页 共页目录1 绪论 11.1 研究背景及意义 .11.2 国内外进展 .11.3 本文的工作 .22 Android环境搭建和关键技术 .32.1 Android环境搭建 .32.1.1 JDK安装 32.1.2 Eclipse的安装 42.1.3 SDK版本下载 42.2 关键技术的实现 .52.2.1 百度地图 API key的获取 .52.2.2
11、 Android定位 .103 需求分析 .123.1 需求概述 123.2 可行性分析 123.2.1 系统可行性 123.2.2 技术可行性 123.3 系统需求分析 133.4 外部接口需求 133.5 性能需求 133.6 安全需求 143.7 软件环境 144 概要设计 .154.1 系统总体设计 154.1.1 系统架构设计 154.1.2 系统结构 15太原工业学院毕业设计(论文)第页 共页4.2 系统接口设计 184.3 数据存储设计 184.3.1 ContentProvider存储 .184.3.2 SQLite数据库存储 195 详细设计 .205.1 界面设计 205.
12、1.1 主界面设计 205.1.2 搜索界面设计 215.1.3 景点信息界面设计 225.1.4 微记模块设计 245.1.5 定位导航模块设计 285.1.6 返回键的监听 315.2 数据库设计 325.2.1 景点信息表 jingdian325.2.2 搜索记录表 history.335.2.3 微记内容表 noteitems 346 测试 .356.1 主界面加载问题 356.2 景点信息界面 dialog显示问题 .367 结论 .37参考文献 .38致谢 .39太原工业学院毕业设计(论文)11 绪论1.1 研究背景及意义现在人们生活水平普遍提高,外出旅游成为日常生活的一部分。目前
13、,游客获取旅游信息的主要方式是咨询旅行社或上网查询,这种方式获取的旅游信息比较粗略,不直观,不灵活。随着移动网络的飞速发展和安卓智能手机的普及,使游客在安卓智能手机上实现旅游信息方便快捷的查询成为可能。太原市是山西省的省会,别称并州,古称晋阳,也称“龙城” ,国家历史文化古城、 国家园林城市、是一座具有 4700 年历史,2500 多年建城历史的古都。下辖地区地区有 6 个市辖区、3 个县、一个县级市,拥有古镇乡村、自然景观、展馆、公园等多个类型的大大小小数十个景点。基于移动端的景点推荐软件的实现,可以代替游客了解景点信息的传统方式,更方便,更快捷。人们可以通过安卓手机快捷实时的查询旅游信息,
14、从而为制定旅游计划提供决策支持 4。1.2 国内外进展随着经济的稳步发展和人民生活水平的日益提高,旅游活动逐渐成为人们生活中的一个重要内容,促进了国内旅游市场的蓬勃发展 1。Android 一词的本意指“机器人”,同时也是 Google 于 2007 年 11 月 5 日宣布的基于 Linux 平台的的开源手机操作系统的名称 2。在移动互联网和移动终端大发展的趋势下,各类移动应用也在蓬勃发展 3,手机也是人们出行的必须品,人们越来越希望有一款智能化的简单易于用户使用的智能旅游信息软件,来更好的为人们出行服务。目前,有很多景点信息的软件,这些软件都是全国性的,没有一款针对具体地太原工业学院毕业设
15、计(论文)2方的景点信息推荐的软件,广而不精 5。在网上查询信息的时候,会对于一些小的景点很难查到详细的信息。现如今国内存在的软件有一些,例如“景点通” ,是一款可以帮助经常旅游的用户轻松掌握旅途景点的手机应用 13,有任意缩放的精美地图功能,景区内旅行线路规划,还有详实的景点内各个 POI 介绍。还有一款软件就是“自游 e 派”,可实现上千个景点的深度语音讲解,知名景点的电子导览图,用手机记录轨迹、拍照、写微游记、微博分享、并在地图、卫星地球上展示出来。旅游信息化已经在发达国家经历了几十年的发展。我国旅游业信息化开始于 20世纪 80 年代初期,起步比较晚,基础比较薄弱,整体水平较低 6。目
16、前我国大多数旅游管理系统均是面向旅游者的,以各单独旅游景区为单位的景区内部“查询系统” ,查询的内容仅仅为景区内景点、线路和各服务点信息。以一个地区为基础的旅游信息系统,涵盖区域内各旅游资源的系统少之又少 7。以地区为单位的基于 Android 的景点推荐系统,更加方便的为本地区游客随时随地出行提供选择。1.3 本文的工作现在主流的手机操作系统有 Android 和 IOS12。Android 有成熟的技术和广泛的市场,在这种的基础下,为了满足人们的需求,设计并实现了基于 Android 的太原市景点推荐系统。本文的主要工作如下:(1) 熟悉 Android操作系统开发需要用到知识和开发方式,
17、充分利用 Android的成熟技术以及接口。(2) 根据需求分析,分析系统可行性以及技术可行性,了解用户人群的操作习惯以及逻辑判断,根据这些开发出能最大程度的满足客户的需求的功能模块。(3) 对系统的功能模块、所用接口、以及数据库进行概要设计。(4) 系统功能模块的实现,例如各个界面的设计,地图定位导航的前期工作申请key值以及后续开发,详细的数据库设计,所用到的表以及字段等。(5) 进行测试工作,发现问题并解决问题,完善界面优化性能。最后进行总结和展望。太原工业学院毕业设计(论文)32 Android环境搭建和关键技术2.1 Android环境搭建2.1.1 JDK安装首先需要下载 JDK,
18、安装到固定目录下(目录最好没有中文或者空格等字符,否则有时会出错),然后环境变量设置如下:(1) 我的电脑-属性-高级- 环境变量-系统变量中添加以下环境变量:(2) JAVA_HOME 值为:E:Aid Eeclipsejdk(你安装 JDK 的目录) (3) CLASSPATH 值为: .;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;(4) Path: 在开始追加 %JAVA_HOME%bin;(5) NOTE:前面四步设置环境变量对搭建 Android 开发环境不是必须的,可以跳过 11。安装完成之后,打开 cm
19、d 窗口,输入 javaversion 查看 JDK 的版本信息。出现类似图 2.1 的内容表示安装成功了:太原工业学院毕业设计(论文)4图 2.1 测试 jdk 是否安装成功2.1.2 Eclipse的安装Eclipse 的安装选择是 ADT Bundle。ADT Bundle 包含了 Eclipse、ADT 插件和SDK Tools,是已经集成好的 IDE,只需安装好 JDK 即可开始开发。2.1.3 SDK版本下载Android 有很多版本,从 1.x 已经发展到现在的 Android5.1,随着版本的更新,增加了很多新的功能,也替换了一些旧的功能。进入 sdk 目录下,打开安装程序,选
20、择相应的版本号进行下载。由于现在 Google受到限制,有时候会出现没有可选包以及下载结果为 uninstalled。所以需要进行一些设置。(1) 首先需要修改 hosts 文件:打开“C:WindowsSystem32driversetc”路径下的hosts 文件(以记事本的方式打开)。然后加上以下内容 203.208.46.146 和 203.208.46.146 dl-。(2) 其次需要添加镜像,步骤如下:太原工业学院毕业设计(论文)5启动 Android SDK Manager ,打开主界面,依次选择Tools 、Options.,弹出Android SDK Manager - Se
21、ttings窗口;在Android SDK Manager - Settings窗口中,在HTTP Proxy Server和HTTP Proxy Port输入框内填入镜像服务器地址(不包含 http:/,如图 2.2)和端口,并且选中Force https:/. sources to be fetched using http:/.复选框。设置完成后单击Close按钮关闭Android SDK Manager - Settings窗口返回到主界面;依次选择Packages 、 Reload。图 2.2 SDK 添加镜像2.2 关键技术的实现2.2.1 百度地图 API key的获取(1) 登
22、录百度帐号访问 API 控制台页面,若您未登录百度账号,将会进入百度账号登录页面,如图 2.3 所示。太原工业学院毕业设计(论文)6图 2.3 登录百度帐号界面(2) 登录 API 控制台登录会跳转到 API 控制台服务,具体如图 2.4所示。图 2.4 登录 API 控制台界面(3) 创建应用如图 2.5,点击“创建应用 “,进入创建 AK 页面,输入应用名称,将应用类型改为:“Android SDK”,如图 2.6 所示。太原工业学院毕业设计(论文)7图 2.5 应用列表界面图 2.6 选择应用类型界面(4) 配置应用应用类型选为“Android SDK” 后,需要配置应用的安全码,如图
23、2.7 所示。(5) 获取安全码输入“安全码 ”。安全码的组成规则为: Android 签名证书的 sha1 值+“;”+packagename(即 :数字签名+分号+包名 )。注意:中间的分号为英文状态下的分号!您可以通过两种方法来获取 Android 签名证书的 sha1 值:(需事先配置好 Android 环境)获取 sha1 值第一种方法:使用 keytool第 1 步:运行进入控制台,如图 2.8 所示。第 2 步:定位到.android 文件夹下,输入 cd .android,如图 2.9 所示。太原工业学院毕业设计(论文)8图 2.7 创建应用界面图 2.8 cmd 界面太原工业
24、学院毕业设计(论文)9图 2.9 .android 路径下第 3 步:输入 keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取 SHA1 类型的证书(密钥口令是 android,在图 2.10 中输入),例如:其中 keytool为 jdk 自带工具;keystorefile 为 Android 签名证书文件。图 2.10 输入密钥口令太原工业学院毕业设计(论文)10最终得到的 sha1 值如图 2.11 所示。图 2.11 sha1 值第二种方法:在 eclipse 中查看windows - preferance - android
25、- build。如图 2.12 所示。图 2.12 eclipse 查看 sha1 值太原工业学院毕业设计(论文)11获取包名包名是 Android 应用程序本身在 AndroidManifest.xml 中定义的名称,如图 2.13所示红色部分。图 2.13 包名随后就可以在开发中使用所申请的 key 值了。2.2.2 Android定位(1) 导入库文件在相关下载最新的库文件。将 so文件的压缩文件解压出来,把对应架构下的 so文件放入开发者自己 APP的对应架构下的文件夹中,建议全部放入,程序兼容性会大大提升,将 locSDK_5.X.jar文件拷贝到工程的 libs目录下,这样您就可以
26、在程序中使用百度定位 SDK了。(2) 设置 AndroidManifest.xml每个 app 拥有自己单独的定位 service,需要在 application 中添加如图 2.14 所示的内容,用来声明 service 组件。图 2.14 service 组件(3) 声明使用权限。具体内容如图 2.16 所示:(4) 设置 AcessKey使用 SDK5.0 需要在 Mainfest.xml 设置 Accesskey,设置有误会引起定位和地理围栏服务不能正常使用,必须进行 Accesskey 的正确设置。通过在 application 标签中加入如图 2.15 所示的内容来设置 Acce
27、ssKey。太原工业学院毕业设计(论文)12图 2.15 key 值设置图 2.16 使用权限太原工业学院毕业设计(论文)133 需求分析3.1 需求概述随着信息技术的进步,人们所要求的生活质量不断提高,尤其是移动端互联技术的快速发展,电脑端的查询已经无法满足人们的需求了,获取便捷、有效信息的及时性和方便性已经成为人们的基本要求。本系统的主要目的是为旅游服务提供一种便于携带操作方便的导航系统,用于太原市的旅游景点。还能够提供快速的景点信息查询、写微记并进行 QQ 或者微信朋友圈分享以及地图导航等功能。3.2 可行性分析3.2.1 系统可行性伴随着经济不断发展,旅游产业也蓬勃发展,人们旅游的次数
28、越来越多。有计划性的假期远游,去外省甚至出出国;还有就是在平时的节假日周末在周边旅游景点即兴出游。人们需要一款了解景点信息的便携式设备的软件。针对太原市景点的推荐系统,开发在移动端,极大的方便了游客在太原市内以及周边景点的出行。3.2.2 技术可行性PC 端即使可以查看景点信息,但是出行在外,携带 PC 断,不太方便;手机上网也可以查看景点信息,但是信息比较分散。该软件是针对太原市景点信息的收集,基于移动端的 android 平台进行开发。Android 技术是开源的,研究开发很方便,一般大型的项目庞大的数据都是使用 SQL Server 或者 Oracle 数据库,但是 Android 端一
29、般都是小型的数据,使用 MySql 或者 SQLite 数据库,本系统使用的就是轻型数据库 SQLite,地图定位导航使用百度地图 SDK,这些都是免费提供给开发者使用的。系统开发好之后,进行打包,将 apk 文件安装到手机上,就可以进行使用。每一个景点信息都是通过数据库保存,所以查询景点信息不需要联网,就可以查询相应的景点信息。只有在微记进行分享以及定位导航的时候需要进行联网。所以说基于太原工业学院毕业设计(论文)14Android 的太原市景点推荐系统的技术是非常可行的。3.3 系统需求分析景点推荐系统主要是以文字和图片的形式为大家提供服务,同时拥有友好方便快捷的操作界面,Android
30、系统现在己经在广泛的应用于手机领域。本系统主要针对Android 手机 ,充分利用 Android 的优势开发一款针对太原市景点的推荐系统。其需求包括:(1) 用户界面:初始化用户界面主要用于向用户展示粗略的景点信息。景点信息以列表形式显示,图文并茂。还有图片轮显,以及一些功能控件。(2) 景点信息:用户界面是对景点的粗略展示,点击单一景点,就会进入相应的景点的详细介绍,展示了关于这个景点的多个信息数据。为了满足用户的需求,提高体验度,增加了进入上一个景点、下一个景点按钮,方便用户快速浏览多个景点信息。(3) 搜索景点:为了方便用户快速查找相应的景点,增加了搜索景点功能,点击搜索框,进入搜索界
31、面,为了使用户体验更人性化,还增加了搜索历史纪录以及删除搜索历史记录功能,以及友好性提示。(4) 写微记:游客出行结束后,难免会有游行心得,故增加了写微记模块,也就是一个简单的记事本功能,可以记录心得。为了更加人性化,增加了分享功能,比如分享给 QQ 好友、微信朋友圈等,增加用户体验。(5) 地图导航:利用百度地图 api,增加每个景点的地图导航功能,方便用户出行,实现路径规划,实时导航。3.4 外部接口需求现在移动端的地图开发只能有两个选择,一个是 Google 地图,一个是百度地图,使用百度地图写好的接口,直接进行二次开发使用就可以了 10。3.5 性能需求太原工业学院毕业设计(论文)15
32、手机软件要有良好的用户体验,良好的用户体验体现在以下几个方面:(1) 界面友好用户界面要简洁直观,设计合理,方便用户操作,让用户操作起来比较舒服,并且 UI视觉效应好。(2) 快速响应快速处理用户的输入或请求,对于需要长时间处理的部分就会对用户进行友好提示,告知用户该操作正在运行,或者使用进度条,让用户进行等待。(3) 有好提示当一些操作无法在进行下去的时候,就会进行相关提示。(4) 屏幕适配适合多个版本以及不同分辨率的屏幕。3.6 安全需求Android 所设计的应用,在默认情况下,是没有权限对其他应用程序、操作系统或者用户进行有害操作。例如连接网络、访问通讯录、访问短信和通话记录、读取用户
33、的一些隐私数据,还有保持设备活动等等的操作。在开发过程中,必须在清单文件的代码中声明这些权限,如果没有进行这不操作,应用在运行过程中执行需要权限才可以执行的操作时,就会直接崩掉 8。即使授予了权限,在应用执行需要权限的操作时,Android 系统本身也会友好提示应用正在执行某操作,询问是否允许。3.7 软件环境操作系统:Android1.5 以上;数据库:SQLite;开发工具:Android ADT , DDMS,Eclipse太原工业学院毕业设计(论文)164 概要设计4.1 系统总体设计4.1.1 系统架构设计本系统设计的基于 Android 的太原市景点推荐系统,主要包括微记模块、搜索
34、模块、主界面、内容模块以及导航模块等。如图 4.1:图 4.1 系统结构图4.1.2 系统结构(1)初始化界面主要用于向用户展示粗略的景点信息,包括跳转微记按钮、景点搜索框、景点图片的轮显、已经景点信息列表等。如图 4.2:图 4.2 用户界面结构图太原工业学院毕业设计(论文)17(2)搜索界面主要用于用户快捷搜索指定的景点,然后查看景点信息,结构如图 4.3所示。搜索框在不为空的情况下(也就是输入内容之后),可以进行清空;点击搜索按钮,列表界面会显示搜索内容的列表;默认情况下列表内容是显示搜索记录列表,而且还带有清空历史记录按钮,使功能更加人性化。图 4.3 搜索界面结构图(3)写微记界面结
35、构如图 4.4所示,主要是显示微记的列表,其中的操作按钮还有以下功能,如图 4.5所示,点击写微记,就会进入编辑微记界面,点击删除,就会进入删除微记界面,可以批量删除。图 4.4 微记界面结构图(4)编辑微记界面有一个大的编辑区域,还有一个分享按钮,可以通过选择分享到 QQ还是分享到微信朋友圈;再有就是一个选择背景颜色的 dialog弹框,可以更换背景颜色。编辑完之后,点击手机的返回键即可自动保存操作。太原工业学院毕业设计(论文)18(5)景点信息界面主要是从八个方面展示一个景点大部分系信息,如图 4.6,有名称、介绍、类型、建议游玩时间、门票价格、开放时间以及地址。景点介绍只在界面展示了一部
36、分,点击详细信息按钮,可以弹出对话框展示全部的景点介绍。为了方便快速浏览其他景点,就添加了两个按钮“上一个”和“下一个”;而且还有导航按钮,可以进入地图,实现导航。图 4.5 微记界面操作按钮结构图图 4.6 景点信息界面结构图太原工业学院毕业设计(论文)194.2 系统接口设计现在的 Android 开发者越来越多,很多 Android 系统的应用程序也都需要进行地图开发,使用定位、导航等功能。国内开发者大多数使用百度地图 API 进行地图开发,这是百度免费提供给开发者的接口。提供基本地图展现、搜索、定位、逆/地理编码、路线规划、LBS 云存储与检索等功能,适用于 PC 端、移动端、服务器等
37、多种设备,多种操作系统下的地图应用开发。4.3 数据存储设计Android 系统的数据存储方式主要有四种,分别是:SharedPreference、SQLite 、ContentProvider 以及文件存储 9。在本系统中,综合运用了多种存储方式,从而达到数据及时高效地保存共享。 4.3.1 ContentProvider存储Content Provider,即内容提供商或者内容提供器。在 Android 中,ContentProvider 是一种数据包装器,适合在不同进程间实现信息的共享。例如,我们可以用 ContentProvider 来封装以 SQLite 作为的数据源,这样就可以很好
38、的为其他应用提供信息共享服务。其他应用在访问 ContentProvider 时,可以使用一组类似 REST 的 URI 的方式进行数据操作,大大简化了读写信息的复杂度。例如,如果要从封装图书数据库的 ContentProvider 获取一组图书,需要使用类似以下形式的 URI:content:/com.scott.book.BookProvider/books 而要从图书数据库中获取指定图书(比如 23 号图书),需要使用类似以下形式的 URI:content:/com.scott.book.BookProvider/books/23。ContentProvider 是一个抽象类,定义了一系
39、列操作数据的方法模板,BookProvider 需要实现这些方法,实现图书信息的各种操作。现在知道了具体的 URI 之后,我们又如何操作进而取得数据呢?此时,我们就要了解 ContentResolver 这个类,它跟 ContentProvider 是对应的关系,我们正是通过它来与 ContentProvider 进行数据交换的。android.content.Context 类为我们定义了 get太原工业学院毕业设计(论文)20ContentResolver()方法,用于获取一个 ContentResolver 对象,如果我们在运行期可以通过getContext()获取当前 Context
40、实例对象,可以通过这个实例对象所提供的 getContentResolver()方法获取到 ContentResolver 类型的实例对象,进而可以操作对应的数据。ContentProvider 对于 Android 应用而言,组件必须相互独立,如果这些 Android应用之间需要实现实时的数据交换。例如我们开发里一个发送短信的程序,当发送短信时需要从联系人管理应用中读取指定联系人的数据-这就需要多个应用程序之间进行实时的数据交换。4.3.2 SQLite数据库存储在 Android 开发项目中生成的 SQLite 数据库会保存在各自的应用程序目录下,例如/data/data/database
41、s 14 。应用程序生成的数据库文件是私有的,只有创建这个数据库的应用程序可以访问,进行增删改差 15。如果需要在其他应用程序中访问,就需要使用 ContentProvider。太原工业学院毕业设计(论文)215 详细设计5.1 界面设计Android 系统定义了 4 个重要的组件,分别是 Activity、Intent、ContentProvider以及 BroadcastReciver6。Activity 是 Android 应用中负责与用户交互的组件 大致上把它想象成 Swing编程中的 JFrame 控件。不过它与 JFrame 的区别在于: JFrame 本身可以设置布局管理器,不断
42、地向 JFrame 中添加组件,但 Activity 只能通过 setContentView(View)来显示指定组件。太原市景点推荐系统的界面由 Android Activity 构成,通过 Intent、Servcie 和ContentProvider 完成与 Android 系统框架的交互。5.1.1 主界面设计系统启动后进入 SplashAcitivty 设计的界面,只显示一张图片,两秒后会自动跳转到主界面,如图 5.1 所示。在这个界面主要包括三部分:自定义标题栏、图片轮显以及景点列表。主界面被设计成 MainActivity 类,首先要设计自定义标题栏就要把原有的标题栏取消掉,在代
43、码中的 setContentView()方法前面加上 requestWindowFeature(Window.FEATURE_NO_TITLE);这样就可以设置无标题模式,然后根据自己的需要进行标题栏布局。图片轮显是通过 ViewPager 来实现的,找几张固定图片资源,加载到 ViewPager控件中,然后通过 scheduleAtFixedRate()方法控制执行频率,调用线程每 3 秒切换一次图片。ListView 是列表形式,景点列表就是通过这个控件来显示的,列表的每一条称为一个 item,每一个 item 都显示了一张图片,已经景点名称和简略的景点介绍。布局采用的是相对布局 Rela
44、tiveLayout,显示图片用的是 ImageView 控件,将图片放在 res/drawable 目录下,通过 TextView 显示两条文字信息,而且设置 android:maxLines=“2“属性来控制最大显示两行。太原工业学院毕业设计(论文)22图 5.1 主界面 图 5.2搜索记录界面5.1.2 搜索界面设计搜索界面设计成 SearchAcitivty 类,界面主要显示一个搜索框,搜索按钮,以及标题栏下方的列表。标题栏下方的列表有两个 ListView,但是这两个 ListView 不会同时显示,进入搜索界面主要显示的搜索记录列表,根据输入框内容搜索到的相应景点的列表,只有在点击
45、搜索按钮之后才会出现,如图 5.2 所示,实现这个效果所用的方法是 setVisibility(int visibility)。所传值为 View.VISIBLE 或者 View.GON;顾名思义,gone 是隐藏, visible 是显示,根据逻辑判断来决定是显示还是隐藏。因为查询数据库比较耗时,为了方便搜索,将所有景点的名称都写在了 JingdianName 类中的 String 类型的 names 数组中。查询式只需要先和 names 数组中的值匹配。如 5.3 所示,输入“ 迎泽 ”,点击搜索之后,会出现两个值,这是通过 for 循环遍历 names 数组,挨个调用 contains(
46、)方法,判断是否包含输入的字符,然后把所有满足条件的值都取出来,然后放到 list 集合中,最后添加到 ListView 进行显示,如果没有搜索到相应的景点,会通过 Toast 提示“ 没有该景点” 。而且点击搜索按钮之后,会将太原工业学院毕业设计(论文)23输入的值存入数据库的表 history 中。最后会显示在历史记录的 ListView 中。当点击清除历史记录按钮的时候,会调用 db.execSQL(“delete from “ + Contance.HISTORY_TABLENAME),来删除表数据,但是不会删除表结构,这样只清空数据,之后还可以继续保存。图 5.3 搜索内容界面 图
47、5.4 景点信息界面不管是历史记录列表,还是搜索内容列表,点击条目,会调用 equals(),对 names 进行判断,查询是否有一样的值,如果没有,就会提示没有该景点,如果有的话,就会查询数据库,跳转到相应的景点信息界面。5.1.3 景点信息界面设计景点信息界面设计成了 SingleActivity,如图 5.4 所示,景点信息界面 8 个字段名称对景点进行介绍,通过点击返回按钮,会返回到主界面,点击按钮“上一个”和“下一个”会切换到相应的景点,顺序和主界面的景点列表的景点排列顺序是一致的。当到达第一个或者最后一个景点的时候,分别判断 id=1 和id=JingdianName.names.length 是否成立,然后提示“已经是第一个景点了”和“已经是最后一个景点了” 。由于景点介绍内容比较多,如果全部罗列出来就会使界面有点长,所以设置景点信息的属性 android:maxLines=“4“,即最大行数为 4,android:ellipsize=“end“属性是设置超出