android资源管理器——实训报告_第1页
android资源管理器——实训报告_第2页
android资源管理器——实训报告_第3页
android资源管理器——实训报告_第4页
android资源管理器——实训报告_第5页
免费预览已结束,剩余47页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

I 软软软软 件件件件 学学学学 院院院院 毕业实训报告毕业实训报告 课题名称:课题名称: androidandroid 资源管理器资源管理器 专专 业:业: 软件设计(游戏开发方向) 班班 级:级: 学学 号:号: 学生姓名:学生姓名: 指导教师:指导教师: 年年 月月 日日 II 摘 要 相信大家对 Android 的发展历史多少都有一些了解,Android 曾经是一家创立于旧金 山的公司的名字,该公司于 2005 年 8 月份被 Google 收购,并从此踏上了飞速发展的道路。 经过这几年的发展,它已经发展成了一个平台、一个生态体系。现在 Android 在移动领域 已经得到了广泛的应用。根据 Google 于 2011 年 6 月份公布的数字,现在每天激活的 Android 设备高达 50 万台,比 5 月份的数据增加了 10 万台,Google 还透露目前已经与 36 家 OEM 厂商和 215 家运营商合作共激活了超过 1 亿台 Android 设备。 本文的软件开发环境采用了 Eclipse3.4 + Android SDK 集成环境,编程语言采用了 Java。 关键词: Activity; Fragment;Service 目 录 摘摘 要要II 第第 1 章章 项目分析项目分析.1 1.1 问题描述.1 1.2 技术分析.1 1.2.1 Android 四大组件1 1.2.2 用户界面.2 1.2.3 Activity .3 1.2.4 Fragment.4 1.2.5 SQLite 数据库5 1.3 工程进度计划.6 第第 2 章章 系统需求分析系统需求分析.7 2.1 系统功能需求分析.7 2.1.1 文件系统的浏览.7 2.1.2 文件及文件夹得操作.9 2.1.3 文件系统安全管理.10 2.2 系统开发需求.10 2.2.1Android 资源管理器的开发平台.11 2.2.2Android 开发框架.11 2.3 操作系统及所需软件需求.15 2.3.1 Android 开发环境及变量配置16 2.3.2 安装配置 JDK6.16 2.3.3 安装配置 SDK 18 2.3.4 Eclipse 的设置18 2.3.5 Android 版本配置18 2.4 系统非功能性需求.18 第第 3 章章 系统总体设计系统总体设计.19 3.1 基本框架与布局.19 3.1.1 主界面 ListView 的实现19 3.1.2 ListView 监听事件25 3.2 帮助与提示.27 3.2.1 帮助与提示的原理与实现27 3.2.2 文件的读取29 3.2.3 帮助与提示功能实现时遇到的问题及解决.30 3.3 文件打开的实现.31 3.3.1 判断文件类型,分析打开方式31 3.3.2 文件夹的打开31 3.3.3 非文件夹类型文件的打开33 3.3.4 效果图示例示例:38 3.3.5 在此功能实现过程中遇到的问题示例:38 3.4 文件的复制,粘贴39 3.4.2 此功能中遇到的问题44 第第 4 章章 结束语结束语.45 姓名:论文题目 1 第 1 章 项目分析 基于 Android 手机的日益蓬勃发展,各种技术断更新,智能机的大众化走向,越来越 多的繁琐的文件出现在我们的手机上。因此,我们想要做一个 Android 资源管理系统来处 理手机上的文件,让用户更好的使用手机。 1.1 问题描述 1.文件的各种操作功能的实现所遇到的问题 (1)文件(文件夹)的复制与粘贴(涉及 IO 流的操作)实现不了。 (2)文件(文件夹)的新建功能,目录的新建一直有问题,不能达到预期的目标。 (3)文件(文件夹)的搜索功能,关于搜索我们一直想实现搜索提示但是没有实现。 (4)各种功能的使用,权限不够问题、对文件夹进行操作时,会弹出警告信号,甚 至退出程序。 (5)文件夹的复制于文件的复制问题,只能实现文件的操作,不能对文件夹进行操 作 课题的研究总是伴随着问题的出现,问题总是要解决的,我们首先自己多多的实验 自己的想法,通过各种发放解决出现的问题,多方查阅资料,观看视频,并咨询指导老 师,从而解决出现的问题。 1.2 技术分析 一句话概括 Android 应用:基于 Android 系统的软件开发,语言基础是 java 语言,通 过控件的设置以及方法调用,实现一系列的功能,目前,Android 系统的手机十分的火爆, 因此我们准备做一个基于 Android 手机的资源管理器。 1.2.1 Android 四大组件 Android 系统有四个重要的组件,分别是 Activity、ServiceBroadcastReceiver 和 ContentProvider。 Activity 是 Android 程序的曾宪曾,显示可视化的用户界面,并接受与用户交互所产 生的界面事件,与窗体的概念非常相似。Android 一般启动程序后会呈现一个 Activity, 用于提示用户程序已经正常启动。Activity 在界面的表现形式一般是全屏窗体,也可以是 非全屏悬浮窗体或对话框。 姓名:论文题目 2 Service 一般用于没有用户界面,但是需要长时间在后台运行的应用。例如,在播放 MP3 音乐时,使用 Service 播放 MP3 音乐,可以在关闭播放器界面的情况下长时间的播 放 MP3 音乐,并通过对外公开 service 的通信接口,控制 MP3 音乐的播放启动、暂停和 停止。 BroadcastReceiver 是用来接收并响应广播消息的组件。大部分广播消息是由系统产生 的,例如失去改变、电量低或者语言选项改变等,但应用程序也可以产生广播消息,例 如数据下载完毕等。BroadcastReceiver 不包含任何用户界面,但是可以通过启动 Activity 或者 Notification 通知用户接受到重要的消息。Notification 能够通过多种方法提示用户, 包括闪动背景灯、震动设备、发出声音或在状态栏上防止一个持久的图标等。 ContentProvider 是 Android 系统提供的一种标准的数据共享机制,应用程序可以通过 ContentProvider 访问其他的应用程序的私有数据。私有数据可以是存储在文件系统中的文 件,也可以是 SQLite 数据库中的数据。Android 系统内部也提供一些内置的 ContentProvider,能够用为应用程序提供重要的数据信息,例如联系人的信息和通话记录 等。 1.2.2 用户界面 Android 系统的界面空间分为定制控件。定制空间是用户独立开发的空间,或者通过 继承并修改系统空间后所产生的新空间,能够提供特殊的功能和显示需求。系统控件是 Android 系统中已经封装好的界面控件,而在代码中动态修改需要更新状态的界面元素。 当然,用户也可以将所有的界面元素,无论在程序运行后是否需要修改其内容,都放在 代码中进行定义和声明。很明显这不是一种良好的界面设计模式,会给后期界面修改带 来不必要的麻烦,是应用程序开发过程中最常见的功能控件。系统控件更有利于进行快 速开发,同事能够使 Android 应用程序的界面保持一定的一致性。 常见的系统控件包括 TextView、EditView、Button、ImageButton、CheckButton、Spinner、ListView 和 Tablehost。 界面布局(layout)是用户界面结构的描述,定义界面中所有的元素、结构和相互关 系。一般生命 Android 程序的界面布局有两种方法,第一种是使用 XML 文件描述界面的 布局,另一种是在程序运行时动态添加或修改界面布局。 Android 系统在生命界面布局上提供了很好的灵活性,用户既可以独立使用任何一种 声明布局的方式,也可以同时使用两种方式。一般情况下,使用 XML 文件来描述用户界 姓名:论文题目 3 的基本元素,而在代码中动态修改需要更新状态的界面元素。当然,用户也可以将所有 的界面元素,无论在程序运行后是否需要修改其内容,都放在代码中进行定义和声明。 很明显这不是一种良好的界面设计模式,会给后期界面修改带来不必要的麻烦,而且界 面较多时,程序代码也会显示凌乱不堪。 使用 XML 文件声明界面布局,能够更多地将程序的表现层和控制层分离,在修改界 面时将不再需要更改程序的源代码。 界面布局的种类: (1).线性布局:线性布局(LinearLayout)是一种重要的界面布局,也是经常使用的界面 布局。在线性布局中,所有子元素都在垂直或水平方向按照顺序在界面上排序。 (2).框架布局: 框架布局(FrameLayout)是最简单的界面布局,用来存放一个元素 的空白控件,且子元素的位置不能够制定的,只能够放置在空白空间的左上角。 (3) .表格布局:(TableLayout)也是一种常用的界面布局,它将屏幕划分为表格, 通过制定行和列可以将界面元素添加到表格中。 (4).相对布局:(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面 元素与其他元素的相对位置关系,确定界面中所有元素的布局为止。 (5).绝对布局:(AbsoluteLayout)能通过指定界面元素的坐标文职,来确定用户 界面的整体布局。 1.2.3 Activity Android 中的一个 Activity 就是一个界面,比如说手机拨号界面,通讯录界面等都是 活动,在应用程序中,可以有一个或多个活动,但是如果新建一个活动,必须要在 AndroidMainfest.xml 中声明。 创建一个 Activity 需要注意的要点: 一个 Activity 就是一个类,并且这个类要继承 Activity; 需要复写 oncreate()方法 每一个 Activity 都是需要在 android Mainfest.Xml 文件中进行配置 为 Activity 添加必要的控件 Activity 的生命周期 在 Android 开发中,Activity 是非常重要的。Activity 主要负责创建和显示窗口,也可 以把一个 Activity 理解成一个显示的屏幕;在 Android 的应用中不是仅有一个 Activity, 而是由很多个 Activity 存在。因其重要性,开发 Android 务必熟悉 Activity 生命周期,参 姓名:论文题目 4 照图 1.1。 onCreateView:Activity 初次创建时被调用,一般在这里创建 view,初始化布局信息, 将数据绑定到 list 以及设置监听器等。如果 Activity 首次创建,本方法将会调用 onStart() ;如果是停止后重新显示,则将调用 onRestart() 。 onStart:当 Activity 对用户即将课件的时候被调用 onResume() 。 onRestart:当 Activity 停止后重新显示的时候被调用,然后调用 onStart() 。 onPause:当系统要启动一个其他的 Activity 时调用(其他的 Activity 显示之前) ,这 个方法使用来停止动画和其他占用 CPU 资源的事情,所以这这里应该保存那些持久数据, 这些数据可以在 onResume()方法中读出。 onStop:当另一个 Activity 恢复并遮盖住当前 Activity,导致其对用户不再可见时调 用,一个新的 Activity 启动,其他 Activity 重新回到前景与用户交互时会重新调用 onResume() ,如果 Activity 将退出则调用哦你 D 额 story() 。 onDestory:在当前 Activity 被销毁之前所调用的最后一个方法,当进程 终止前调用。 1.2.4 Fragment Fragment 的主要目的在大屏幕设备上实现灵活的、动态的界面设计。例如,在 Android 的平板电脑上,因为屏幕有更多的空间来配置更多的组件,并且这些组件之间还 会产生一定的数据交互。 Fragment 支持这种设计理论,开发人员不需要管理复杂的试图结构变化,而且把这 些动态的管理交给 Fragment 和回退堆栈(back stack)完成,在进行界面设计时,只需要 将界面布局按照功能和取于划分为不同的模块,每个模块设计成一个 Fragment 即可。 Fragment 具有和 Activity 类似的生命周期,但是比 Activity 支持更多的事件回调函数。 活动状态停止状态非活动状态 暂停状态 图:1.1 生命周期 姓名:论文题目 5 Fragment 生命周期中回调函数,以及之间的调用顺序可参照图 1.2。 通过回退堆栈 创建 Fragment 销毁 Fragment onAttach() onDetach() onCreate() onStart() onDestroyView( ) onActivityCreateView() onDistroyView() onStop() onResume() onPause() Fragment 处于活动状态 onCreateView() 姓名:论文题目 6 1.2.5 SQLite 数据库 SQLite 是一个 2000 年 D.Richard Hipp 发布的开源嵌入式关系数据库。自从出现商业 应用程序依赖,数据库就一直是应用程序的主要组成部分,数据库的管理系统也比较庞 大和复杂,且会占用较多的系统资源。随着嵌入式的应用程序大量的出现。一种新型的 轻量级数据库 SQLite 也随之产生。SQLite 数据库比传统的数据库更加适合用于嵌入式系 统,因为它占用资源少,运行高效可靠,可移植性强,并且提供了零配置运行模式。 1.3 工程进度计划 表 1.1 工程进度计划 项目进度的时间计划项目进度的具体内容 2013-04-25 至 2013-05-04 选择项目题目,了解需求,分析研究课题的具体工程计 划,具体的分工,以及时间的安排,资料的查找,资源的收 集。 2013-05-05 至 2013-05-15 代码的构想,分析设计,问题的发现与解决功能代码的实现, 测试,应用的初步美工 25 号 05-16 至 2013-05-24应用的美工,功能的完善,代码的优化,课题报告的整理 图 1.2 状态图 姓名:论文题目 7 第 2 章 系统需求分析 类似于 PC 中的资源管理器,手机文件管理器主要就是要起到手机文件系统与用户之 间沟通的桥梁作用,正确的反映文件系统的信息并为用户方便高效地对系统文件的操作 管理提供支持。应用的研究目标为针对手机应用开发的特点。研究并设计一款满足手机 用户文件系统浏览、文件操作管理、文件删除、文件粘贴、文件复制等需求的手机应用 软件,实现内容包括系统的界面设计,与用户之间的交互,内部的操作流程,各个模块 之间的协同处理等,并最终成功运行于 Android 操作系统上。 2.1 系统功能需求分析 从用户的使用角度出发,文件管理器的功能包括五个部分:文件浏览、文件操作管 理、文件删除、文件粘贴、文件复制。 2.1.1 文件系统的浏览 文件管理器启动后,将在主界面上显示应用主目录信息所知路径下的内容,用户也 可以随后在使用过程中对主目录信息进行修改和保存。用户可以执行目录的跳转操作, 如选择进入当前目录的某一子目录下,或者跳转到当前目录的父目录中,也可以在任意 目录下直接快速的跳转到系统指定的主目录下。 目录跳转的过程中要事先对路径的有效性和用户的权限进行判断。能够正确判断当 前显示的路径或要跳转到的路径在文件系统的状态,动态监测因文件创建、删除、SD 卡 的插入、移除等原因而导致的路径变化情况并对界面进行及时的刷新。非管理员用户不 能浏览系统关键路径下的内容。以免用户的误操作对系统文件造成破坏。从而导致手机 的不能使用。 用户可以设定在目录跳转的过程中是否对历史路径进行保存,如果选择保存,则在 浏览的过程中按返回键后应用将跳转到前一个界面且可见位置与跳转前保存一致,以此 类推,知道返回至刚进入应用的目录界面状态后退出;如果选择不保存,则在浏览的过 程中按返回键直接推出。 姓名:论文题目 8 另外,作为直接与用户进行交互的主界面,其形式标准也要进行相互的规范。出于 方便直观的考虑,主界面采用列表的形式,每一个界面代表文件系统中一个文件夹下内 容,列表的每一行代表文件夹下的一个目录项。对于文件夹,出于现实反应速度考虑。 以免用户的误操作对系统文件造成破坏。 每一行所显示的信息只包括文件夹图标、文件夹名称等。对于文件,显示的信息包 括文件类型图形、文件名称、文件的大小和修改时间等,对应于不同类型的文件,需要 有不同的图标与只对应。在一般情况下每一行的左端还是需要一个触发按钮以供用户对 该文件方便的选取和应用。如图 2.2 所示 是 否 启动系统 显示主界面 是否是根目 录文件 打开文件 打开文件夹 退出文件应用 姓名:论文题目 9 图 2.2 流程图 2.1.2 文件及文件夹得操作 文件管理器除了能够在界面上对文件系统进行正确的显示,还要能够为用户提供各 种文件操作的支持。具体操作类型和操作要求如表 2.2 所示。 表 2.2 文件及文件夹操作 操作类型操作对象备注 新建文件夹 用户执行新建操作命后,弹出对话框供用户输入文件件的 名字时输入框中默认进行名字的初始化,形式为” new directory”。如果当前目录中已经在同名文件夹,则默认形是为 “new directory( 0 )” ,若仍存在同名文件夹,在括号内的数字依 次递增并继续判断,直到满足文件夹名称位一为止。用户确认 后文件夹在当前目录下成功创建。新建的文件夹在当前界面下 按排序要求显示。 选取文件夹/文件 用户可以对一个或多个目录下的文件夹/文件进行单 个或多个选取操作。作为下一部文件管理操作的对象 查询文件夹/文件 用户可以了解文件夹的路径、类型、修改时间、大 小等属性信息。 重命名文件夹/文件 用户可以对单个文件夹/文件重命名,用户可以在弹 出的对话框编辑区中输入新的名字并进行确认操作,而 对话框默认在编辑区中填充并选择文件夹/文件的名字, 特别的,文件只有选择后缀外的其他不分。要保证新修 返回主界面 姓名:论文题目 10 改的名字在当前目录下的唯一性,否则重命名失败,重 命名后给出用户提示并保存目录下的按序排列。 复制文件夹/文件 用户可以对选取完整的文件夹/文件对象执行复制操 作,并粘贴纸至目标中。目标目录不能为选取对象中某 一文件夹下的子文件夹,不能选取目标目录下的文件夹/ 文件作为复制操作对象,目标目录下不能存在与选取对 象同命名的文件夹/文件。操作执行之前列出已选取的对 象,用户确认后执行复制操作,最后给出操作的结果提 示并保持目录下的按序排列。 粘贴文件夹/文件 从复制文件后在后台有存档可以找到文件目录下进 行粘贴文件夹/文件。 删除文件夹/文件 用户可以的选取完毕的文件夹/文件对象执行删除操 作,操作执行之前列出已选取的对象,用户确认后执行 删除操作,最后给出操作的结果提示并保持目录下的按 序排列。用户可以指定删除操作的执行方式,既是否删 除非空文件夹,如果选否,则选取文件的非空文件夹删 除失败。 搜索文件夹/文件 用户可以指定关键字并递归搜索当前目录下名称包 含所给关键字的所有操作文件夹/文件,将结果以列表的 形式显示。文件管理器还需要提供其它应用搜索操作的 接口以达到目的。 2.1.3 文件系统安全管理 文针对当前各种恶意软件的威胁和用户数据保护的需求,文件管理器还需要包含对 文件系统安全管理的功能,能够实时的检测文件系统中各种文件基本操作信息,包括文 件打开、读操作、写操作、文件关闭等,并把相应的进程名和文件名以日志的方式记录 下来,提供给用户查询。作为文件管理器的高级功能,默认于系统启动后在后台保持运 行状态,用户可以在文件管理器使用的过程中选择停止或重新启用该项功能,对信息的 持久化要考虑到用户手机应用的特殊性。 姓名:论文题目 11 2.2 系统开发需求 Android 的应用,开发采用了 Java 语言,所以它的学习曲线相对比较平缓。对于那些 有一些编程语言,如 C/C+/Java 等,训练的学生,都可以考虑学习 Android 应用开发。 当然,如果处于一个没落的行业,个人再努力,可能都赶不上整个行业坠落的速度。 如果你希望从事 Android 游戏开发,那么,最好能在高数、离散数学甚至计算机图形 学等方面有比较扎实的基础。如果后续想往底层开发如系统移植、驱动开发等方向发展, 或者为了更好地理解 Android 应用架构体系,那么,具备一定的操作系统知识是必要的 当然并不需要你对操作系统有多精通,而是对其基本原理有一定了解即可。系统中的应 用软件依赖于不同的硬件平台,不同的手机型号又对应着不同的功能需求同事也要注意 到,同一种软件的主体功能还是相同的,知识某些方法少有差异,如何有效的管理众多 的版本代码同事提高软件的开发效率。 2.2.1Android 资源管理器的开发平台 文本 Eclipse: Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身 言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,附带了 一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT) 。Eclipse 是一 个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有 商业品质的工业平台。 它主要由 Eclipse 项目、Eclipse 工具项目和、Eclipse 技术项目三个项目组成,具体包 括四个部分组成Eclipse Platform、JDT、CDT 和 PDE。JDT 支持 Java 开发、CDT 支 持 C 开发、PDE 用来支持插件开发,Eclipse Platform 则是一个开放的可扩展 IDE,提供 了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform 允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能 在哪里结束,而另一个工具功能在哪里开始。 2.2.2Android 开发框架 下面图 2.2 是 Android 的体系架构图,自上而下分别为应用层、应用框架、类库和 Alvik 运行时环境以及 Linux 内核。 姓名:论文题目 12 图 2.2 Android 的体系架构图 一般来说,我们想从事 Android 开发,可以从应用开发作为切入点,逐渐熟悉其整个 体系,并慢慢往其底层渗透,从而能做到软硬兼备,Android 系统开发班的课程设置就充 分考虑到了这一点,既涉到应用开发的透彻掌握,又帮助大家在系统开发层面上做好充 分的准备。而从学习的路线图上来说,先熟悉 Java SE 编程,能比较熟练的使用 Java 语言 进行编程,熟悉 Java 语言语法特点,熟悉 Java IO、Java 线程、网络编程、XML 处理等。 另外,因为很多的 Android 应用在运行时都需要去访问网站服务器,因此,熟悉一种网络 编程语言也是必要的。 无论是从开发班的课程设置就充分考虑到了这一点,既涉到应用开发的透彻掌握, 又帮助大家在系统开发层面上做好充分的准备。而从学习的路线图上来学习的方便性还 是市场占有情况来说使用 JSP/Servlet 都是不二的选择,另外,在这个阶段也顺便学习一 下 SQL 语法和熟悉一种 SQL 数据库,以方便后续 Android 开发中进行 SQLite 数据库开 发。学习完这些课程后,就可以开始进行 Android 的应用开发的学习,例如 Android 中的 UI 组件、基本组件、数据存储、传感器、图形图像处理、多媒体处理、游戏开发等。 Android 包含一套 C/C+库,Android 系统的各式组件都在使用。这些功能通过 Android 应用框架暴露给开发人员。Android 的核心类库提供 Java 类库所提供的绝大部分 功能。每个 Android 应用都运行在自己的进程上,享有 Dalvik 虚拟机为它分配的专有实 姓名:论文题目 13 例。为了支持多个虚拟机在同一个设备上高效运行,Dalvik 被改写过。 Dalvik 虚拟机执 行的是 Dalvik 格式的可执行文件(.dex)该格式经过优化,以降低内存耗用到最低。Java 编 译器将 Java 源文件为 class 文件,class 文件又被内置的 dx 工具转化为 dex 格式文件,这种文 件在 Dalvik 虚拟机上注册并运行。在一些底层功能比如线程和低内存管理方面, Dalvik 虚拟机是依赖 Linux 内核的。 为了更好地进行应用编程,可以有选择的对其 Lib 类库进行分析,以加深对其工作机 制的理解。再往下,就是操作系统层级了,这里应该要对 Linux 操作系统进行学习,熟悉 其内核和运行原理,熟悉 ARM 体系架构以及常用指令并熟悉驱动的编写方式,掌握其移 植方法等。Android 的核心应用程序就是依赖框架层次 API 开发的,程序员们可以充分使 用这些 API。应用架构设计的初衷是,简化组件复用机制,任何应用都能发布自己的功能, 这些功能又可以被任何其他应用使用,当然要受来自框架的强制安全规范的约束。 每个 Android 应用程序都存在于它自己的世界之中,默认情况下,每个应用程序均运 行于它自己的 Linux 进程中。当应用程序中的任意代码开始执行时,Android 启动一个进 程而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。 每个进程 都运行于自己的 Java 虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是 隔绝的。 默认情况下,每个应用程序均被赋予一个唯一的 Linux 用户 ID,并加以权限设 置,使得应用程序的文件仅对这个用户、这个应用程序可见。当然,也有其它的方法使 得这些文件同样能为别的应用程序所访问。 Android 应用的构成和工作流程如图 2.3: 图 2.3 Android 的构成 姓名:论文题目 14 每个 Android 应用程序都存在于它自己的世界之中,默认情况下,每个应用程序均运 行于它自己的 Linux 进程中。当应用程序中的任意代码开始执行时,Android 启动一个进 程而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。每个进程 都运行于自己的 Java 虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是 隔绝的。默认情况下,每个应用程序均被赋予一个唯一的 Linux 用户 ID,并加以权限设 置,使得应用程序的文件仅对这个用户、这个应用程序可见。当然,也有其它的方法使 得这些文件同样能为别的应用程序所访问。 (l)应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序 时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。 (2)Dalvik 虚拟机器:在 Android 平台上所使用 Java 虚拟机,不是 Sim 公司的标准 Java 虚拟机,而是使用 Google 自主开发的代号为 Dalvik 的虚拟机,它在保证 API 方面的兼容 的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。 (3)集成的浏览器:集成的浏览器是 Android 内建的浏览器,是以 WebKit 的浏览引擎为 基础所开发成的。WedKit 是一个开源浏览器网页排版引擎,目前使用 WebKit 引擎的浏 览器主要有:Safari、Midori、Epiphany 等。配合 Android 手机的功能,可以在浏览网页时, 达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。 (4)优化的绘图能力:在程序里可以用到的绘图功能分为 2D 与 3D 两个方面。在 2D 方面 Android 提供了一套特有的类库(SGL;而在 3D 方面则是使用 OpenGLES1.0(openGL for Embedded systems)规范的类库。它们是一种非常快的图形引擎,并且支持硬件加速。 (5)SQLite 数据库:SQLite 提供结构化的数据存取。SQLite 是一款轻型的数据库,它的 设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。 它能够支持 Windows/Linux/U nix 等主流的操作系统,同时能够跟很多程序语言相结合, 比如:php、Java 等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL 来讲,它的处理速 度比它们都快。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库, 体积小只有 250KB 但支持数据库大小至 2TB。它虽然很小巧,但是支持的 SQL 语句毫不 逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite 也是一套开放 性的关联式资料库其特点在于轻量性方面的设计结构,更适合在手机上使用。 (6)多媒体的支持能力:主要用于播放媒体文件。这同时包括对音频(如播放 MP3 或其 他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放 URI 地址” (Note:URI 即是统一资源识别地址)模式在网络上直接播放的流媒体。另外支持各种通用 姓名:论文题目 15 的静态图像格式,例如:JPG、PNG、GIF 等格式。 (7)GSM 技术:Global System for Mobile Communications,即全球移动通讯系统,俗称” 全球通” ,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的 是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。 GSM 技术是属于手机硬件方面的展现, 。它无需安装和管理配置,它是一个储存在单一磁 盘文件中的完整数据库,体积小只有 250KB 但支持数据库大小至 2TB。它虽然很小巧, 但是支持的 SQL 语句毫不逊色于其它开源数据库。默认情况下,每个应用程序均运行于 它自己的 Linux 进程中。当应用程序中的任意代码开始执行时,Android 启动一个进程而 当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。每个进程都运 行于自己的 Java 虚拟机(VM)中。所以应用程序代码实际上与其它应用程序的代码是隔绝 的。默认情况下,每个应用程序均被赋予一个唯一的 Linux 用户 ID,同时它还支持事务 功能和并发处理等等也是在开发 Android 应用程序时可以突出的特点之一。 (8)蓝牙、EDGE、3G 及 Wi-Fi:蓝牙是一种新型、开放、低成本、短距离的无线连接 技术可取代短距离的电缆,实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSMEvolution),即增强型数据速率 GSM 演进技术。EDGE 是一种从 GSM 到 3G 的过渡 技术它主要是在 GSM 系统中采用了一种新的调制方法,即最先进的多时隙操作和 SPSK 调制技术。由于 8PSK 可将现有 GSM 网络采用的 GMSK 调制技术的信号空间从 2 扩展到 8,从而使每个符号所包含的信息是原来的 4 倍。Wi-Fi(WirelessFidelity),即无线保真技 术,与蓝牙技术一样,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术, 其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就 能行遍全球。GSM 技术是属于手机硬件方面的展现,这些通讯能力也是属于手机硬件方 面的展现,也是在开发 Android 应用程序时可以突出的特点之一。 (9)GPS: Global Positioning System,即全球定位系统,它是一个由覆盖全球的 247 颗 卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以同时观测到 4 颗 卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等 功能。这项技术可以用来引导飞机、船舶、车辆以及个人。这个同样也是属于手机硬体 方面的体现也是在开发 Android 应用程序是可以突出的特点之一 2.3 操作系统及所需软件需求 每个应用程序均运行于它自己的 Linux 进程中。当应用程序中的任意代码开始执行 时,Android 启动一个进程而当不再需要此进程而其它应用程序又需要系统资源时,则关 姓名:论文题目 16 闭这个进程。每个进程都运行于自己的 Java 虚拟机(VM)中。所以应用程序代码实际上与 其它应用程序的代码是隔绝的。默认情况下,每个应用程序均被赋予一个唯一的 Linux 用 户 ID,并加以权限设置,使得应用程序的文件仅对这个用户、这个应用程序可见。当然, 也有其它的方法使得这些文件同样能为别的应用程序所访问。新下载好的 Android 源码, 只用配置好编译的环境,在根目录下执行 make 命令,就可以生成系统镜像,然后由 Android 模拟器加载并运行,对于实际圣餐中的源码编译来说,系统中的应用软件依赖于 不同的硬件平台,不同的手机型号又对应着不同的功能需求同事也要注意到,同一种软 件的主体功能还是相同的,知识某些方法少有差异。 编写 Android 的应用程序,需要一套个人电脑系统。至于操作系统的部份,几个主流 操作系统都有支持。支持的操作系统如下,Windows XP 、Vista 或 Windows 7。 在开始搭建 Android 的开发环境之前,需要准备的软件包如下, (1) JDK6 (jdk-6u21-windows-i586.exe) (2) Eclipse(eclipse-java-galileo-SR2-win32.zip) (3) Android SDK 1.6(android-sdk-windows-1.6_r1.zip) (4) Android SDK Setup(android-sdk_r06-windows.zip) (5) ADT 0.9.7(ADT-0.9.7.zip) 2.3.1 Android 开发环境及变量配置 Eclipse 设计的美妙之处,在于所有东西都是外挂,除了底层的核心以外。这种外挂 设计让 Eclipse 具备强大扩充性,但更重要的是,此平台提供一个定义明确的机制,让各 种外 挂程序共通合作(透过延伸点 extension points)与贡献(contributions),因此新功能可 以轻易且无缝地加入平台。 2.3.2 安装配置 JDK6 下载后安装是下的解压包那就解压到某目录,例如解压到是 C:Javajdk1.6.0_20:右 键点击我的电脑 -属性 -高级,点击下面的环境变量,在下面的“系统变量”处选择新 建在变量名处输入 JAVA_HOME 变量值中输入刚才的目录,比如我的是在目录 C:Javajdk1.6.0_20 下,效果如图 2.4 所示, 姓名:论文题目 17 图 2.4 进入环境变量 确定后再新建一个变量名为 CLASSPATH,变量值 为 %JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar ,确定后找到 Path 的变 量,双击或点击编辑,在变量值最前面加上%JAVA_HOME%/tools; 注意里面的是。确定、 确定、确定后即可。具体如下图 2.5 所示, 图 2.5 环境变量的设置 接着在“开始-运行” ,输入 cmd,然后在命令行提示符中输入:java -version,如果 姓名:论文题目 18 能够看到 java version “1.6.0_20信息就表示 JDK 安装成功。 2.3.3 安装配置 SDK 将下载 android-sdk-windows-1.6_r1.zip 解压缩到 C:android-sdk-windows-1.6_r1 目录中。 新建一个“系统变量” ,在“变量名”中填 Android_Home,在“变量值”加填 C:android- sdk-windows-1.6_r1。 “编辑”PATH 变量,在“变量值”后面加上; %Android_Home%tools。这样,Android SDK 1.6 就安装好了。 “开始-运行” ,输入 cmd, 然后在命令行提示符中输入:android -help,应该能够看到帮助信息:Android SDK 1.6 安装成功。 2.3.4 Eclipse 的设置 将下载到的 Eclipse 解压缩到 C:eclipse,然后进入这个文件夹,双击 eclipse.exe,启 动 Eclipse。关联 Adnroid SDK菜单“Windows-Preferences” ,打开 Preferences 对话框, 点击 Android,在右侧的 Android Reference 中,点 SDK Location 文本框右侧的 Browse?按 钮,找到 C:android-sdk-windows-1.6_r1, “确定” 。安装 ADT菜单“Help - InstallNew Software?” ,打开 Install 对话框,点击 Add?按钮,添加站点,Add Site, ,在 Name 中填 ADT,在 Location 中填 /android/eclipse/。然后,下载安装 ADT。 第四步,解压 Android SDK Setup,下载更新 Android SDK 2.0 和 2.1 将下载到 android- sdk_r04-windows.zip 解压缩到 C:android-sdk-windows,然后进入这个文件夹,双击 SDK Setup.exe,启动 Android SDK and AVD Manager,选中左侧 Settings 项,然后在右侧面板 选中 Force https:/? sources to be fetched using http:/,然后选择 Save private Bitmap mBackUp;private Bitmap mImage;private Bitmap mAudio;private Bitmap mRar; private Bitmap mVideo;private Bitmap mFolder;private Bitmap mApk;private Bitmap mOthers;private Bitmap mTxt;private Bitmap mWeb; private Context mContext;private List mFileNameList;private List mFilePathList; public FileAdapter(Context context,List fileName,List filePath) mContext = context; mFileNameList = fileName; mFilePathList = filePath; mBackRoot = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.back_to_root); mBackUp = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.back_to_up); mImage = BitmapFactory.decodeResource(mContext.getResources(),R.drawable.image); /*不同文件类型的图片加载代码块*/ public int getCount() return mFilePathList.size(); public Object getItem(int position) return mFileNameList.get(position); public long getItemId(int position) return position; public View getView(int position, View convertView, ViewGroup viewgroup) ViewHolder viewHolder = null; if (convertView = null) 姓名:论文题目 23 viewHolder = new ViewHolder(); LayoutInflater mLI = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = mLI.inflate(R.layout.list_child, null); viewHolder.mIV = (ImageView)convertView.findViewById(R.id.image_list_childs); viewHolder.mTV = (TextView)convertView.findViewById(R.id.text_list_childs); convertView.setTag(viewHolder); else viewHolder = (ViewHolder) convertView.getTag(); File mFile = new File(mFilePathList.get(position).toString(); if(mFileNameList.get(position).toString().equals(“BacktoRoot“) viewHolder.mIV.setImageBitmap(mBackRoot); viewHolder.mTV.setText(“返回根目录“); else if(mFileNameList.get(position).toString().equals(“BacktoUp“) viewHolder.mIV.setImageBitmap(mBackUp); viewHolder.mTV.setText(“返回上一级“); else if(mFileNameList.get(position).toString().equals(“BacktoSearchBefore“) viewHolder.mIV.setImageBitmap(mBackRoot); viewHolder.mTV.setText(“返回搜索之前目录“); else /*(文件图标设置代码块)*/ return convertView; class View

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论