Android应用开发概述

Android应用开发概述
Android应用开发概述

Android应用开发概述

背景,前景,应用开发基础

By: 张方纪, xyxzfj@https://www.360docs.net/doc/dc6942636.html,,

On: 2/13/2012

刘老师,各位研三、研二、研一的师兄师姐,本次由刘老师带毕业设计和即将成为本实验室成员的各位同学,大家晚上好!

很高兴能与大家分享自己Android开发入门过程中的所学、所感。

本报告的题目是《Android应用开发概述》,目的是让大家快速入门,了解Android的背景、前景以及应用开发基础。此前,我已经对它有过三个月浅浅的接触,参加过学院组织的一次Android应用开发大赛,阅读与翻译过少量的官方文档,本科最后一门课程设计也以之为目标平台;本科毕业设计和研究生期间的大致方向,同样会是以Android为代表的移动操作系统上基于数据库的理论研究和应用开发。

本报告的意义,我所理解的:由刘老师带毕业设计的,和即将成为本实验室成员的本科毕业生,我的同学,可以以此为契机,开始了解我们的实验室,准备自己的课业和方向;各位师兄师姐,刘老师,借此报告稍作休息,同时认识一下新同学、新学生,也很好。同时,希望类似正式与非正式、公开与私下的学习交流,今后能多开展,更多的人有机会与大家分享知识,讨论学习,交流心得,从中锻炼自己,增进感情,提升整体学习与研究水平。

本报告将围绕以下几方面展开:(括号中标明时长,或权重)

1移动计算。其定义,特点,与前景。(10分钟)

2Android背景。其定义,成长历史,标志性事件,特性,与架构。(15分钟)

3Android应用。其代表性应用,创新性应用,以及由此给我们的思考。(10分钟)

4Android应用开发基础。聚焦Android体系结构第三层(Application Framework)之上的最后一层——Applications,通过一个Hello Teachers,整体介绍其构建(组成部分)

与机制(构建之间的关系),并特别介绍Android内建的嵌入式关系数据库管理系统SQLite。(40分钟)

1 移动计算

移动计算是随着移动通信、互联网、数据库、分布式计算等技术的发展而兴起的新技术。移动计算技术将使计算机或其它信息智能终端设备在无线环境下实现数据传输及资源共享。它的作用是将有用、准确、及时的信息提供给任何时间、任何地点的任何客户。这将极大地改变人们的生活方式和工作方式。(移动计算_百度百科)

手持移动设备,或手机,特别是智能手机,将是由传统桌面计算向移动计算或云计算这一转变过程中的主力军。随时随地可用,传感器丰富等相对传统桌面计算机的突出优点,为智能手机改变人们的工作与生活提供了各种可能。智能手机将逐步发展成人们眼、耳、脑以及不存在在感官的延伸,帮助人们获取、处理、存储与呈现信息,帮助人们作出决定,展现给人们美好的事物,引领人们更加智慧与舒适地生活。

移动平台是目前和将来相当一段时间应用部署的重要平台。今年年初,苹果应用商店已经拥有了超过53万款应用,而谷歌电子市场所能提供的应用数目也已突破了40万大关(Android 电子市场应用数量突破40万大关-安卓(android)手机应用与安卓游戏软件开发者社区-应用邦),涵盖了游戏、效率、社交、购物、交通、体育、图书与工具书等等领域,渗入了生活的方方面面。下载量上,仅以Android以例。最高下载量已达5亿(Google Maps)(Google Maps - Android 电子市场中的应用),相当多的免费应用的下载量在十万级别以上(Shazam - Android 电子市场中的应用),收费应用也在万级别以上(Shazam Encore - Android 电子市场中的应用)。一款受欢迎的应用的市场价值十分巨大,而且这一市场才刚刚起步。

2 Android背景

2.1A ndroid的定义

维基百科(Wikipedia):

Android is a Linux-based operating system for mobile devices such as smartphones and tablet computers. It is developed by the Open Handset Alliance led by Google.

Android是一个基于Linux的移动设备(智能手机和平板电脑)操作系统。它由Google所领导的开放手持设备联盟所开发。

官方网站(Android Developers):

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

Android是用于移动设备上的一个包含一操作系统,一系列中间件,以及部分关键应用软件栈。Android SDK网站提供了在Android平台上使用Java编程语言开发应用程序所必须的工具和API。

2.2A ndroid的成长历史

Android is a Linux-based operating system for mobile devices such as smartphones and tablet computers. It is developed by the Open Handset Alliance led by Google.[9][10]

Google purchased the initial developer of the software, Android Inc., in 2005.[11] The unveiling of the Android distribution in 2007 was announced with the founding of the Open Handset Alliance, a consortium of 86 hardware, software, and telecommunication companies devoted to advancing open standards for mobile devices.[12][13][14][15]Google releases the Android code as open-source, under the Apache License.[16]The Android Open Source Project (AOSP)is tasked with the maintenance and further development of Android.[17]

Android has a large community of developers writing applications ("apps") that extend the functionality of the devices. Developers write primarily in a customized version of Java.[18] Apps can be downloaded from third-party sites or through online stores such as Android Market, the app store run by Google. As of October 2011 there were more than 400,000 apps available for Android, and the estimated number of applications downloaded from the Android Market as of December 2011 exceeded 10 billion.[19][20]

Android was listed as the best-selling smartphone platform worldwide in Q4 2010 by Canalys[21][22] with over 200 million Android devices in use by November 2011.[23] According to Google's Andy Rubin, as of December 2011 there are over 700,000 Android devices activated every day.[24]

译文:

Android是一个基于Linux的移动设备(智能手机和平板电脑)操作系统。它由Google所领导的开放手持设备联盟所开发。

2005年,Google收购了Android操作系统的最初开发商Android股份有限公司。2007年,随着Android操作系统的对外公布,一个由86家硬件、软件以及通信公司联合,致力于推出移动设备开放标准的组织——开放手持设备联盟,宣布成立。Google将Android代码作为开源项目,在Apache许可下发布。Android开源项目(AOSP)以Android的维护和更进一步的开发为使命成立。

Android拥有一个巨大的开发者社区,开发出拓展设备功能的各种应用程序(简称应用)。开发所使用的语言是一个定制的Java。应用可从三方网站或在线商店如由Google运营的电子市场下载。到2011年十月为止,Android可用应用突破40万个;2011年12月为止,电子市场估计应用下载量已逾100亿。

2010年第四季度,Android被市场咨询公司Canalys列为全世界最畅销智能手机平台,设备的使用量超过2亿。据前Android股份有限公司CEO和合作建立者、现Google员工Andy Rubin所称,到2011年12月为止,每天诞生出的Android设备超过70万部。

2.3A ndroid的特性

Features

?Application framework enabling reuse and replacement of components

?Dalvik virtual machine optimized for mobile devices

?Integrated browser based on the open source WebKit engine

?Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the

OpenGL ES 1.0 specification (hardware acceleration optional)

?SQLite for structured data storage

?Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

?GSM Telephony (hardware dependent)

?Bluetooth, EDGE, 3G, and WiFi (hardware dependent)

?Camera, GPS, compass, and accelerometer (hardware dependent)

?Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE

译文:

?应用框架,实现了组合的重用与替换

?Dalvik虚拟机,专为移动设备优化

?集成的浏览器,基于开源的WebKit引擎

?优化的图形,由一个定制的2D图形库驱动,3D图形基于OpenGL ES 1.0规范(硬件加速可选)

?媒体支持,支持常用音频、视频以及图像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

?GSM通话(依赖硬件)

?蓝牙,EDGE(增强型数据速率GSM演进技术),3G,以及Wifi(依赖硬件)?相机,GPS,指南针,加速计(依赖硬件)

?丰富的开发环境,包括一个设备模拟器,测试工具,内存和性能分析,以及用于Eclipse IDE的一个插件

在具体介绍Android应用开发之前,先稍作休息,欣赏一下Android的现有应用。开放加创新,所造就的产品自然给人以耳目一新的感觉。

(略,见PPT)

小任务:发挥头脑风暴,基于智能手机硬件平台现有的传感器(触摸,重力,光照,近体,温度,加速,罗盘,GPS)和存储(本地和云)、运算(本地和云)与联网(蓝牙,Wifi,2G/3G)能力,构想自己想要的应用。然后,搜索互联网,看它是否已经存在。

●如果不存在:1. 请检查是否满足题述约束,并改进检索方法;2. 重复步骤1;3. 重复

步骤2。如果依然查不到,那么可能你有了一个创意(虽然这种机会不大),赶快将它实现吧!

●如果存在:体验它,改进它,享受它。

4 Android应用开发基础

欣赏完以上应用,甚至心中还怀揣上了什么想法,我们一定已经迫不及待想要知道它们是怎样实现的,或能怎样实现。下面的内容正是为了解答这一问题,不过仅仅只是入门。更深的知识有待下去更进一步的探索。下面仅以Hello World的增强版Hello Teachers为例,介绍Android的构建(组成部分)与机制(构建之间的关系),并特别介绍Android内建的嵌入式关系数据库管理系统SQLite。

4.1应用描述:

设计一简单应用,以列表方式显示来自数据库的一系列教师信息条目,提供最基本的查找和删除操作。

4.2开发过程演示:

4.2.1Hello World

立即运行,观察虚拟机启动的同时,介绍文件组成。

4.2.1.1文件组成:

项目HelloWorld的根目录HelloWorld下有src、res、gen、Android 2.2等6个文件夹,AndroidManifest.xml等三个文件。

●src,源文件所在文件夹。已自动生成了一Java文件,里面是一个Activity的子类

HelloWorldActivity,该类包含一个重写的onCreate方法,该方法做了一个重要的

工作——设置该Activity类的内容视图。至此,该Activity类有了一张脸,如同上

帝给了人类一张脸一样鬼斧神工。

●res,内绑定资源文件。我之所以叫它内绑定,是因为在编译时,里面资源文件已

经与代码作了绑定;assets同样为资源文件,不过里面的资源是在运行时获取的。

?drawable*文件夹提供图形文件,如应用程序图标;为了适应不同分辨率的设

备,可以提供几种规格的图形文件,设备运行时自动选择合适的资源加载;这

种自动选择机制也同样适应于多国别、多语言、横竖屏等导致的多样性应用环

境,为Android应用支持各种应用环境提供了优秀的支持。

?layout,布局文件,即Activity的那张脸。布局文件定义用户界面,它以某一

布局(演示:水平线性、垂直线性、相对等)为根,是由各种能与用户交互的

微件(演示:标签、文本框、按钮等,英文Widget)以及对这些微件位置进

行描述的子布局等构成的的微件树。(添加一个水平线性子布局,放两个文本

框。)

?values,常量资源,如字符串、字符串数组等。对于即将出现在用户界面中的

文字,不应该在应用程序中硬编码,而是作为字符串资源在此定义,应用程序

引用其资源ID即可。这同样也是实现多语言支持的重要机制。

●gen,自动生成的Java文件。资源文件一当放入res文件夹,Eclipse IDE中的ADT

插件即自动生成一个唯一的资源ID,或引用地址,供代码直接引用该资源(演示)。

所有资源的ID都有序组织在gen文件夹下的R.java中,作为整型常量存在。

●Android 2.2,目标API,版本2.2,或API 8。不同的设备提供不同的Android API

或类库,多数设备的Android API版本都达2.2或更高。现在4.0版本的API已经在部分设备上得到的采用。

发现模拟器从主界面进入一个窗口,窗口上显示Hello World, HelloTeachers。提出问题:窗口哪来?文字哪来?

●HelloWorldActivity是应用程序HelloWorld的主类和入口。AndroidManifest.xml文

件这样告诉系统:(演示)本应用程序有一个Activity,它的名字是whut.cs.helloworld.HelloWorldActivity,在标题栏的标签是“HelloWorld”。它可以接受系统的两种请求:作为启动器,为系统列入应用程序列表;作为主方法,是包whut.cs.helloworld下的主类。

●主类和入口HelloWorldActivity下,一当类的实例被创建,回调函数onCreate即被

调用,也正是此时,需要为实例指定其用户界面,即布局文件,之后才是对布局文件中各个微件的引用,设置它们的内容,为它们设置监听器以对用户的触摸操作作出响应,等等。一个Activity的生命周期从它被某一意图(Intent)启动(startActivity 或startActivity)启动开始,到最后因用户按了返回键,或当在后台时因资源短缺而被系统杀死为结束。中间有足够的回调函数供开发人员在关键时刻采取行动,比如:在被启动时,重写onCreate以设置布局文件并初始化各个微件;在即将对用户可见时,重写onStart;在即将能与用户交互时,重写onResume;在系统即将启动另一个Activity时,重写onResume;在即将对用户不可见时,重写onStop;在即将被系统析构时,重写onDestory;等等。一个Activity的完整生命周期见图1;

各个回调函数的闭合关系见图2;下面的代码就是使用回调函数的大致框架。

图1 Activity的生命周期

图2 Activity生命周期中回调函数的闭合关系

更多内容,参见(Activities | Android Developers)

4.2.2Hello Teachers

在Hello World的基础上,设计一简单应用,以列表方式显示来自数据库的一系列教师信息条目,提供最基本的查找和删除操作。

●使HelloTeachersActivity继承ListActivity,重新组织引用包。由官方API文档

(ListActivity - Android SDK | Android Developers)可知,ListActivity是Activity的

子类,是深度定制的Activity,专用于显示与某一数据源(如一查询表)绑定的一

系列条目。

●除调用setContentView设置布局文件外,还需指定另一布局文件,以定义每一行条

目的显示方式。

●使用setListAdapter方法,将当前列表骨架与某一ListAdapter绑定。ListAdapter提

供数据从数据源到列表的一个映射。

●数据源主要一Cursor对象,即游标。它指向查询表的起始位置。查询完成后,调

用startManagingCursor将结果游标将由当前Activity管理。

4.2.3嵌入式关系数据库管理系统SQLite

SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.

SQLite是一个包含一个自包含、无服务、零配制、事务型的SQL数据库引擎的软件库。

它是世界上最流行的数据库引擎之一。并且,SQLite的源代码已经进入了公共域,可自由使用。

Android provides full support for SQLite databases. Any databases you create will be accessible by name to any class in the application, but not outside the application.

Android提供了对SQLite数据库的完全支持。你所创建的任何数据库都能被当前应用中的任何类按名访问,当前应用之外的类则不行。

4.2.3.1SQLite 3的特性

Features Of SQLite

1Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.

2Zero-configuration - no setup or administration needed.

3Implements most of SQL92. (Features not supported)

4 A complete database is stored in a single cross-platform disk file.

5Supports terabyte-sized databases and gigabyte-sized strings and blobs. (See limits.html.)

6Small code footprint: less than 350KiB fully configured or less than 200KiB with optional features omitted.

7Faster than popular client/server database engines for most common operations.

8Simple, easy to use API.

9Written in ANSI-C. TCL bindings included. Bindings for dozens of other languages available separately.

10Well-commented source code with 100% branch test coverage.

11Available as a single ANSI-C source-code file that you can easily drop into another project. 12Self-contained: no external dependencies.

13Cross-platform: Unix (Linux and Mac OS X), OS/2, and Windows (Win32 and WinCE) are supported out of the box. Easy to port to other systems.

14Sources are in the public domain. Use for any purpose.

15Comes with a standalone command-line interface (CLI) client that can be used to administer SQLite databases.

Suggested Uses For SQLite:

●Application File Format.Rather than using fopen() to write XML or some proprietary

format intodisk files used by your application, use an SQLite database instead.You'll avoid having to write and troubleshoot a parser, your data will be more easily accessible and cross-platform, and your updates will be transactional.

●Database For Gadgets.SQLite is popular choice for the database engine in cellphones,PDAs,

MP3 players, set-top boxes, and other electronic gadgets.SQLite has a small code footprint, makes efficient use of memory,disk space, and disk bandwidth, is highly reliable, and requiresno maintenance from a Database Administrator.

●Website Database.Because it requires no configuration and stores information in

ordinarydisk files, SQLite is a popular choice as the database to back smallto medium-sized websites.

●Stand-in For An Enterprise RDBMS.SQLite is often used as a surrogate for an enterprise

RDBMS for demonstration purposes or for testing. SQLite is fast and requires no setup, which takes a lot of the hassle out of testing and which makes demos perky and easy to launch.

SQLite特性:

1事务是原子的,一致的,独立的,持久的(ACID),即使在使系统崩溃或掉电之后。2零配置——无需安装或管理。

3实现了SQL92标准的绝大部分。(未能支持的特性)

4将一个完整的数据库存储在一个单一的跨平台磁盘文件上。

5支持TB级的数据库和GB级的字符串和二进制大对象。(请见limits.html)

6代码轻巧:完全配置小于350KB;省略部分特性,可小于200KB。

7对大部分常见的操作,快于流行的C/S数据库引擎。

8API简单,易用。

9用ANSI-C所写。与命令行工具相结合。对其他语言的支持单独可用。

10源代码良好注释,分支测试覆盖率达100%。

11单一的ANSI-C形式的源代码可用,可以简单地拖放到其他项目当中。

12自包含:没有外部依赖。

13跨平台:直接支持Unix (Linux and Mac OS X), OS/2, 和Windows (Win32 and WinCE);

可以很容易地移植到其他操作系统。

14源代码在公共知识域中,可用于任何目的。(不过“May you do good and not evil. ”——愿你做好事,不要做坏事。)

15附带一个独立的命令行界面客户端,可用于管理SQLite引擎。

SQLite建议应用场合:

1作为应用文件格式。在应用中使用SQLite,而不是使用fopen()来生成XML文件或某些专有格式的文件来存储数据。这样你将避免额外写一个问题重重的分析器,你的数据将变得更加容易访问,更加跨平台,更新操作将具备事务性。

2作为小电子器件的数据库。SQLite是手机、PDA、MP3、机顶盒以其其他小电子器件常用的数据库引擎。SQLite代码轻巧,能充分利用内存空间、磁盘空间以及带宽;高度可靠,并且无需数据库管理的维护。

3作为网站数据库。因为它无需配置,将信息存储在磁盘文件上,SQLite是支撑中小型网站数据存储受欢迎的选择。

4企业RDBMS的代用品。SQLite常被用作用于演示与测试目的的企业RDBMS的借用品。SQLite速度快,无需配置,使得它为测试省去很多事,也很容易搭建演示系统。SQLite支持的数据类型相当特殊,如官方文档所述:

4.1.1.1SQLite 3中的数据类型

Most SQL database engines (every SQL database engine other than SQLite, as far as we know) uses static, rigid typing. With static typing, the datatype of a value is determined by its container - the particular column in which the value is stored.

SQLite uses a more general dynamic type system. In SQLite, the datatype of a value is associated with the value itself, not with its container. The dynamic type system of SQLite is backwards compatible with the more common static type systems of other database engines in the sense that SQL statement that work on statically typed databases should work the same way in SQLite. However, the dynamic typing in SQLite allows it to do things which are not possible in traditional rigidly typed databases.

大部分数据库引擎(就我们所知,除SQLite之外的任何其他数据库引擎)使用着传统的静态类型。静态类型下,一个值的数据类型由其容器——该值所存储在的列——所决定。SQLite使用一种更加泛化的动态类型系统。在SQLite中,一个值的数据类型依赖于其值本身而非其容器。在其他静态类型数据库上能使用的SQL语言,在SQLite上同样能使用;在

这一意义上讲,SQLite的这一动态类型系统相对其他数据库的静态类型系统具有向后兼容的能力。而且,SQLite中的动态类型能让它完成传统类型数据库所不能完成的工作。

简单地说,每一个在SQLite数据库中存储(或由该数据库引擎所操作)的值,拥有以下五种存储类型之一:

1NULL。空值。

2INTEGER。有符号整数,依值范围的大小,可使用1,2,4,6,甚至8字节存储。3REAL。浮点数,以8字节IEEE浮点数形式存储。

4TEXT。文本串,使用数据库编码(UTF-8, UTF-16BE 或UTF-16LE)存储。

5BLOB。进制制大对象。按输入的形式原样存储。

然后,对于被执行的SQL语句,SQLite引擎按合适的方式将传统的静态类型转化上上述五类中的某一类,具体参见文献Datatypes In SQLite Version 3。

4.1.2其他

有关Android运行环境的配置等信息,参见视频教程。

5 结语

应该怎样来描述我们心中的Android呢?

●一个玩具机器人,儿时的梦的继续

●一个学习的方向,大学所学知识的一个大的锻炼

●一份工作,一份事业,一个自我价值实现的途径

●一个渴求创新、充满机遇的新的天地!

本次报告即使是入门,却仍然漏掉了许多基础的知识,比如如何配置开发环境,又如对AndroidActivity之外的另外三个重要构件Service、Content provider以及Broadcast receivers 的介绍。官方文档十分详尽,我这儿亦有讲的十分好的视频教程。

6 参考文献

[1]移动计算_百度百科,https://www.360docs.net/doc/dc6942636.html,/view/95305.htm,2012-2-13

[2]Android电子市场应用数量突破40万大关-安卓(android)手机应用与安卓游戏软件开

发者社区-应用邦,https://www.360docs.net/doc/dc6942636.html,/reports/android-market-tops-400000-apps/,2012-2-13

[3]Android 电子市场中的应用,https://https://www.360docs.net/doc/dc6942636.html,/,2012-2-13

[4]Google Maps - Android 电子市场中的应用,

https://https://www.360docs.net/doc/dc6942636.html,/details?id=com.google.android.apps.maps&feature=search_result #?t=W251bGwsMSwyLDEsImNvbS5nb29nbGUuYW5kcm9pZC5hcHBzLm1hcHMiXQ..,2012-2-13

[5]Shazam - Android 电子市场中的应用,

https://https://www.360docs.net/doc/dc6942636.html,/details?id=com.shazam.android#?t=W251bGwsMSwyLDUwMS wiY29tLnNoYXphbS5hbmRyb2lkIl0.,2012-2-13

[6]Shazam Encore - Android 电子市场中的应用,

https://https://www.360docs.net/doc/dc6942636.html,/details?id=com.shazam.encore.android&feature=more_from_dev eloper#?t=W251bGwsMSwyLDEwMiwiY29tLnNoYXphbS5lbmNvcmUuYW5kcm9pZCJd ,2012-2-13

[7]Activities | Android Developers,

https://www.360docs.net/doc/dc6942636.html,/guide/topics/fundamentals/activities.html,2012-2-14

[8]ListActivity - Android SDK | Android Developers,

https://www.360docs.net/doc/dc6942636.html,/reference/android/app/ListActivity.html,2012-2-14

package edu.viky.teachers;

import android.app.AlertDialog;

import android.app.ListActivity;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.Intent;

import android.content.DialogInterface.OnClickListener;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.AdapterView.OnItemLongClickListener;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;

import android.widget.Toast;

public class TeachersListActivity extends ListActivity

implements OnItemClickListener, OnItemLongClickListener { private static final String TAG = "ListActivity";

static final String TABLE_NAME = "Teacher";

static final String KEY_FILTER = "filter";

private static final int MENU_CREATE = 0;

private static final int MENU_SEARCH = 1;

private static final String KEY_SID = MySchoolActivity.KEY_SID;

private static final String KEY_TID = MySchoolActivity.KEY_TID;

private String mSid;

private String mFilter;

private ListView mListView;

private Cursor mCursor;

private SimpleCursorAdapter mAdapter;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.360docs.net/doc/dc6942636.html,yout.teachers);

mListView = getListView();

//Determine which school of teachers to show from the calling intent.

mSid = getIntent().getStringExtra(KEY_SID);

//Get the filter string from the calling intent.

mFilter = getIntent().getStringExtra(KEY_FILTER);

updateList();

mListView.setOnItemClickListener(this);

mListView.setOnItemLongClickListener(this);

}

/**

* Update the List View with data from the database.

*/

void updateList(){

String likeFilter = "%" + mFilter +"%";

String [] selectionArgs;

StringBuilder builder = new StringBuilder();

if (mSid!=null && mSid.length()>0) {

builder.append("Teacher.Sid=? ");

if (mFilter!=null && mFilter.length()>0) {

builder.append(" AND (Tname LIKE ? OR Tphone LIKE ? OR Teacher.Tid LIKE ?) ");

selectionArgs = new String[]{mSid,likeFilter,likeFilter,likeFilter};

}

else {

selectionArgs = new String[]{mSid};

}

}

else {

if (mFilter!=null && mFilter.length()>0) {

builder.append(" (Tname LIKE ? OR Tphone LIKE ? OR Teacher.Tid LIKE ?) ");

selectionArgs = new String[]{likeFilter,likeFilter,likeFilter};

}

else {

selectionArgs = null;

}

}

String selection = builder.toString();

SQLiteDatabase database = openOrCreateDatabase(

MySchoolActivity.DB_NAME, MODE_PRIV A TE, null);

mCursor = database.query(

"Teacher,School,University ON (School.Sid=Teacher.Sid AND University.Uid=School.Uid) ",

new String[]{"Teacher.Tid AS _id","Tname","Tgender","Tbirthdate","Uname","Sname"},

selection,selectionArgs,

null, null, null);

mAdapter = new SimpleCursorAdapter(

this,

https://www.360docs.net/doc/dc6942636.html,yout.teacher_row,

mCursor,

new String[]{"Tname","Tgender","Tbirthdate","Uname","Sname"},

new int[]{R.id.tname,R.id.tgender,R.id.tbirthdate,R.id.tuname,R.id.tsname});

setListAdapter(mAdapter);

database.close();

}

public boolean onItemLongClick(AdapterView arg0, View arg1, int index, long arg3) { //Query before deletion.

new AlertDialog.Builder(this)

.setTitle("确认删除" + mCursor.getString(1) + "?" )

.setPositiveButton("确定", new OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

delete();

updateList();

}

})

.setNegativeButton("取消", null)

.show();

//Consume the click.

return true;

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

boolean result = super.onCreateOptionsMenu(menu);

menu.add(0, MENU_CREA TE, 0, "新建教师信息");

menu.add(0, MENU_SEARCH, 0, "查询教师信息");

return result;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

boolean result = super.onOptionsItemSelected(item);

int itemId = item.getItemId();

switch (itemId) {

case MENU_CREATE:

create();

break;

case MENU_SEARCH:

search();

break;

default:

break;

}

return result;

}

private void search() {

final EditText queryText = new EditText(this);

Builder builder = new AlertDialog.Builder(this);

builder.setTitle("请输入教师姓名或电话号码或教工号的全部或部分文本");

builder.setIcon(android.R.drawable.ic_dialog_info);

builder.setView(queryText);

builder.setPositiveButton("确定", new OnClickListener() {

// Start a new TeachersListActivity to show the search result.

public void onClick(DialogInterface dialog, int which) {

Intent searchIntent = new Intent(

TeachersListActivity.this,

TeachersListActivity.class);

searchIntent.putExtra(KEY_FILTER, queryText.getText().toString());

startActivity(searchIntent);

}

});

builder.setNegativeButton("取消", null);

builder.show();

}

private void create() {

Intent createIntent = new Intent(this, TeacherEditActivity.class);

startActivity(createIntent);

}

private void delete() {

//Why has mCursor already moved to index?

String rowId = mCursor.getString(0);

SQLiteDatabase database = openOrCreateDatabase(

MySchoolActivity.DB_NAME, MODE_PRIVA TE, null);

int deletedRows = database.delete(TABLE_NAME, "Tid=?", new String[]{rowId});

database.close();

Log.v(TAG, ""+deletedRows);

if (deletedRows==1) {

Toast.makeText(this,mCursor.getString(1) + "删除成功!", Toast.LENGTH_SHORT).show();

}

}

/**

* Show the detailed information of the selected teacher entry.

*/

public void onItemClick(AdapterView arg0, View arg1, int index, long arg3) { //mCursor has automatically moved to index.

String tid = mCursor.getString(0);

Log.v(TAG, tid);

Intent viewItemIntent = new Intent(this, TeacherViewActivity.class);

viewItemIntent.putExtra(KEY_TID, tid);

startActivity(viewItemIntent);

}

}

Android应用开发基本知识点汇总

Android应用开发基本知识点汇总 Activity 一生命周期 4种状态 running / paused / stopped / killed 生命周期 Activity启动 onCreate -> onStart -> onResume 点Home返回主界面 onPause -> onStop 再次回到原Activity onRestart -> onStart -> onResume 退出Activity onPause -> onStop -> onDestroy 进程优先级前台/可见/服务/后台/空 二任务栈 三启动模式 standard singleTop 栈顶复用 singleTask 栈内复用 singeInstance 四scheme跳转协议 服务器可以定制化告诉App跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面 Fragment 一第五大组件 为什么是第五大组件 Fragment相对Activity更节省内存,切换更舒适Fragment加载到Activity的两种方式 静态加载xml 动态加载fragmentTransaction.add(id, fragment, “name”); .commit; FragmentPagerAdapter与FragmentStatePagerAdapter

FragmentStatePagerAdapter在切换时回收内存,适合页面较多的情况FragmentPagerAdapter并没有回收内存,只是detach了Activity 二生命周期 onAttach -> onCreate -> onCreateView -> onViewCreated -> onActivityCreated -> onStart -> onResume -> onPause -> onStop -> onDestroyView -> onDestroy -> onDetach 先创建Activity后创建Fragment,先销毁Fragment后销毁Activity 三Fragment之间的通信 Fragment调用Activity getActivity Activity调用Fragment 接口回调 Fragment调用Fragment方法findFragmentById 四FragmentManager replace add remove Service 一应用场景,与Thread区别 Service是什么后台长时间运行,没有用户界面,运行在主线程,不能有耗时操作 Service与Thread区别 Activity难以与Thread交互,尤其当Activity销毁以后 二开启Service的两种方式 StartService onCreate -> onStartCommand -> onBind -> onDestroy onStartCommand return START_STICKY;

(完整版)Android应用开发期末考试题

试题 一、选择题 1 android虚拟设备的缩写是(AVD) 2 Android SDK目前支持的操作系统(DOS) 3 Android开发工具插件(ADT)没有提供的开发功能(自动更新) 4Android SDK提供一些开发工具可以把应用软件打包成Android格式文件(APK) 5 Android当中基本的所有的UI都是由(view)或者其子类实现的 6以下不是Android中调试项目的正确步骤(测试用例) 7下列不是Activity的生命周期方法之一的是(OnResume) 8以下可以做EditText编辑框的提示信息是(adroid:hint) 9以下不是Activity启动的方法是(gotoActivity) 10以下不是手机操作系统的是(windows vista) 二、填空题 1 Android平台由操作系统,中间件,用户界面和应用软件组成的。 2 Android平台提供了2D,3D的图形支持,数据库支持SQLite,并且集成了浏览器 3目前已知的可以用来搭建Android开发环境的系统有windows,Linux,Mac 等4开发中推荐使用的IDE开发组合为IDE,eclipse,ADI来开发 5 Android SDK主要以java语言为基础 6创建工程时需要填写的信息名称有工程名,包的名字,Activity的名字还有应用的名字

7 Android.jar是一个标准的压缩包,其内容包含的是编译后的class,包含了全部的API 三、简答题 1 Android SDK中API的包结构的划分?至少五个 android.util,android.os,android.content,android.view,android.graphics,android.text 2 Android软件框架结构自上而下可分为哪些层? 应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android运行环境(RunTime)、操作系统层(OS) 3 Android应用程序的4大组件是什么? Activity、Broadcast Intent Receiver、Service、Content Provider 4 Android应用工程文件结构有哪些? 源文件(包含Activity),R.java文件,Android Library,assets目录res目录,drawble目录,layout目录,values目录,AndroidManifest.xml 5 Android开发应用程序最有可能使用到的应用框架部分是哪些? 一组View(UI)组件,Content Providers,Resource Manger,Notification Manger,Activiy Manger 6 Android底层库包含哪些? 系统C库,媒体库,Surface Manager,LibWebCore,SGL 四、编程 1实现点击一个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核心代码 Bundle bundle = new Bundle ( ); Bundle.putString(“store”,”数据来自Activity1”) ;

android开发试用期工作总结

android开发试用期工作总结 篇一:android软件开发工程师转正个人总结 个人总结 我于20XX年8月13日进入公司,根据公司的需要,目前担任Android软件工程师一职,负责综合代维,考务通手机客户端的开发工作。将近3个月的时候在这个新的工作环境我收获颇深。开始让我独立完成整个项目,这还是我的第一次,之前在公司是多人完成,过程中也遇到了许多困难,但是都一一解决了,我想这是我最宝贵的经历,通过三个月的不断学习,在项目开发中的不断锻炼以及同事、领导的帮助,我已逐渐融入这个大家庭,个人的工作技能也有了明显的提高,虽然仍有一些不足,但三个月以来我付出了不少,也收获了不少,我感觉自己成长了,也逐渐成熟了。 初到公司,加入了咨询与信息化部,加入了综合代维项目组,我也曾担心自己不知道该怎么与项目组的同事沟通,担心不知道怎么做好工作,但是项目组的前辈们都很亲切,也很耐心的教导我,解答我的疑问,以及他们团结向上的精神,让我很快的熟悉了工作,融入了项目组。 在这三个月的学习和工作中,我一直严格要求自己,遵循公司的规章制度,认真完成领导布置的每一项任务,遇到的问题虚心的向项目组的前辈们学习、请教,不断的提高、

充实自己。开发过程中出现的一些差错,也有前辈们耐心的指出和指导我修改,这些经历让我不断成熟,处理问题时考虑得更全面,杜绝类似情况的发生。在此我要特地感谢部门的领导和同事们对我的指引和帮助,感谢他们对我工作上失误的提醒和指正。 经过这三个月,我已经能独立进行开发任务,按时按质的完成分配的工作任务,当然还有许多不足,开发的经验仍有待提高,编写代码的简洁性和完整性也需要进一步增强,需要不断的继续学习以提高自己的工作能力。 总之,这三个月来我学到了很多,感悟了很多;看到公司的迅速发展,看到部门的同事越来越多,我深深地感到骄傲和自豪,也更加迫切的希望以一名正式员工的身份在这里工作,实现自己的奋斗目标,体现自己的人生价值,和公司一起成长。 我会用谦虚的态度和饱满的热情做好我的本职工作,为公司创造价值,同公司一起展望美好的未来! XX 20XX年11月13日 篇二:研发试用期工作总结 篇一:研发助理试用期总结 时间如白驹过隙,两个月试用期即将结束,在同事们的悉心关怀和指导下,加上自己不懈努力,各方面取得了一定

ANDROID软件开发工程师转正个人总结

个人总结 我于2012年8月13日进入公司,根据公司的需要,目前担任Android软件工程师一职,负责综合代维,考务通手机客户端的开发工作。将近3个月的时候在这个新的工作环境我收获颇深。 开始让我独立完成整个项目,这还是我的第一次,之前在公司是多人完成,过程中也遇到了许多困难,但是都一一解决了,我想这是我最宝贵的经历,通过三个月的不断学习,在项目开发中的不断锻炼以及同事、领导的帮助,我已逐渐融入这个大家庭,个人的工作技能也有了明显的提高,虽然仍有一些不足,但三个月以来我付出了不少,也收获了不少,我感觉自己成长了,也逐渐成熟了。 初到公司,加入了咨询与信息化部,加入了综合代维项目组,我也曾担心自己不知道该怎么与项目组的同事沟通,担心不知道怎么做好工作,但是项目组的前辈们都很亲切,也很耐心的教导我,解答我的疑问,以及他们团结向上的精神,让我很快的熟悉了工作,融入了项目组。 在这三个月的学习和工作中,我一直严格要求自己,遵循公司的规章制度,认真完成领导布置的每一项任务,遇到的问题虚心的向项目组的前辈们学习、请教,不断的提高、充实自己。开发过程中出现的一些差错,也有前辈们耐心的指出和指导我修改,这些经历让我不断成熟,处理问题时考虑得更全面,杜绝类似情况的发生。在此我要特地感谢部门的领导和同事们对我的指引和帮助,感谢他们对我工

作上失误的提醒和指正。 经过这三个月,我已经能独立进行开发任务,按时按质的完成分配的工作任务,当然还有许多不足,开发的经验仍有待提高,编写代码的简洁性和完整性也需要进一步增强,需要不断的继续学习以提高自己的工作能力。 总之,这三个月来我学到了很多,感悟了很多;看到公司的迅速发展,看到部门的同事越来越多,我深深地感到骄傲和自豪,也更加迫切的希望以一名正式员工的身份在这里工作,实现自己的奋斗目标,体现自己的人生价值,和公司一起成长。 我会用谦虚的态度和饱满的热情做好我的本职工作,为公司创造价值,同公司一起展望美好的未来! XX 2012年11月13 日

安卓开发实习总结

安卓实习心得_安卓开发实习总结 不知不觉中为期三周的实训已经接近尾声。虽然时间很短,不过我确实学到了一些我觉得有用的东西,并且是平时上课学不到的东西。三周的实训,时间很短,确实很短。原本刚开始,乃至之前听 说有为期三周的实训的时候,都觉得,这样的实训不过就是走过场 罢了,只有三周的时间,能学到什么东西呢?所以一开始也没当回事。 就这样,带着这样的心态,开始了实训。因为第一天周一上午没有课,下午,才算是正式开始了三周的实训。一开始听老师讲课的 时候,感觉很舒服啊,噼里啪啦一讲一堆,不过我就喜欢这样的, 听着爽啊。平时老师上课的时候都是讲一句顿一顿,或者一句话反 复琢磨半天,这样的话,虽然老师的出发点是好的,是为了让学生 更容易理解,但这样的话,教学的整体进度就下来了。而且就算是 一个知识点反复讲,也不见得能就精通了这个东西,或者说对这个 有多么理解。反而容易让学生产生一种懈怠的情绪。 一、第一件事:说话做事要有真凭实据 而这样一开始,老师就给我一种耳目一新的感觉:这老师上课带劲啊!不过也就仅此而已了。老师花了一下午的时间着重介绍了老师 所在的公司,以及我们接下来三周的实训计划。接下来一周实训之后,这个实训在老师的刻意营造下,尽量模仿公司的氛围。而让我 感受最受的就是:凭事实说话。就是无论要下什么结论的时候,都 要拿得出能够说服人的数据。 这是我在第一周中感受最深的一件事。也是我学到的第一件事。说话下结论要有真凭实据。 二、第二件事:专业技术的不断学习 在这一周中,老师着重讲了如何进行系统构架。因为之前也跟老师做过项目,所以对进行系统构架的理解要稍微深入些,对其重要

性的了解也要多一些。这样,在老师的讲解下,再和我以前的理解 相互验证,感觉就像武功高手,在前辈的点拨下顿悟了一样。 这就是我学到的第二件事,是在专业技能方面的收获。 三、第三件事:学会寻找动力 然后在接下来的一周中,这样的学习中老师让我们每组一个白板,然后把每天的任务完成情况着实记录。这样,不同的组之间要对比; 同组,不同的组员之间对比;自己今天和昨天的对比。无形中产生了 一种强大的推理,推动我们前进。 这是我学习到的第三件事:没有动力,就学会寻找动力,而比较,是最有效的激励。 四、第四件事:学会尊重别人,那样你也会获得别人的尊重 在第二周结束的时候,我们用来结束实训的一个项目就正式开始了。这个项目的时间很短,三天,如果算上上周末的时间的话,那 就是五天,但前一周的时间确实没有有效的利用起来。那么这样只 好算三天了。在这次项目中,我没有一个人大包大揽,一个人把项 目扛下来。因为之前跟老师做过项目,并且我也是小组负责人,虽 然作为这个小组负责人,我做的很不好,但有这样的一次经历之后,我知道我哪里做的不好,哪里有问题,虽然不会很全面,但至少有 一些努力的方向了。 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期 我通过的大量的AndroidSDK开发范例大全中的例子以及Android提 供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过 这些例子的学习我可以学习到了很多和以前java上相通的思想。 我在为期半个月的实习中学到了很多在课堂上根本就学不到的知识,收益非浅.现在我对这半个月的实习做一个工作小结。 1通过半个月的android实习,基本掌握了Android应用程序开 发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法 也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对

《Android应用开发》课程标准

《Android应用开发》 课程标准 内蒙古电子信息职业技术学院计算机科学系

一.课程设置概述 1.1课程在相关专业中的性质与定位 Android应用开发是物联网应用技术专业(应用开发方向)的核心课程之一,是Android应用程序开发方法的主要课程,是Android应用的主要领域。为了适应高职学生的学习情况,该课程以Android应用技术为重点,逐步阐述Android应用体系结构,介绍Android应用常见的几个功能。采用项目+案例教学法,既让学生掌握Android的基本知识,同时,也让学生在潜移默化中了解一些Android 的高级开发技术,从而为今后实现Android应用开发打下基础。 本课程的任务是使学生通过学习和操作实践,了解和掌握Android的主流应用技术及其开发方法,掌握Android的sdk、Activity、高级UI、网络、多媒体体方面的编程技术。为进一步学习移动互联工程师后续课程打下良好的理论和实践基础。 1.2 本课程的基本教学理念 (一)突出学生主体,注重技能培养,回归能力本位 Android应用开发是移动互联工程师的专业核心课程,注重软件开发基本理论、基本方法和基本技能的学习及素质教育,激发学生的学习兴趣,在启发、提示下使其自主地、全面地理解软件的基本理论和基本方法,提高学生的思维能力和实际操作技能,增强他们理论联系实际的能力,培养学生的创新精神,使学生养成观察、独立分析和解决问题的习惯;以提高技能、磨砺意识、活跃思维、展现个性和拓宽视野。 (二)尊重个体差异,注重过程评价,促进学生发展 本课程在教学过程中,倡导自主学习,启发学生对设定问题积极思考、分析,鼓励多种思维方式并将其表达出来,尊重个体差异。采用项目教学法进行教学,每个项目的成绩采取自评、互评、教师综合评价相结合的方式能激励学生的学习兴趣和自主学习能力的发展。教师在给学生评价成绩时应尽量以学习过程中的评价为主,注重培养和激发学生的学习积极性和自信心。最后期末的成绩评价应注重检测学生的知识应用能力。学生的最终课程成绩应由平时的各次项目成绩和期末的评定成绩按一定比例构成,在把握比例构成时要有利于促进学生的知识应用能力。建立以过程培养促进个体发展,以学生可持续发展能力评价教学过程的双向促进机制,以激发兴趣、展现个性、发展心智和提高素质为基本理念。 (三)整合课程资源,开放创新教学,拓展学习渠道 本课程在教学过程中,提醒学生留意观察并思考生活中接触的Android系统应用,鼓励其结合生活中熟悉的操作方法提出问题或假设,在教师引导下,通过分析、推理,使学生自主学习、总结,以便增强学生对Android开发方法基本理论的理解;通过课堂讲解与讨论、案例分析等促进学生对所学理论的理解和运用,以培 养其实际操作技能。充分利用现代教学手段,不断改进教学方式,突出典型案例

Android应用开发基础习题

-- 任务一Android 开发环境的搭建 第一部分知识回顾与思考 1.Android 的四层架构分别包括哪几层?分别起到什么作用? 答:Linux 内核层(Linux Kernel ):基于Linux 内核,内核为上层系统提供了系统服务。 系统库层(Libraries ):系统库基于C/C++ 语言实现,通过接口向应用程序框架层提供编程接口。 应用框架层(Application Framework ):为开发者提供了一系列的Java API,包括图形用户界面组件

View 、SQLite 数据库相关的API 、Service 组件等。 应用程序层(Applications ):包含了Android 平台中各式各样的应用程序。 第二部分职业能力训练 一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内) 1.Android 四层架构中,应用框架层使用的是什么语法?(C)A .CB .C++C.Java D.Android 2.Android 四层架构中,系统库层使用的是什么语法?(B)A .VBB.C /C++C.Java D .Android 3.应用程序员编写的Android 应用程序,主要是调用(B)提供的接口进行实现。 A .应用程序层DCB.应用框架层.应用视图层.系统库层

二、填空题(请在括号内填空) 1.在Android 智能终端中,有很多应用如拍照软件、联系人管理软件,它们都属于Android 的(应用程 序)层。 2.为了让程序员更加方便的运行调试程序,Android 提供了(模拟器),可以方便的将程序运行其上, 而不要实际的移动终端。 程序运行,我们需要安装(Java 3.为了支持)。JDK 三、简答题 1.简述Android 开发环境安装的步骤。 答:下载并安装JDK ,配置JDK 的环境变量; 从Anroid 官网上下载Android 开发组件(包含Eclipse 和

Android开发优势总结

Android开发优势总结 来源:扣丁学堂 目前市场上的移动端有两种形式,一种是Android开发,另一种是ios开发,其中Android开发方面的人员要多一些,今天我们就一起来看一下扣丁学堂Android培训讲师解读的Android开发的优势。 Android开发优势: 1、Android价格占优,价廉性能并不低 消费者选择产品,价格是必然要考虑的一大因素,iphone虽好,但是价格让一般人望而却步。苹果就像是宝马、奔驰,虽然大家都认为它很好,但是一般人消费不起,只有看的份。而Android,如同大众,满大街跑的都是,不仅如此,还有一些型号是可以与宝马、奔驰相媲美的。虽然Android平台的手机价廉,但是其性能却一点也不低廉,触摸效果并不比苹果差到哪里去。Android平台简单实用,无论是功能还是外观设计,都可以与苹果一决高下。当消费者考虑价格因素之后,在数量众多的android手机中,消费者总是会找到一款满意的Android手机取代价格高昂的 iPhone。 2、应用程序发展迅速 智能机玩的就是个应用,虽然现在Android的应用还无法与苹果相竞争,但是随着Android的推广与普及,应用程序数在成数量级增长,Android应用在可预见的未来是有能力与苹果相竞争的。而来自Android 应用商店最大的优势是,不对应用程序进行严格的审查,在这一点上优于苹果。 3、智能手机厂家助力 苹果的自我中心是它成功的一大法宝,从硬件到软件,到其独特的推广方式。苹果形成了一个很好的很完整的产业链。在一个封闭的圈子中创造一个又一个的奇想,让消费者的体验得到了很大的满足。但是这样并不能使其长期占据有利位置。现在,世界很多智能手机厂家几乎都加入了Android阵营,并推出了一系列的Android智能机。摩托罗拉、三星、HTC、LG、Lumigon等厂家都与谷歌建立了Android平台技术联盟。厂商加盟的越多,手机终端就会越多,其市场潜力就越大。 4、运营商的鼎力支持 在国内,三大运营商是卯足了劲的推出Android智能机。联通的“0元购机”,电信的千元3G,移动的索爱A8i定制机,都显示了运营商对Android智能机的期望。在美国,T-Mobile、Sprint、AT&T和Verizon 全部推出了Android手机。此外,日本的KDDI,NTT DoCoMo,Telecom Italia(意大利电信)、T-Mobile (德

《Android项目开发实训》项目总结报告

Android项目开发 实训报告 姓名: 赵炳 琪 学号: 140840131 专业: 软件技 术 项目名称: Android手机记账本 指导教 师:陈雪莲

实训日期:2016年10月30日至2016 年12月30日 2016年12月 25日

Android项目开发实训记录单

目录 第一章概述 (1) 第二章需求分析 (2) 2.1 项目背景 (2) 2.2 项目需求 (2) 第三章相关技术 (4) 3.1 Adnroid平台介绍 (4) 3.2 关键技术研究 (6) 第四章概要设计 (9) 4.1 系统体系结构 (9) 4.2 用户界面设计 (14) 4.2.1计算器界面 (14) 4.2.2小数点运算界面 (14) 4.2.3负数运算界面 (15) 4.2.4开方运算界面 (15) 第五章详细设计 (16) 5.1数据输入模块 (16) 5.2数据显示模块 (16) 5.3 数据计算功能模块 (16) 第六章结论 (26)

第一章概述 随着社会的发展,经济水平的提高,手机越来越普及。同时伴随着已送慧联网技术的发展,手机的功能也变得越来越丰富。从原来只具有简单通信功能的非智能手机到现在具有手机操作系统,除通话功能以外,还集上网、聊天、炒股、收发邮件等功能于一身的智能手机系统。 由Google公式牵头众多实力雄厚的软硬件厂商加盟商成立了OMS联盟,病退出的Android平台手机系统,作为时代的新生儿,Android手机操作平台有着得天独厚的优势广阔的发展前景。 而计算器作为现在人们日常生活中常用的一种工具也已经可以说是人们日常生活中必不可少的工具了。计算器的发展同样经历了漫长的过程,凝聚无数仙人的智慧,甚至连计算机的发展都可以说是源于计算器的发展。本程序正式基于Android平台开发的计算器。 本课题要求:设计一个基于Android的计算器的软件。实现的功能有: 具有基本的加、减、乘、除功能,能够判断用户输入运算数是否正确,支持小数运算,具有退格功能,能够删除最后一个输入,具有清除功能,即“C”。因为打开(ON)、关闭(OFF)屏幕按键的功能 需重点研究的关键问题:计算器的运算和显示问题。

基于android开发实验报告总结

基于android开发实验 报告总结 组员: 指导老师: 2016.12.15

目录 实验一 Android开发环境的搭建 (3) 1 实验目的及要求 (3) 2 实验设备(环境)及要求 (3) 3 实验内容 (3) 4 实验步骤 (3) 5 实验核心代码(关键代码),及调试中的问题 (4) 6 实验的运行结果及分析 (9) 3 实验设备(环境)及要求 (10) 实验三 GUI创建套件Widget的使用 (18) 1 实验目的及要求 (18) 2 实验设备(环境)及要求 (18) 3 实验内容 (19) 4 实验步骤 (19) 5 实验核心代码(关键代码),及调试中的问题 (19) 6 实验的运行结果及分析 (28) 实验四 SQLite应用 (29) 1 实验目的及要求 (29) 2 实验设备(环境)及要求 (30) 3 实验内容 (30) 4 实验步骤 (30) 5 实验核心代码(关键代码),及调试中的问题 (30) 6 实验的运行结果及分析 (41)

实验一 Android开发环境的搭建 1 实验目的及要求 1.搭建Eclipse+Android开发平台 2.创建简单的Android应用程序 3.创建Activity并利用intent的实现Activity的跳转 2 实验设备(环境)及要求 1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 3 实验内容 1)搭建Eclipse+Android开发环境 2)创建一个简单的”hello world”工程 3)创建两个Activity,实现简单的Activity之间的参数传递 4 实验步骤 1)下载安装JDK 1.6,配置环境变量,如果所示。

Android应用开发试题

Android应用开发试题 一、选择题(每题2分,共30分) 1. 下列不是手机操作系统的是?(D) A.Android B. Window Mobile C. Apple IPhone IOS D.windows vista 2.Android的VM虚拟机是哪个?A A.Dalvik B.JVM C.KVM D.framework 3. AndroidVM虚拟机中运行的文件的后缀名为(B) A.class B.apk C.dex D.xml 4. 下面关于Android DVM的进程和Liunx的进程,应用程序的进程说法正确的是 A.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例,而每一个DVM都是在Liunx中的一个进程,所以说可以认为是同一个概念。B B.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例,而每一个DVM不一定都是在Liunx 中的一个进程,所以说可以认为不是一个概念。 C.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,而每一个DVM不一定都是在Liunx中的一个进程,所以说可以认为不是同一个概念。 D.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,而每一个DVM都是在Liunx中的一个进程,所以说可以认为是同一个概念。 5. 下列哪个可做EditText编辑框的提示信息?(D) A. android:inputType B. android:text C. android:digits D. android:hint 6. 在AndroidManifes.xml中描述一个Activity时,该Activity的label属性是指定什么( B) A.指定Activity的图标 B.指定Activity的显示图标 C.指定Activity和类相关联的类名 D.指定该Activity的唯一标识 7. 关于ContentValues类说法正确的是( A ) A.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名是String类型,而值都是基本类型。 B.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名是任意类型,而值都是基本类型。 C.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名可以使空,而值都是String类型。 D.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名是String类型,而值也是String类型。 8. Activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行( A) A.onPause() B.onCreate() C.onResume() D.onStart 9. 下列哪个不是Activity的生命周期方法之一?(B) A. onCreate B. startActivity C. onStart D. onResume 10.如果在android应用程序中需要发送短信,那么需要在AndroidManifest.xml文件中增加什么样的权限( D). A.发送短信,无需配置权限

android开发试用期工作总结

android开发试用期工作总结篇一:android软件开发工程师转正个人总结 个人总结 我于XX年8月13日进入公司,根据公司的需要,目前担任Android软件工程师一职,负责综合代维,考务通手机客户端的开发工作。将近3个月的时候在这个新的工作环境我收获颇深。开始让我独立完成整个项目,这还是我的第一次,之前在公司是多人完成,过程中也遇到了许多困难,但是都一一解决了,我想这是我最宝贵的经历,通过三个月的不断学习,在项目开发中的不断锻炼以及同事、领导的帮助,我已逐渐融入这个大家庭,个人的工作技能也有了明显的提高,虽然仍有一些不足,但三个月以来我付出了不少,也收获了不少,我感觉自己成长了,也逐渐成熟了。 初到公司,加入了咨询与信息化部,加入了综合代维项目组,我也曾担心自己不知道该怎么与项目组的同事沟通,担心不知道怎么做好工作,但是项目组的前辈们都很亲切,也很耐心的教导我,解答我的疑问,以及他们团结向上的精神,让我很快的熟悉了工作,融入了项目组。 在这三个月的学习和工作中,我一直严格要求自己,遵循公司的规章制度,认真完成领导布置的每一项任务,遇到

的问题虚心的向项目组的前辈们学习、请教,不断的提高、充实自己。开发过程中出现的一些差错,也有前辈们耐心的指出和指导我修改,这些经历让我不断成熟,处理问题时考虑得更全面,杜绝类似情况的发生。在此我要特地感谢部门的领导和同事们对我的指引和帮助,感谢他们对我工作上失误的提醒和指正。 经过这三个月,我已经能独立进行开发任务,按时按质的完成分配的工作任务,当然还有许多不足,开发的经验仍有待提高,编写代码的简洁性和完整性也需要进一步增强,需要不断的继续学习以提高自己的工作能力。 总之,这三个月来我学到了很多,感悟了很多;看到公司的迅速发展,看到部门的同事越来越多,我深深地感到骄傲和自豪,也更加迫切的希望以一名正式员工的身份在这里工作,实现自己的奋斗目标,体现自己的人生价值,和公司一起成长。 我会用谦虚的态度和饱满的热情做好我的本职工作,为公司创造价值,同公司一起展望美好的未来! XX XX年11月13日 篇二:软件开发,试用期工作总结

Android程序员转正工作总结

Android程序员转正工作总结 Android程序员转正工作总结 我于xxxx年9月11日成为本公司技术部的一名.net程序员,三个月的试用期转眼就过去了。这段我人生中弥足珍贵的经历,给我留下了精彩而美好的回忆。在这段时间里您们给予了我足够的关怀、支持和帮助,让我充分感受到了领导们海纳百川的胸襟,在对您们肃然起敬的同时,也为我有机会成为影响力在线的一员而惊喜万分。 这段时间,在领导和同事们的关怀和指导下,我通过不懈努力,各方面均取得一定的进步,现将我的工作情况做如下汇报: 一、通过理论学习和日常工作积累经验我的各方面有了很大的进步。 刚到公司不久,我便开始负责.NET方面的网站开发和广告平台开发和维护,刚开始的时候对我来说确实压力很大,因为各方面都还不熟悉,而且与之前的公司相比,节奏也有点快,不过我慢慢的习惯了环境,和同事相处的比较融洽,领导对我也比较关心,在公司里工作就像是在一个幸福的大家庭里一样,我很快喜欢上了这里。 我到公司不久,第一个项目是xxx公司网站,做这个项目的时候我遇到了几个问题,我在以前公司做的时候没有在这么短的时候完成一个项目的,在效率上提高了我的能力。做这个项目的时候我也遇到了许多以前没有遇到过的问题,

我请教同事和朋友,还有借助网络一一解决了难题。 之后,我将B2B广告招商平台进行了改版,开发了xxx 智能建站广告平台以及以后网站的维护工作。 接下来,我又做了一个比较棘手的项目xxx在线咨询系统。为什么说棘手呢,因为我以前没有做过这方面的项目,而且我问遍了所有认识的朋友,搜遍了网络也没有找到如何解决的方法,之后我翻书籍,接着搜索网络。功夫不负有心人,终于我找到一个聊天室的小例子,但是功能差的太远,于是我把这个示例一点点的研究,从一点也不懂到后来慢慢看懂,从对AJAX技术一无所知到基本熟练运用。接下来我就开始自己开发,到最后终于把它开发了出来,虽然不是很完美,功能不是很强大,但是它是我辛苦的劳动结晶,我相信以后会把它开发的更强大,更完美。 二、明确岗位职能,认识个人技术能力不足。 经过三个多月的工作,虽然完成了一些项目的开发,我的技能也提高了很多,但是感觉我的技术还有待提高,所以我会在以后的工作中更加努力,努力提高自己的技术和各种不足,努力使自己成为一名称职的职员。 三、提出自己努力计划 1、学无止镜,时代的发展瞬息万变,各种学科知识日新月异。我将坚持不懈地努力学习各种技术知识,并用于指导实践。 2、业精于勤而荒于嬉,在以后的工作中不断学习知识,通过多看、多学、多练来不断的提高自己的各项技能。

android应用技术简介

Android技术应用简介 摘要:近几年来,Android逐渐成为便携设备上的主要操作系统。2011年Android 在全球的市场份额首次超过塞班系统,跃居全球第一。本文主要通过阐述Android的主要思想、发展状况以及核心技术来使读者对Android有一个初步的认识。 关键词:Android、linux、NDK、google 这学期我们开设了《Android应用程序开发》这门课程。这么课程开始的时候同学们都很兴奋。因为Android在现在是最为流行的操作系统。同学们大部分用的手机都是Android操作系统。所以对它的名字非常熟悉,但是对它的真正意义和具体是如何实现Android应用程序却十分陌生。同学们都希望了解到自己的手机上的应用程序到底是如何实现其功能的。所以对这门课程产生了极大的兴趣。 这门课程主要给我们介绍了Android开发环境、应用程序、生命周期、用户界面、组件通信与广播信息、后台服务、数据存储与访问、位置服务与地图应用、Android NDK开发这9个方面的内容。让我们对Android有一个初步的认知。这本书上的内容仅仅是Android程序开发的一小部分,是引导我们正确看待Android。在今后的学习中还需要我们多看关于Android的书籍,关注Android 各方面的消息,多做关于Android的实验和课题。这样才能进一步了解这个当今全球最为流行的操作系统。 1、Android简介 Android是一种以linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由google 收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。 Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。 Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android 应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。 在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:QT(qt for android)、Mono(mono for android)等一些著名编程框架也开始

Android项目开发报告

目录 1 项目简介 (2) 2 开发环境 (2) 2.1Android 平台结构介绍 (2) 22 MVC 框架 (3) 3 功能介绍 (3) 3.1 登录 (3) 3.2 注册 (3) 3.3添加 (4) 3.4 查询 (5) 3.5主页面 (6) 4 数据库结构 (7) 4.1 数据表设计 (7) 5 项目结构 (7) 5.1 src 文件夹 (7) 52 gen 文件夹 (7) 5.3 libs 文件夹 (8) 5.4 bin 文件夹 (8) 5.5 res 文件夹 (8) 5.6 AndroidManifest.xml (8) 6 项目总结 (8)

Android 项目开发报告 1 项目简介 本次中软培训主要是关于android 的基本应用开发,培训的任务主要是开发一个与日常生活花费有关的现金日记账软件,由于时间紧张此软件只实现了登录、注册、添加、查询等功能,未涉及细节处理。此次项目开发主要是帮助大家培养理财观念,清楚直白的了解每笔前是怎么消费,何时消费掉的,利于节约一部分开支。 2 开发环境 2.1Android 平台结构介绍 Android 系统架构和其操作系统一样,采用了分层的架构。Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux 核心层。 开发人员可以完全访问核心应用程序所使用的API 框架。该应用程序的架构设计简化了组件的重用。任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。 应用程序。Android 会同一些核心程序包一起发布,包括日历、地图、浏览器等。所有的应用程序均是用Java 语言编写。 应用程序框架。这种框架可以使开发人员可以完全的访问核心程序所使用 的API 框架,简化了组件的使用。同时也使用户可以方便的替换程序组件。 系统运行库。An droid包含一些C/C++库,这些库能被An droid系统中不同的组件使用。一般情况下如果要将Android 移植到其他硬件去运行,只需要实现这部分代码即可。Android 也包括了一个核心库,该核心库提供了Java 编程语言核心库的大多数功能。 Linux 内核。Android 的核心系统服务依赖于Linux 2.6 内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。2.2 MVC 框架 MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制

android项目实训心得体会

android项目实训心得体会 时间总是在不经意间悄然离去,在这短短的10天实训里,让我学会了很多课堂中学不到的东西。虽然只有10天,但让我感觉到无比的充实,让我懂得了学习的意义,时间的宝贵,认真负责的生活态度。明白了做一件事不肯能是一帆风顺,没有困难就没有进步,勇敢和坚持将会带领我们走向成功的驿站。也许这只是一次很小的成功,也会让我感到欣慰,因为我成功了。简单的去做好一件小事,铸就未来巨大的成功。 在这次实训中和队友一起完成一个项目,从开始的无从下手,到初见雏形,再到基本完善。这一幕幕的画面,让人无不对自己所做的标示认可与自豪。在那一行行代码间,流露出来的不只是大家对它付出的汗水,还有那份执着的心。 那天,我们吃着泡面坐着火车和地铁以及公交,不远千万厘米来到这环境清幽,绿化十足的圣地。实训基地虽有些简单,但宽敞明亮的场所让我们不由喜欢。在实训中,回味了曾经的对安卓的“味道”,又对新配方得产生了兴趣。安卓这道菜,想想都醉了。这次实训项目我们做的是个关于点餐类的APP。起初,强大的功能让我们这群菜鸟无从下嘴。但在我们这群崛起的码农面前,这次都不是问题。经过我们七嘴八舌的商讨下,最终确立了需求。需求就像我们人生的航标一样,有了它,我们的开发才有方向,不然都是无用的。每天我们制定开发计划,一小步一小步的走,一行一行慢慢的写。看着一个个小小功能的实现与完善,我们都对他竖起大拇指。

相信队友,这是我在此次实训中悟出来的一点体会。也许他平 日里不怎么优秀;也许他对开发不怎么会;也许他有一些懒惰。但我们都要相信他可以的。作为团队开发类项目,我们不能一个人什么都做完,这样其他人体会不到团队价值,这不利于项目的团队开发。我们要让每个人都有事做,并且要做好。 在这次实训中,我主要学到很多关于安卓界面布局的一些基础 知识。还有关于选项卡以及适配器和SQLite的一些简单操作。在此 次实训中,最主要的是让我的懂得了学习的意义和态度。当自己全身心投入代码的世界中时,时间似乎是静止的。当老师笑着说:“吃饭了…..”。才发现一上午就没了。这种忘我的学习态度,让人倍感兴奋。 此次实训,让我受益匪浅。在今后的工作和学习中用积极主动 的态度去对待,那将是一件美妙的事情。做一个迎难而上的自己,不断完善自己,突破自己。最后感谢在这次实训中无私的照顾我们的老师们,谢谢你们。 时间飞快,转眼毕设实训已经结束,我们也完成了所选的项目 任务。从实训开始到现在,经历了三个多月的时间,在这段时间里,我们着手安卓应用程序开发,刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接 比较零散,不过通过这些例子的学习我可以学习到了很多和以前java

《Android应用开发》个人总结报告

《Android应用开发》个人总结报告 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想,因为Android在现在也是全新的技术和框架,在其中我也学到了如何用单例模式、工厂模式等常用的设计模式进行学习,通过API进行开发客户端,对Request发送,Response处理中通过比较方便的JSON对象传输,以及对XML、JSON、图片、业务等下载处理,对API接口调用等问题处理。 首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过include进行引入,和jsp、html也有相通的地方,同样在android上可以用到自定义的样式这和css也有比较相通的地方,我们可以通过一些公用的方法写个BaseActivity这个基类,通过继承方式比较不错的实现了Activity的界面,因为这样你可以Header(头部)和Footer(尾部)进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的include进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现View或者Layout等类进行扩充项目需 要的布局(或者控件) ,在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout 文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的跳转Intent管理,通过Bundle对数据在界面之间进行传输。 Android的界面显示同样也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的样式来做的。具体细节不想说了,可以参考Samples里的ApiDemos/View,和View的Doc,以及Implementing a 页脚内容1

相关文档
最新文档