基于android火车票查询系统毕业论文内容摘要:
一转变过程中的主力军。 随时随地可用,传感器丰富等相对传统桌面计算机的突出优点,为智能手机改变人们的工作与生活提供了各种可能。 智能手机将逐步发展成人们眼、耳、脑以及不存在感官的延伸,帮助人们获取、处理、存储与呈现信息,帮助人们作出决定,展现给人们美好的事物,引领人们更加智慧与舒适地生活。 移动平台是目前和将来相当一段时间应用部署的重要平台。 2020 年年初,苹果应用商店已经拥有了超过 53 万款应用,而 Google Play 所能提供的应用数目也已突破了 40 万大关,涵盖了游戏、效率、社交、购物、交通、体育、图书与工具书等等领域,渗入了生活的方方面面。 下载量上,仅以 Android 以例。 最高下载量已达 5 亿(谷歌地图),相当多的免费应用的下载量在十万级别以上,收费应用也在万级别以上(具体请参照 Google Play)。 一款受欢迎的应用的市场价值十分巨大,而且这一市场才刚刚起步。 Android 技术 背景 Android 是用于移动设备上的一个包含一操作系统,一系列中间件,以及部分关键应用软件栈。 Android SDK 网 站提供了在 Android 平台上使用 Java 编程语言开发应用程序所必须的工具和 API[4]。 Android 的特性 应用框架 ,实现了组合的重用与替换 Dalvik 虚拟机 ,专为移动设备优化 集成的浏览器 ,基于开源的 WebKit 引擎 优化的图形 ,由一个定制的 2D 图形库驱动, 3D 图形基于 OpenGL ES 规范(硬件加速可选) 媒体支持 ,支持常用音频、视频以及图像格式( MPEG4, , MP3, AAC, AMR, JPG, PNG, GIF) GSM 通话 (依赖硬件) 北京工业大学耿丹学院 大学毕业 论文 8 蓝牙, EDGE(增强型数据速率 GSM 演进技术), 3G,以及 WiFi(依赖硬件) 相机, GPS,指南针,加速计 (依赖硬件) 丰富的开发环境 ,包括一个设备模拟器,测试工具,内存和性能分析,以及用于Eclipse IDE 的一个插件 Android 架构 图 1 Android 架构图 Android 架构由上至下分四层,如图 1。 描述如下: 应用层 :包括由系统默认提供了桌面、联系人、通话、浏览器 等基础应用,以及由广大开发人员开发、可下载安装的拓展应用。 拓展应用访问下层应用框架层方面,和由厂商提供的基础应用一样,没有任何尊卑之别。 应用框架层 :应用开发基本的 API,提供包管理、通话管理、资源管理、位置管理、通知管理、 Activity 管理,窗口管理、内容提供设施、视力系统。 库 : 用 C/C++写成。 提供 SGL 底层 2D 绘图引擎,安全套接层,嵌入式标准 C库, OpenGL 3D 绘图, FreeType 字体,浏览器核心,用户空间显示管理,媒体框架,以及轻量级 SQLite 关系型数据库。 运行环境 :与 JRE 极其相似。 核心包包含了在 Java 开发中常用的类库如 IO、 Utility等; Dalvik 虚拟机类似 JVM,同样也是专为 Android 定制,针对手持设备,在存储、计算以及功耗等方面作了格外优化。 Linux 内核 : Android 整个操作系统基于 Linux 内核,内核提供显示、照相、闪北京工业大学耿丹学院 大学毕业 论文 9 存、软键盘、 WiFi、音频等驱动程序,提供对进程间通信机制 Binder 的驱动,提供电源管理服务。 Android 平台本地应用的开发 同 PC 上应用的部署模式一样, Android 应用 也可有纯本地应用, C/S 模式 和 B/S 模式。 此外, C/S 和 B/S 相 结合的模式 —— 本地应用利用 Web 控件显示 Web 页面,或 Web应用利用 Javascript 调用本地程序 —— 也 十分常见。 此外 ,具有数据同步功能的本地应用模式,在联系人、日历、电子邮件等核心应用中都有体现。 虚拟机之上的 Java 应用 Android 应用(至少是目前)是使用 Java 语言 开发的。 Java 代码被编译成字节码,再被编译成 .dex 可执行文件 , 以在 Dalvik 虚拟机上高效运行。 Android 应用由四大组件构成—— Activity, Service, Content Provider, 和 Broadcast receiver。 每个组件以类的形式存在。 类应该具有高度的内聚性;类与类之间应该具有极低的耦合性。 Activity 负责呈现用户界面并与用户交互; Service 运行在后台,负责处理耗时操作,或是为服务远程进程; Content Provider 负责管理可被共享的应用程序数据; Broadcast receiver 则能响应系统级的广播消息。 Android 系统设置独有的特点是,任何应用都能启用其他应用的组件,显式或隐式地。 一个 Activity 可以调用另一个 Activity 或 Service; Service 可在 Activity 结束之后关闭,或继续运行。 当系统启用某一应用的某一组件,该应用的进程就被启动(如果不是已经启动了的话),该组件所需的类就被初始化。 不同于其他的系统, Android 应用程序没有唯一的入口(比如就没有 main()函数) [6]。 Linux 之上的 C/C++本地代码 Android 应用由 Java 所写,运行在虚拟机上,在处理大量数值、矩阵运算时,效率比较低。 C、 C++则直接运行于硬件之上,能充分发挥硬件的性能。 此外,大量传统 与广泛使用 的底层库文件(包括图形 图像处理、数据库管理系统等)都是由 C/C++写成,它们向Android 平台的迁移应以怎样的方式进行呢。 下面介绍三种 方式 : JNI, JNA 和 JavaCPP。 1) JNI( Java Native Interface) JNI, Java 本地接口,是一个允许运行在 Java 虚拟机上的 Java 代码调用本地代码或被本地代码调用的应用编程框架。 本地代码即指用 C/C++或汇编写成的、依赖硬件和操作系统平台的程序或库。 它定义了可管理代码(用 Java 语言写成)与本地代码交互的方法。 它厂商中立,支持从动态链接库载入代码;虽然繁琐,但 常能获得可观的效率 [7]。 2) JNA( Java Native Access) JNA, Java 本地访问, 是 SUN 公司主导 研 发的,建立在经典的 JNI 的基础之上的一个 开源 框架。 它是也另一个访问本地代码的方法,大有取代 JNI 的趋势。 JNA 的设计就是为了提供一种自然的方式、以最少的工作量实现对本地代码的访问。 它不需要像 JNI北京工业大学耿丹学院 大学毕业 论文 10 中那样的 样板文件 或生成的粘合代码 [9]。 JNA堪比 Window 的 P/Invoke 和 Python的 ctype。 但是, Android 官方并没有集成 JNA。 据 Android 开源项目参与者 fadden 回答:第一是因为性能不如 JNI,在对性能要求高的应用中人们更倾向于使用 JNI;第二是因为使用Java 和公开的 API 来实现应用更有利用应用程序自身和 Android 的发展;第三是 JNA 遵循的是 LGPL 许可,将它放入 Android 官方发行会带来许可问题。 尽管如此 , Android 官方 仍然 会考虑在虚拟机中提供 挂钩 ,允许开发者将 JNA 库作为应用程序安装包的一部分,自行使用 [10]。 JNA 源代码可从 GitHub 获得 [11]。 3) JavaCPP JavaCPP 提供了在 Java 中高效访问 C++的方法,与某些 C/C++编译器与汇编语言交互的方式颇为类似。 在其底层,同样采用的是 JNI,因此所有的 Java 实现它都支持,包括Android。 与其他访问本地代码的途径(包括 SWIG, CableSwig, JNIGeneratorApp,JNIWrapper, Platform Invoke, GlueGen, JNIDirect, JNA, JniMarshall, JNative, J/Invoke,HawtJNI, BridJ 等 等)所明显不同的是,它高效而自然地支持 C++语言许多经常被认为有弊病的特性,包括操作符重载、模板类和模板函数、成员函数指针、回调函数、嵌套结构体定义、可变长参数、嵌套命名空间、包含任意循环的大数据结构、多继承、按值 /引用 /微量传递、匿名结构体、位域、异常、析构以及垃圾回收。 JavaCPP 项目的作者 samuel已经通过 JavaCPP,为 OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect,videoInput, 和 ARToolKitPlus 等图像库生成了完整的接口, 集成到了他的开源项目 JavaCV当中 [18]。 JavaCPP 底层实现最开始使用的是 JNA,后来又回到了 JNI[10]。 Android 平台数据的 存储与同步 嵌入式关系数据库管理系统 SQLite SQLite 是一个包含一个自包含、无服务、零配制、事务型的 SQL 数据库引擎的软件库。 它是世界上 最流行的数据库引擎之一。 并且, SQLite 的 源代码已经进入了公共域,可自由使用 [11]。 Android 提供了对 SQLite 数据库的完全支持。 你所创建的任何数据库都能被当前应用中的任何类按名 访问,当前应用之外的类则不行 [12]。 SQLite 3 中的数据类型 [14] 大部分数据库引擎(就我们所知,除 SQLite 之外的任何其他数据库引擎)使用着传统的静 态类型。 静 态类型下,一个值的数据类型由其容器 —— 该值所存储在的列 —— 所决定。 SQLite 使用一种更加泛化的动态类型系统。 在 SQLite 中,一个值的数据类型依赖于其值本身而非其 容器。 在其他静态类型数据库上能使用的 SQL 语言,在 SQLite 上同样能使用;在这一意义上讲, SQLite 的这一动态类型系统相对其他数据库的静态类型系统具有向后兼容的能力。 而且, SQLite 中的动态类型能让它完成传统类型数据库所不能完成的工作。 北京工业大学耿丹学院 大学毕业 论文 11 最后,值得注意的是, SQLite 对特殊的一列 ROWID 的处理。 它与在 Android 中对SQLite 的访问密切相关。 ROWID 和整型主码 SQLite 表的每一行都有一个 64 位有符号整数键,唯一地标识表中该一行。 该整数通常被称作“ rowid”。 rowid 的值可使用以下任意列名的任意大小写形式访问:“ rowid”“ oid”或“ _rowid_”。 如果一个表已经存在了一个用户定义的名叫“ rowid”“ oid”或“ _rowid_”的列,则使用这些名字时,访问的是用户定义的列;这一整型 rowid 行将不再能被检索到[15]。 SQLite 的每一张表都以一 棵 B 树的数据结构存储。 该树包含了对每一行的一个入口,入口地址是一个 整型主码 ( INTEGER PRIMARY KEY),或 rowid。 这意味着按 rowid 检索或排序记录速度极快。 搜索某一指定或在某一范围内的 rowid 的行,比相同情况下在其他主码或索引上搜索,要快一倍 [15]。 也正是这个原因, Android 中重要的 UI 组件 ListView 访问 SQLite 数据库所使用的适配器 CursorAdapter 对查询结果 Cursor 的列有一个特殊的要求:必须要有一 个名叫“ _id”的列 [16]。 在实现上, ListView 的一行(即一个 ListItem)对应 Cursor 的一行;据观察,Android 为该 ListItem分配了 id,其值正是“ _id”列的值。 可通过以下方法获得 ListView中的某一项的 id: 方法一: 单击列表项的回调函 void (ListView l, View v, int position, long id)的形参 中本身就有 id; 方法二: 长 按 列 表 项 , 引 起 上 下 文 菜 单 弹 出 的 回 调 函 数 boolean (MenuItem item)中,可以这样取得被长按列表项的 id: //获取弹出菜单的菜单信息;该菜单信息包含了适配器上下文信息,其中就包含了适配器为当前列表项绑定的( Cursor 的) id AdapterContextMenuInfo info=(AdapterContextMenuInfo) ()。 //当前列 表项的 id int id=。 此外,要获取当前列表项中子 View 的值,也有快捷的方法: //当前列表项在适配器上的位置 int position=。 //获取适配器为当前列表项绑定的 Cursor(或一行记录) Cursor cursor = (Cursor) getListAdapter().getItem(position)。 //反过来获取 Cursor 中的列“ _id”的值,与 对比 String _id = ((_id))。 (TAG, _id at position + position + , id + id +。基于android火车票查询系统毕业论文
相关推荐
tomcat2 实例配置 =localhost =9009 =ajp13 6) 最后来更新一下 tomcat 网站目录 : 打开 tomcat 目录中的 conf\ 文件,找到 host name 一段,在后面添加: Context path= docBase=d:\web debug=0 reloadable=true crossContext=true/ 注:
入了定时器元件—— “Gaussian Random timer”。 执行该操作之后,客户端的请求的分布更加混乱,将会以随机方式而不是以相等的时间间隔来点击服务器。 我们将 Gaussian随机时间设置为偏离100ms,恒定延迟偏移量为 300ms. 运行负载测试 用户可以通过单击 Ctrl+R运行负载测试,或者从菜单中选择 Run并单击 Start运行负载测试。 单击图形元件
5 的电源电压范围为 4V~ 30V。 电源电压可在 4V~6V范围变化,电流变化 1mA,相当于温度变化 1K。 AD590 可以承受 44V 正向电压和 20V反向电压,因而器件反接也不会损坏。 使用可靠。 它只需直流电源就能工作,而且,无需进行线性校正,所以使用也非常方便,接口 也很简单。 作为电流输出型传感器的一个特点是,和电压输出型相比,它有很强的抗外界干扰能力。 AD590
功能 闹铃文件 维护闹铃 闹铃接收 闹铃 基本日历 基本日历界面 日历界面适配器 桌面闹钟主要界面 维护数字时钟 布局按钮 HandleSetAlarm,java 设置 alarm 到 activity 数字帮组 重复 设置闹铃 设置闹铃页面 功能设置 Android的资源文件保存在 /res的子目录中。 其中 /res/drawable目录中保存的事图像文件,/res/layout
如果有外设产生一个中断请求信号, IRQ 中断相应的位会被置位,否则会被清 0。 IRQEN 中断使能寄存器 当某一位置 1 时,相应的中断源可以请求中断,相反,相应的中断源没有被使能。 IRQCLR 中断屏蔽寄存器 可以用来清空在 IRQEN 寄存器中相应的位,当某一位置 1 有效。 要想取消一个已经使能的中断源,用户必须通过 IRQCLR 对应的位置 1 来实现。 单独清空 IRQEN
表 单片机 管脚含义 ALE/PROG 地址锁存控制信号: 在访问片外程序存储器的时候,每机器周期这个信号出现两次,它的下降沿用来控制锁存 P0口输出的低 8位地址。 就算不在访问片外程序存储器的时候,这个信号也以振荡频率的 1/6 出现,因此可以用来作为对外输出的时钟脉冲。 但是在访问片外数据存储器的时候, ALE 脉冲会跳空一个,那此时作为时钟输出就不合适了。 /PSEN