1、本 科 毕 业 论 文( 20 届 )校 园 导 航 系 统 的 设 计 与 实 现所 在 学 院 专 业 班 级 计 算 机 科 学 与 技 术 学 生 姓 名 学 号 指 导 教 师 职 称 完 成 日 期 年 月 毕 业 设 计 说 明 书 ( 论 文 ) 中 文 摘 要Android 是 目 前 使 用 人 数 最 多 的 手 机 操 作 系 统 之 一 ,它 具 有 良 好 的 开 源性 ,具 有 良 好 的 用 户 体 验 .这 些 特 点 使 得 Android 操 作 系 统 一 经 推 出 ,就 迅 速遭 到 人 们 的 热 捧 ,同 时 也 也 涌 现 出 一 大 批 优
2、秀 的 应 用 和 应 用 开 发 者 。校 园 导 航 系 统 使 用 Java 语 言 开 发 , 运 行 在 Android 平 台 上 , 将 用 户 的焦 点 集 中 到 校 园 , 更 具 针 对 性 , 能 够 更 好 的 满 足 校 园 生 活 的 需 求 。 系 统 的主 要 功 能 有 校 园 导 航 ,周 边 导 航 ,手 机 找 回 等 主 要 功 能 ,校 园 导 航 功 能 可 以 实现 校 园 主 要 建 筑 物 的 导 航 ,周 边 导 航 功 能 提 供 了 周 边 区 域 的 导 航 ,手 机 找 回功 能 大 大 提 高 用 户 找 回 手 机 的 概 率
3、 。 本 文 重 点 介 绍 了 校 园 东 航 系 统 设 计 的 思路 和 相 关 的 开 发 技 术 , 并 阐 释 了 各 功 能 模 块 的 实 现 方 法 与 关 键 技 术 。关键词 Android; 校 园 导 航 ; 百 度 地 图 API毕 业 设 计 说 明 书 ( 论 文 ) 英 文 摘 要Title The Campus Navigation System DesignAbstractAndroid is currently one of the largest number of users of mobile phoneoperating system,It ha
4、s good openness, good user experience.These features make the Android operating system by the introduction of a rapidly by the heat of people holding, at the same time also emerged a large number of excellent application and application developers.Campus navigation system is developed in the Java pr
5、ogramming language, running on the Android platform, the users focus on the campus, more targeted, can better meet the needs of the campus life demand.Campus navigation systems main function and circumjacent navigation, such as mobile phones to retrieve the main function and the function of the camp
6、us navigation can achieve is the main building of the campus navigation, circumjacent navigation function provides the navigation of the surrounding area, mobile phone to retrieve function greatly improve the user to retrieve the phone probabilities.This paper introduces the campus Eastern system de
7、sign ideas and development technology, and explains how each function module realization method and key technology.Key words Android, Campus navigation 目 录前 言 .1第 一 章 技 术 概 述 .21.1 ANDROID 概 述 .21.2 百 度 地 图 API 概 述 .51.3 SHAREDPREFERENCES 概 述 .6第 二 章 软 件 需 求 分 析 .62.1 需 求 分 析 .62.2 系 统 功 能 模 块 图 .7第
8、 三 章 系 统 主 要 模 块 简 介 .83.1 校 园 导 航 模 块 .83.2 周 边 导 航 模 块 .83.3 手 机 找 回 模 块 .83.4 数 据 实 体 类 的 设 计 .8第 四 章 系 统 设 计 .94.1 整 体 框 架 搭 建 .94.2 SPLASH 界 面 .94.2 百 度 地 图 API 相 关 .114.3 校 园 导 航 功 能 .144.4 周 边 导 航 功 能 .234.5 手 机 找 回 功 能 .264.6 系 统 其 它 功 能 .30结 束 语 .32参 考 文 献 .33致 谢 .34附 录 : 英 文 技 术 资 料 翻 译 .3
9、51前 言目 前 , 随 着 信 息 化 时 代 的 到 来 ,人 们 对 手 机 的 依 赖 越 来 越 强 ,特 别 是 大 学生 这 一 群 体 。 手 机 日 益 成 为 人 们 生 活 与 工 作 中 不 可 缺 失 的 一 块 。 与 此 同 时 ,大学 的 校 园 通 常 具 有 面 积 大 , 建 筑 多 , 建 筑 布 局 分 散 的 特 点 , 这 一 特 点 给 校 园 内每 一 位 同 学 尤 其 是 大 一 新 生 与 家 长 造 成 的 诸 多 不 必 要 的 麻 烦 。 因 此 , 开 发 一 款针 对 校 园 的 导 航 系 统 就 显 得 弥 足 重 要 了
10、。 同 时 , 为 了 满 足 同 学 们 对 校 园 生 活 的要 求 , 校 园 周 边 的 导 航 的 重 要 性 越 发 凸 显 出 来 。目 前 的 很 多 导 航 提 供 商 如 百 度 、 高 德 等 ,以 大 范 围 导 航 为 首 要 目 的 , 缺 少了 对 校 园 这 种 广 而 杂 的 地 区 的 细 致 导 航 。 本 系 统 作 为 一 个 独 特 的 针 对 校 园 的 导航 系 统 ,意 在 为 同 学 们 提 供 一 个 专 为 本 校 园 定 制 的 校 园 导 航 系 统 。南 京 工 程 学 院 毕 业 设 计 说 明 书 ( 论 文 ) 2第 一 章
11、技 术 概 述系 统 主 要 用 到 的 技 术 有 Android, 百 度 地 图 API, 使 用SharedPreferences 来 存 储 数 据 。 以 下 主 要 介 绍 这 几 种 技 术 。1.1 Android 概 述1.1.1 Android 的系统架构Android 是 一 种 基 于 Linux 操 作 系 统 的 自 由 开 源 的 操 作 系 统 , 主 要 应 用 于手 机 ,平 板 等 移 动 终 端 。 Android OS 的 系 统 架 构 和 其 他 操 作 系 统 的 的 架 构 一 样 ,都是 采 用 了 分 层 架 构 。 Android 的
12、系 统 架 构 分 为 四 层 ,从 高 层 到 底 层 分 别 为 应 用程 序 层 ,应 用 程 序 框 架 层 ,系 统 运 行 库 和 Linux 内 核 层1) 应 用 程 序 层Android 会 同 一 系 列 核 心 应 用 程 序 包 一 起 发 布 ,该 应 用 程 序 包 包 括 客 户 端程 序 ,SMS 短 消 息 程 序 ,联 系 人 管 理 程 序 ,地 图 ,日 历 ,浏 览 器 等 。 所 有 的 应 用 程序 全 都 是 使 用 Java 语 言 编 写 的 .2) 应 用 程 序 框 架 层开 发 人 员 可 以 访 问 所 有 核 心 应 用 程 序 所
13、 使 用 的 API 框 架 。 应 用 程 序 框 架 层大 大 简 化 了 组 件 的 重 用 ,任 何 一 个 应 用 程 序 都 可 以 发 布 它 自 身 的 功 能 模 块 ,且任 何 其 他 应 用 程 序 都 可 以 使 用 其 所 发 布 的 功 能 模 块 ,同 样 的 ,该 应 用 程 序 重 用机 制 也 使 得 用 户 可 以 方 便 的 替 换 应 用 程 序 组 件 。3) 系 统 运 行 库Android 系 统 包 含 一 些 C/C+库 ,这 些 库 能 被 Android 系 统 中 不 同 的 组 件 所使 用 。 他 们 通 过 Android 应 用
14、 程 序 框 架 层 为 开 发 者 们 提 供 服 务 。4) Linux 内 核 层Android 系 统 是 基 于 Linux 内 核 的 ,其 核 心 系 统 服 务 如 内 存 管 理 ,网 络 协 议 ,安全 性 以 及 驱 动 等 都 依 赖 于 Linux 内 核 。南 京 工 程 学 院 毕 业 设 计 说 明 书 ( 论 文 ) 3图 1.1 Android 的系统架构1.1.2 Android 的四大组件Android 中 有 四 大 组 件 ,分 别 是 Activity 活 动 ,Service 服 务 ,ContentProvider 内 容 提 供 者 以 及
15、BroadcastReceiver 广 播 接 受 者 。1Activity一 个 Activity 通 常 就 是 一 个 单 独 的 屏 幕 ,Activity 之 间 使 用 Intent 进行 通 信 ,Intent 是 四 大 组 件 通 信 的 枢 纽 ,Android 应 用 中 的 每 一 个 Activity 都必 须 要 在 AndroidManifest.xml 配 置 文 件 中 进 行 声 明 ,否 则 系 统 将 不 识 别 也 不会 执 行 该 Activity。 Activity 具 有 四 种 启 动 模 式 。Standard: 为 默 认 操 作 模 式
16、,每 次 激 活 Activity 的 时 候 都 会 创 建Activity,并 将 其 放 入 任 务 栈 中 。singleTop: 如 果 在 任 务 的 栈 顶 正 好 存 在 该 Activity 的 实 例 ,就 重 用 该 实南 京 工 程 学 院 毕 业 设 计 说 明 书 ( 论 文 ) 4例 ,否 则 就 会 创 建 新 的 实 例 并 放 入 到 栈 顶 (即 使 栈 顶 中 已 经 存 在 该 Activity 实例 ,只 要 不 在 栈 顶 ,都 会 创 建 实 例 )。singleTask: 如 果 在 栈 中 已 经 有 该 Activity 的 实 例 ,就
17、重 用 该 实 例 (会 调用 实 例 的 onNewIntent()。 重 用 时 ,会 让 该 实 例 重 新 回 到 栈 顶 ,因 此 在 它 上 面的 实 例 将 会 被 移 出 栈 外 ,如 果 栈 中 不 存 在 该 实 例 ,将 会 创 建 新 的 实 例 放 入 栈 中 。singleInstance: 在 一 个 新 栈 中 创 建 该 Activity 的 实 例 , 并 让 多 个 应 用程 序 共 享 栈 中 的 该 Activity 实 例 。 一 旦 更 改 模 式 的 Activity 的 实 例 存 在 于某 个 栈 中 , 任 何 应 用 在 激 活 该 Ac
18、tivity 的 时 候 , 都 会 重 用 该 栈 中 的 实 例 , 其效 果 相 当 于 多 个 应 用 程 序 共 享 一 个 应 用 程 序 , 不 管 是 那 个 应 用 程 序 激 活 的 该Activity 都 会 进 入 同 一 个 应 用 程 序 中 。 ServiceService 用 于 在 后 台 完 成 用 户 指 定 的 操 作 ,不 与 用 户 进 行 交 互 。 Service有 两 种 启 动 模 式 ,一 种 是 startService(),另 一 种 是 bindService(),两 者 具 有以 下 区 别 : 当 服 务 使 用 startSer
19、vice()启 动 起 来 的 ,Service 的 状 态 为start,这 个 服 务 的 生 命 周 期 就 与 调 用 它 的 应 用 程 序 无 关 ,并 且 可 以 再 后 台 无 限期 的 运 行 ,即 使 调 用 它 的 组 件 已 经 被 销 毁 。 因 此 ,服 务 需 要 在 完 成 任 务 后 调 用stopService()方 法 进 行 停 止 ,或 者 由 其 他 组 件 调 用 stopService()方 法 进 行停 止 。 当 服 务 使 用 onbindService()启 动 的 时 候 ,调 用 者 就 与 服 务 绑 定 在 一起 了 ,调 用 者
20、 一 旦 退 出 ,服 务 也 就 被 终 止 ,服 务 的 生 命 周 期 调 用 者 的 生 命 周 期 相同 。 服 务 也 都 必 须 要 在 AndroidManifest.xml 配 置 文 件 中 进 行 声 明 ,否 则 服 务讲 不 起 效 果 。 ContentProviderAndroid 平 台 提 供 了 ContentProvider 使 应 用 程 序 的 指 定 数 据 能 够 提 供 给其 他 应 用 程 序 。 其 他 的 应 用 程 序 可 以 通 过 ContentResolver 类 从 该 内 容 提 供器 中 存 入 或 获 取 数 据 。 只 有
21、 需 要 在 多 个 应 用 程 序 间 共 享 数 据 的 时 候 才 需 要 内 容提 供 者 ,使 用 这 种 方 式 可 以 统 一 数 据 的 访 问 方 式 。 ContentProvider 实 现 了 数据 的 共 享 ,ContentProvider 用 于 保 存 和 获 取 数 据 ,并 使 该 应 用 程 序 的 数 据 对 所有 应 用 程 序 可 见 。 这 是 不 同 应 用 程 序 间 共 享 数 据 的 唯 一 方 式 ,因 为 Android 没有 提 供 所 有 应 用 程 序 共 同 访 问 的 公 共 数 据 存 储 区 。南 京 工 程 学 院 毕
22、业 设 计 说 明 书 ( 论 文 ) 5 BroadcastReceiver应 用 程 序 可 以 对 外 部 事 件 进 行 过 滤 以 及 相 应 ,也 可 以 对 指 定 的 外 部 事 件 进行 接 收 并 作 出 响 应 。 广 播 接 收 者 没 有 用 户 界 面 ,但 是 它 可 以 启 动 一 个activity 或 service 来 响 应 他 们 收 到 的 信 息 ,或 者 使 用 NotificationManager来 通 知 用 户 。 广 播 接 收 者 的 注 册 有 两 种 方 法 ,分 别 是 程 序 动 态 注 册 和AndroidManifest.
23、xml 清 单 文 件 中 进 行 静 态 注 册 。 动 态 注 册 广 播 接 收 者 的 特 点是 当 用 来 注 册 的 Activity 关 闭 后 ,注 册 的 广 播 也 就 失 效 了 。 使 用 静 态 注 册 方 式无 需 担 忧 广 播 接 收 者 是 否 被 关 闭 ,只 要 设 备 是 开 机 状 态 ,广 播 接 收 者 也 是 打 开着 的 。1.2 百 度 地 图 API 概 述百 度 地 图 API 是 一 套 专 为 开 发 者 们 免 费 提 供 的 基 于 百 度 地 图 的 应 用 程 序接 口 ,包 括 Web 服 务 ,静 态 地 图 ,Andro
24、id,IOS,JavaScript 等 多 种 版 本 ,提 供 了包 括 定 位 服 务 ,基 础 地 图 ,导 航 服 务 ,周 边 检 索 ,全 景 地 图 ,路 线 规 划 等 功 能 ,适用 于 移 动 端 ,PC 端 ,服 务 器 等 多 种 设 备 ,多 种 操 作 系 统 下 的 地 图 应 用 开 发 。通 过 使 用 这 一 套 API,开 发 者 能 够 轻 松 的 为 应 用 程 序 实 现 精 确 高 效 的 地 图 相关 服 务 ,百 度 地 图 API 免 费 开 放 ,接 口 使 用 无 次 数 限 制 。 在 使 用 前 ,需 要 在 百 度地 图 API 官
25、 网 上 申 请 密 钥 之 后 才 能 使 用 。1.3 SharedPreferences 概 述SharedPreferences 是 Android 平 台 上 的 一 种 轻 量 级 存 储 类 ,它 常 常 用 来保 存 应 用 程 序 的 一 些 配 置 信 息 ,比 如 Activity 暂 停 的 时 候 ,将 此 Activity 的状 态 保 存 到 SharedPreferences 中 ;当 Activity 重 载 时 ,系 统 回 调 方 法onSaveInstanceState 时 ,再 将 保 存 的 数 据 从 SharedPreferences 中 取 出
26、SharedPreferences 提 供 了 Java 常 规 的 String,int,long 等 类 型 的 数 据的 保 存 接 口 。SharedPreferences 最 终 是 以 xml 方 式 来 保 存 ,xml 文 件 处 理 时 会 通 过 底 层自 带 的 本 地 XML Parser 解 析 ,比 如 XMLpull 解 析 的 方 式 ,这 样 对 于 内 存 资 源 的占 用 会 比 较 优 化 。南 京 工 程 学 院 毕 业 设 计 说 明 书 ( 论 文 ) 6SharedPreferences 保 存 的 数 据 具 有 四 种 操 作 模 式 :MO
27、DE_PRIVATE:为 默 认 操 作 模 式 ,代 表 该 文 件 是 私 有 数 据 ,只 能 被 应 用 本 身所 访 问 ,在 该 模 式 下 ,写 入 的 内 容 会 覆 盖 原 文 件 的 内 容MODE_APPEND:这 种 模 式 会 检 查 xml 文 件 是 否 存 在 ,存 在 就 往 文 件 追 加 内 容 ,否则 就 创 建 新 的 xml 文 件 .MODE_WORLD_READABLE:表 示 当 前 文 件 可 以 被 其 他 应 用 程 序 所 读 取 .MODE_WORLD_WRITEABLE:表 示 当 前 文 件 可 以 被 其 他 应 用 程 序 所 写 入