Android手机开发厦门大学数据库实验室报告人:谢荣东导师:林子雨2014年8月30日纲要•Android概述•平台架构•重要组件•开发环境介绍•HelloWorld!•Demo演示Android概述•Android手机操作系统是2007年11月5日由美国Google公司基于Linux整合开发的嵌入式系统,后开源并由后由开放手机联盟OpenHandsetAlliance)开发。在全世界范围内,Moto、HTC(多普达)、联想、三星等众多公司都已经推出Android手机产品和上网本产品,而且有越来越多加速上升的趋势。Android大事件2005•Google收购了成立仅22个月的高科技企业Android2007•11月5日,谷歌公司正式向外界展示Android操作系统2008•9月22日,谷歌正式对外发布第一款Android手机——HTCG1•9月23日,谷歌发布Android1.0Android大事件2009•4月3日,Android1.5正式发布•9月25日,Android1.6正式发布•10月28日,Android2.0智能手机操作系统正式发布2010•5月19日,Google正式对外发布Android2.2智能操作系统•12月7日,Google正式发布Android2.3操作系统2011•2月2日,Android3.0正式发布•2月3日,谷歌发布了专用于平板电脑的Android3.0蜂巢系统•10月19日,谷歌正式发布Android4.0操作系统2012•1月4日,AndroidMarket上的应用程序数量突破40万个,每4个月增加10万个应用程序•3月1日,Google对外宣布,AndroidMarket的累计下载量已经突破130亿次纲要•Android概述•平台架构•重要组件•开发环境介绍•HelloWorld!•Demo演示平台架构Linux核心层•Android基于Linux2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。LinuxKernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。Libraries类库层•Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(applicationframework)暴露给开发者。AndroidRuntime•核心库:提供大部分在Java编程语言核心类库中可用的功能•虚拟机:专为移动设备优化过的虚拟机,每一个Android应用程序是Dalvik虚拟机中的实例ApplicationFramework•通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。•简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)Application应用层•Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置等•所有应用程序都是用Java编程语言写的•开发我们自己的手机应用,ruready?纲要•Android概述•平台架构•重要组件•开发环境介绍•HelloWorld!•Demo演示重要组件Services(服务)BroadcastReceivers(广播接收器)Notifications(通知)……Intents(意图)Content(内容)Activities(活动)应用程序的显示层。每一个画面对应于你的应用程序,将会是Activity类的扩展。Activity使用Views去构建UI来显示信息和响应用户的行为。就桌面开发而言,一个Activity相当于Form用户通知的框架。Notification用来在不需要焦点或不中断它们当前Activity的情况下提示用户。它们是Service或BroadcastReceiver获得用户注意的首选方式。例如,当设备收到文本信息或外部来电时,它通过闪光,发声,显示图标或显示对话框信息来提醒你。Android应用程序中不可见的“工人”。Service组件运行时不可见,但它负责更新的数据源和可见的Activity,以及触发通知。它们常用来执行一些需要持续运行的处理。类似于windows的系统服务重要组件Services(服务)BroadcastReceivers(广播接收器)Notifications(通知)……Intents(意图)Content(内容)Activities(活动)Intent广播的“消费者”。通过创建和注册一个BroadcastReceiver,应用程序可以监听符合特定条件的广播的Intent。BroadcastReceiver会自动的启动你的Android应用程序去响应新来的Intent。BroadcastReceiver是事件驱动程序的理想手段。提供共享的数据存储。ContentProvider(内容提供器)用来管理和共享应用程序的数据库。在应用程序间,ContentProvider是共享数据的首选方式。这意味着,你可以配置自己的ContentProvider去存取其他的应用程序或者通过其他应用程序暴露的ContentProvider去存取它们的数据。Android设备本身包含了几个ContentProvider来访问像联系人信息等有用的数据库。简单的消息传递框架。使用Intent,你可以在整个系统内广播消息或者给特定的Activity或者服务来执行你的行为意图。系统会决定那个(些)目标来执行适当的行为。重要java包•android.app:提供高层的程序模型、提供基本的运行环境•android.content包含各种的对设备上的数据进行访问和发布的类•android.database:通过内容提供者浏览和操作数据库•android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.•android.location:定位和相关服务的类•android.media:提供一些类管理多种音频、视频的媒体接口•android.net:提供帮助网络访问的类,超过通常的java.net.*接口•android.os:提供了系统服务、消息传输、IPC机制•android.opengl:提供OpenGL的工具,3D加速•android.provider:提供类访问Android的内容提供者•android.telephony:提供与拨打电话相关的API交互•android.view:提供基础的用户界面接口框架•android.util:涉及工具性的方法,例如时间日期的操作•android.webkit:默认浏览器操作接口•android.widget:包含各种UI元素(大部分是可见的)在应用程序的屏幕中使用常见界面控件•TextView•EditText•Button•ImageButton•Checkbox•RadioButton•Spinner•ListView•TabHost常见布局•LinearLayout线性布局•垂直、水平•RleativeLayout相对布局•相对于另一个控件或容器的布局•TableLayout表格布局•类似于html中的table布局•FrameLayout帧布局•AbsoluteLayout绝对布局纲要•Android概述•平台架构•重要组件•开发环境介绍•HelloWorld!•Demo演示开发环境搭建安装JDK(需要1.5+)安装Eclipse安装AndroidSDK安装Eclipse插件ADT(AndroidDevelopmentTools)重启Eclipse,配置androidSDK路径安卓模拟器安卓模拟器(AVD):Android为开发人员提供了可以在电脑上直接调试应用程序的虚拟设备AVD(AndroidVirtualDevice)。使用AVD可以方便地对应用程序进行调试程序调试DDMS•DDMS是DalvikDebugMonitorService的简称,主要功能是监控应用程序的运行并打印日志、模拟电话打入与接听、模拟短信的收发、虚拟地理位置等。有了DDMS的帮助,可以大大降低应用程序的测试成本。纲要•Android概述•平台架构•重要组件•开发环境介绍•HelloWorld!•Demo演示Helloworld!•新建Android工程•选择支持的android版本•确认源代码编译后的class资源文件夹图像文件布局文件字符串资源功能清单文件源代码•文件位置:Src/com.huaxia.Helloworld.java•代码:•publicclassHelloworldextendsActivity{/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);}}布局文件•Res/layout/main.xml?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=:orientation=verticalandroid:layout_width=fill_parentandroid:layout_height=fill_parentTextViewandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:text=@string/hello//LinearLayout采用类似于HTML一样的布局文件,将展现和代码分离LinearLayout(线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)字符串资源•Res/values/strings.xml•?xmlversion=1.0encoding=utf-8?resourcesstringname=helloHelloWorld,华夏!/stringstringname=app_nameHelloworld/string/resources•类似于struts的国际化资源文件。•借助于apktool等工具,可以对非汉化版的apk包中的values目录下的资源文件进行汉化后重新打包,完成程序汉化AndroidManifest.xml?xmlversion=1.0encoding=utf-8?manifestxmlns:android==com.huaxiaandroid:versionCode=1android:versionName=1.0uses-permissionandroid:name=android.permission.INTERNET/uses-permissionandroid:name=android.permission.CALL_PHONE/applicationandroid:icon=@drawable/iconandroid:label=@string/app_nameactivityandroid:name=.Helloworldandroid:label=@string/app_nameintent-filteractionandroid:name=android.intent.action.MAIN/