工科毕业论文 - 图文

更新时间:2024-03-07 07:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类号 论文选题类型 U D C 编号

本科毕业论文(设计)

题 目 基于安卓的华师校园导航系统的开发

学 院 计算机学院 专 业 计算机科学与技术 年 级 学生姓名 学 号 指导教师

二○ 年 月

华中师范大学 学位论文原创性声明

本人郑重声明:所呈交的学位论文是本人在导师指导下独立进行研究工作所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。

学位论文作者签名: 日期: 年 月 日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

本学位论文属于

1、保密 □ ,在_____年解密后适用本授权书。 2、不保密 □。

(请在以上相应方框内打“√”)

学位论文作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日

内容摘要:随着现代社会的高速发展,人们对于身边的需求也越来越高,特别是大学生这一群体。随着我们对谷歌地图的功能了解的深入,我们也迫切希望有一款属于我们自己的导航地图。对于我们在华中师范大学的学子,特别是刚来到华师的学子来说,有一个属于咱们华师自己的校园导航app是十分必要的。

从2008年第一部Android智能手机问世至今,Android开始争夺智能手机市场,到现在,Android已经成为了市场占有率第一的智能手机平台。因此在Android平台上实现一个华师校园导航系统是很必要的。它能通过用户随身携带的Android设备,查看自己所处的位置,定位自己要去的地方。从而能够让对华师地形不熟的学子能够很快找到自己要去的地方。

本论文在开始时候首先提出了设计基于Android的华师校园导航系统,Android系统开发以及本课题的意义方面进行了讨论,接着在介绍Android的基本架构的同时也向我们介绍了Android中的几个常见类似以及展示了Android开发的基本方法;然后又介绍了要开发的课题中索要用的Google map api的使用;再于设计的方面针对本课题所进行的需求分析,包括功能性分析以及非功能性分析,同时也提出了设计思路以及基础界面设计;在实现的方面对本系统的实现进行了详细的介绍,包括界面设计以及程序设计;然后对校园导航系统进行了测试;最后对全文进行了总结。 关键词:校园导航,谷歌地图,安卓系统,智能手机

Abstract:With the rapid development of modern society, people’s demand for side is becoming more and more high, especially for college students this group. As we know about baidu map function further, we also eager to have a belong to our own navigation map. For us in the central China Normal University students, especially those freshmen want to have an our own campus nevagation app.

From the first step in 2008 Android smartphones have functioned, Android began to scramble for the smartphone market, up to now, Android has become the market share the first smartphone platform. So on the Android platform to realize a CCNU campus navigation system is very necessary. It can pass the user carries the Android device, view their position, location where he is going. To allow for those who are not familiar with CCNU can quickly find where they want to go.

1

At the beginning of this paper puts forward the design of CCNU campus navigation system based on Android, Android system development and the significance of this topic is discussed, and then introduce the basic architecture of Android and Android are introduced to us in a few common similar, and shows the basic method of the development of Android . And then introduced the development subject to baidumap for use in the API to use; Again in the design aspect of the research in this topic for requirements analysis, functional and non-functional analysis, colleagues also puts forward the design idea and basic interface design; In the aspect of implementation of the implementation of this system is introduced in detail, including interface design and program design; Then on the campus navigation system was tested; Finally, the full text is summarized. Key words:campus navigation, google map,android OS,smart phone

2

第一章 绪论

1.1研究背景

随着现代社会的高速发展,人们对于身边的需求也越来越高,特别是大学生这一群体。随着我们对google地图的功能了解的深入,我们也迫切希望有一款属于我们自己的导航地图。对于我们在华中师范大学的学子,特别是刚来到华师的学子来说,有一个属于咱们华师自己的校园导航app是十分必要的。

从2008年第一步Android智能手机问世至今,Android开始争夺智能手机市场,到现在,Android已经成为了市场占有率第一的智能手机平台。因此在Android平台上实现一个华师校园导航系统是很必要的。它能通过用户随身携带的Android设备,查看自己所处的位置,定位自己要去的地方。从而能够让对华师地形不熟的学子能够很快找到自己要去的地方。

1.2研究目的及意义

基于智能手机的华师校园导航的开发可以为华师的学子们提供一个基于Android平台的校园导航。能够让大家只需要在自己的智能手机上安装一个app,就能够让大家轻松定位自己在华师的位置,能够轻松找到自己的目的地距离自己的距离。这一app能够让广大华师学子受益,特别是刚进入华师校园的学子能够受益。

1.3国内外研究现状

Android是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序-----移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开发手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方竭诚深层次的合作伙伴关系,希望借助建立标准化、开发式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。[1]

Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每

3

个人提供信息”这一企业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基于Android的电话。Google的目标是让(移动通讯)不依赖于设备甚至是平台。出于这个目的,Android将补充,而不会替代google长期以来奉行的移动发展策略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。

目前Android软件如雨后春笋般地增加着,关于校园导航类的Android软件, 在Google play主页有九款类似app。

1.4 研究内容及组织结构

本文的内容包括介绍Android开发平台、google map的开发并设计实现了Android智能手机上面的华师校园导航系统。

本文的组织结构如下:

第一章:绪论。本章介绍本文的研究背景,研究目的和意义,及国内外研究现状,并给出了本文的研究内容及组织结构。

第二章:Android的架构分析。本章介绍了Android的特征,架构,Android应用的构成和工作机制。

第三章:平台环境介绍和构建。本章介绍了搭建开发Android平台所需要的软件,搭建步骤以及本课题所使用所使用的google map API的搭建方法。

第四章:Android平台华师校园导航系统设计。本章介绍了本系统的设计需求(功能需求和非功能需求),设计思路以及界面设计。

第五章:Android平台华师校园导航系统的实现。本章介绍了校园导航的实现方式包括界面设计以及代码设计。

第六章:系统测试。本章是对系统的全面的测试。 第七章:结论。

第二章 Android的架构分析

4

Android是一个移动设备的软件平台,是由Linux+java构成的开源软件,它提供包括SDK、Key Apps、Middleware、Linux Kernel四个部分在内的全套手机软件方案。它开放了基于Linux内核以上的开发工具,从而保证了内容的可移植性和多样性。 Android平台为我们开发应用程序提供了一套很好的框架,我们可以在这个平台的基础上开发不同的应用程序,也可以开发新的组件供应用程序调用。[2]

2.1 Android特征

Dalvik虚拟:Android采用的Java虚拟机是自主开发的代号为Dalvik的虚拟机技术,在保证API方面兼容的同时Dalvik针对移动手机进行了大幅优化,占用资源更小,运行效率更高。

内嵌浏览器:基于开源的浏览器网页排版引擎WebKit。

优化的图形:强大的自定义二维图形库。基于OpenGL ES1.0标准的3D图形功能,在移动3D开发中有着至关重要的地位。

SQLite数据库:SQLite提供结构化的数据存储。它是一款轻型免费的开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低,需要的内存空间少,处理速度比较快和支持事务处理功能等。

多媒体支持:支持各种通用的音视频和静态图像格式,如MP3、JPG、PNG等。Open Core是Android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现的。通过Open Core,程序员可以方便快速的开发出想要的多媒体应用程序。

GSM技术:(依赖硬件)Global System for Mobile Communications,全球移动通讯系统,速成“全球通”,是第二代移动通信技术,其开发EI是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能走遍全世界。

蓝牙,EDGE,3G,and wifi是一种短距离的无线连接技术,在短距离内可以实现语音和数据的无线传输。EDGE(Enhanced Data Rate for GSM Evolution),是增强型数据速率GSM演进技术。

Camera,GPS,compass,and accelerometer:(依赖硬件)GPS(Global Positioning System)全球定位系统。它是一个由覆盖全球的24颗1J星组成的卫星系统。Compass是个开放源代码的JAVA搜索引擎框架。强大的开发环境:包括一个设备模拟器,调

5

试工具,内存和性能检测,以及Eclipse IDE的开发插件。Eclipse是个集成开发环境。[3]

2.2 Android架构

Android的架构是Linux内核、c/c++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,如图2-1所示。通过编译基于框架的应用程序可以降低开发负荷。应用软件原则上是在Dalvik VM上运行的。

图2-1 Android架构图

2.2.1 关键应用程序

Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多更有特色的应用程序。开发语言是java。 2.2.2 应用程序框架

Android应用程序的开发基于框架和组件。Android本身已在其框架中提高了许

6

多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其他应用程序调用。

2.2.3 C/C++函数库

Android应用程序框架之下是一套C/C++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。这些函数库包括:标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WEB应用的安全协议SSL、用于点阵和矢量字体渲染的Free Type以及SQLite引擎等。[4]

2.2.4 java运行环境

Android的java程序运行环境包含了一组java核心函数库以及Dalvik虚拟机,它们有效地优化了java程序的运行过程。所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效运行的多个虚拟机实例。Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。这是被优化过的最小的内存依赖的格式。Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制,和内存管理机制等。[5]

2.2.5 Linux内核

Android系统平台是基于优化了的Linux内核,是其系统平台的核心。它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。

2.3 Android应用的构成和工作机制

对于一个Android应用程序来说,是由Activity、Internet Receiver、Service、

Content Provider四部分组成的,但是并不是每一个Android应用程序都必须由这四个部分组成。在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件

7

、组件的功能以及必要条件等。

2.3.1 Activity

Activity是构成应用程序中最重要的构造块,在Android应用程序中,几乎都是通过activity赖于用户进行交互,所以activity主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用setContentView(View)方法来显示你自己的用户界面。 (1)活动生命周期

活动(activity)在系统中以活动栈的形式进行管理。当一个新的活动启动后,被放到了栈顶,成为了运行活动,而新活动之前的活动在活动栈里总位于新新活动之下,知道新的活动退出才重新回到前台。

1) 活动的整个生命期:从首次调用onCreate(Bundle)开始,到最终调用 onDestroy()结束。在onCreate()中进行所有的初始化,在onDestroy()时进行清理工作,释放资源。

2) 活动的可见生命期:从调用onStart()开始,到onStop()被调用为止。在这段时间内,即使活动不与用户进行交互,用户也可以在屏幕上看到它。在这两个方法调用之间,可以维护活动显示给用户的资源。OnStart()和onStop()方法可以多次调用,因为活动随时可以在可见和隐藏之间进行转换。

3) 活动的后台生命期:从调用onResume()开始,到onPause()被调用为止。在这段时间内活动出于其它所有活动之前,并与用户进行交互。一个活动可以不断在resumed状态和paused状态之间切换。 (2) 活动之间的切换

Android使用了intent类来实现活动之间的切换工作。Intent负责对应用中一次操作的动作、动作涉及的数据和附加数据进行描述。根据intent的描述,负责找到对应的组件,将intent传递给调用的组件并完成组件的调用。因此,intent起着一种媒体中介的作用 ,专门提供组件相互调用的相关信息,实现调用者与被调用着之间的解耦。在应用中,我们可以以两种形式来使intent:直接intent,指定了component属性的intent,通过指定 的组件类,通知应用启动对应的组件。间接intent,没有指定component属性的intent,

8

则需要包含足够的信息,这样系统才能根据这些信息,在所有的可用组件中,确定满足此intent的组件。[6]

2.3.2 Intent Receiver

Intent Receiver是用于对外部事件的响应,当外部事件发生时,会使用NotificationManager通知用户。当一个Intent Receiver被触发时,系统会在需要的时候启动对应的应用程序。如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会通过以通知的形式发送到当前界面的正上方来通知用户。各种应用还可以通过使用Comtext.broadcastIntent()将它们的Intent Receiver广播给其他的应用程序,实现应用之间的通讯。

2.3.4 content provider

Content Provider应用程序能够将它们的数据保存到文件,SQL数据库和其它的存储设备中。当应用程序需要使用存储设备中的数据时,可以使用content provider来完成。使用content provider能够灵活的替换底层使用的存储设备,使开发者可以专注于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据。

2.4 本章小结

本章对Android平台的特征、架构以及Android应用的构成和工作机制进行了详

细的分析。对于Android应用程序来说,主要是由Activity、Intent Receiver、Service 和Content Provider四部分组成,但是并不是对于每一个应用程序,这四部分都是必须的。Activity是应用程序中最重要的一种构造块,我们对其进行了详细的分析,包括Activity的生命周期以及Activity之间的切换。[7]

第三章 平台环境介绍及构建

Android平台为开发者提供了源码开放的软件开发包(SDK),它包含了使用java

9

语言开发Android平台应用的必要工具和组件(API)。进行开发前先要建立合适的开发环境,其中基于java的整合型可扩展平台eclipse是们的首选。而开发基于google地图的应用和普通的Android应用差不多都要使用它提供给我们的类库,所不同的是Google Map的类库不是Android的基本类库,是Google API的一部分,要使用Google Map API前,必须先生成Google Map API key。

3.1 搭建环境所需要的软件

操作系统:windows 7 或windows xp 或Linux 软件包:Android SDK,ADT

IDE环境:eclipse IDE +ADT eclipse JDK:Java Runtime Environment,JDK

3.2 安装步骤

1.安装JDK,然后配置环境变量 2.安装eclipse

3.Android SDK配置/安装

在http://developer.android.com/sdk/index.html 下载SDK 4.安装Android ADT插件:

(1) 打开eclipse,在导航菜单中选择help—install new software。在work

with中输入dl-ssl.google.coom/android/eclipse/ADD然后输入name,随便去个有意义的,都选中安装,完毕后重启eclipse

(2) 在eclipse里配置路径,选择windows->preferences->android,选择

Android SDK的位置

3.3 获得Google Map API Key

(1) 找到你的debug.keystore文件

10

在eclipse工具下,选择windows->preferences->android->build,其中default debug keystore的值便是debug.keystore的路径了。 (2)取得debug.keystore的MD5值

首先cmd命令行进入debug.keystore文件所在的路径,执行命令:keytool

–list –keystore debug.keystore,这时可能会提示你输入密码,这里默认的密码是“android”,这里即可以取得MD5值。 (3)申请 Android Map 的API Key

打开浏览器,输入网址:code.google.com/android/map-api-signup.html,填

入你的认证指纹(MD5)即可获得API Key了。[8]

第四章 基于安卓的华师校园导航设计

11

4.1 设计需求

以下从功能需求,性能需求,安全需求等三个方面来分析此系统。

4.1.1 功能需求

校园导航系统是用于用户在华师校园时用随身携带的Android手机设备定位自己在华师的具体位置,并且能够定位到自己想要去的位置,以此来使对华师不熟的用户能够很快的在华师找到自己想去的地方。

本系统能够定位用户自己现在所在华师的位置,并且能够定位想要去的位置,给出路径。业务流程图如图4-1所示:

查找 主界面 主菜单 视图选项 查找模式 地图放大 图4-1 业务流程图 (1) 查找:定位自己所在的位置,并且查找自己想要去的位置,给出路径。 (2) 主菜单:给出三个选项(视图选项,查找模式,地图放大设置) (3) 视图选项:给出地图的三种模式:交通模式,街景模式,卫星模式 (4) 查找模式:有地址的查询和经纬度的查询 (5) 地图放大:让用户自己输入地图放大的倍数

4.1.2 性能需求

手机用户要有良好的用户体验,良好的用户体验体现于以下几个方面: (1) 界面友好

用户界面要简洁直观,设计合理,方面用户操作,让用户操作起来比较舒服,并且UI视觉效果好。

(2) 快速响应

快速处理用户的输入或者请求,对于需要长时间处理的部分,在其处理时可

12

以给用户一个提示,告知用户该软件正在运行。[9]

4.1.3 安全需求

Android安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序,操作系统或者用户的有害操作。这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没有给它权限的时候它不能干扰其他应用程序。

4.2 界面设计

由以上功能需求的分析得知,软件启动后初始化界面有几个按钮供我们选择,分别是“查找”和“主菜单”按钮。单击“查找”按钮,就会弹出一个文本框,供我们输入我们想去的地方。单击“主菜单”按钮,会有四个选项来攻我们选择,分别是“视图设置”,“放大设置”,“定位查找”,“路径导航”。点击“视图设置”,会弹出三种模式供我们选择,“交通模式”,“街景模式”,“卫星模式”;点击“放大设置”,会弹出文本框,让用户输入需要方法的倍数;点击“定位查找”,会弹出文本框,让用户输入查找的地方或者输入经纬度。 显示华师地图 显示华师地图 查 找 主菜单 视图设置 定位查找 放大设置 路径导航 图4-2 主界面 图4-3 导航菜单

交通模式 请输入经纬度值:

街景模式 13

图4-4 模式选择 图4-5 定位查找 卫星模式

第五章 Android平台校园导航系统实现

本系统是在windows 7下完成的,Android的版本是Android2.2,google API level为8,开发工具是eclipse,编程语言是java。在程序开发时要分模块进行相应的开发,这里我们分为两部分,分别是:界面设计和功能模块的实现。对于每个部分,本章将给出关键部分的详细设计思路及部分代码。

5.1 界面设计

以下从代码的角度来分析主界面的实现以及输入界面的实现。

5.1.1 主界面实现

Android的每一个可视化界面,都有其唯一的布局配置文件,该文件中有各种

14

布局的方式,和各种资源文件如图像,文字,颜色引用等,程序在运行时可以通过代码对各个配置文件进行读取,这样可以形成不同的可视化界面和绚丽的效果。[10] 本软件的主界面是一个Activity,Android每启动一个Activity时首先都会调用onCreate()方法,本软件的onCreate类为: @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.dflee_gps_layout); geoPoint = new Geocoder(this, Locale.CHINA);

posBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pos);

mv = (MapView) findViewById(R.id.mv); mapController = mv.getController(); mv.setBuiltInZoomControls(true); mv.setTraffic(true); mv.setSatellite(false); // mv.setStreetView(true);

menuBtn = (Button) findViewById(R.id.dflee_menu_btn);

searchBtn = (Button) findViewById(R.id.dflee_search_btn); xBtn = (Button) findViewById(R.id.dflee_x_btn); rl = (RelativeLayout) findViewById(R.id.rl); rl.setClickable(true);

anim = AnimationUtils.loadAnimation(this, R.anim.alpha); rl.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub // menuBtn.setVisibility(0); menuBtn.startAnimation(anim); searchBtn.startAnimation(anim); xBtn.startAnimation(anim); return false; }

}

该方法主要执行界面的初始化操作,Activity有个设置布局的方法:setContentView(int id),参数为资源ID,该id在工程目录res/layout下,主界面的布局文件为main下面是该布局文件:

15