300 likes | 473 Views
Android 手机开发. 厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014 年 8 月 30 日. 纲要. Android 概述 平台架构 重要组件 开发环境介绍 Hello World! Demo 演示. Android 概述. Android 手机操作系统是2007年11月5日由美国Google公司基于Linux整合开发的嵌入式系统,后开源并由后由开放手机联盟Open Handset Alliance)开发。在全世界范围内,Moto、HTC(多普达)、联想、三星等众多公司都已经推出Android手机产品和上网本产品,而且有越来越多加速上升的趋势。.
E N D
Android手机开发 厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
纲要 • Android概述 • 平台架构 • 重要组件 • 开发环境介绍 • Hello World! • Demo演示
Android概述 • Android 手机操作系统是2007年11月5日由美国Google公司基于Linux整合开发的嵌入式系统,后开源并由后由开放手机联盟Open Handset Alliance)开发。在全世界范围内,Moto、HTC(多普达)、联想、三星等众多公司都已经推出Android手机产品和上网本产品,而且有越来越多加速上升的趋势。
纲要 • Android概述 • 平台架构 • 重要组件 • 开发环境介绍 • Hello World! • Demo演示
Linux核心层 • Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
Libraries类库层 • Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。
Android Runtime • 核心库:提供大部分在Java编程语言核心类库中可用的功能 • 虚拟机:专为移动设备优化过的虚拟机,每一个Android应用程序是Dalvik虚拟机中的实例
Application Framework • 通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。 • 简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)
Application应用层 • Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置等 • 所有应用程序都是用Java编程语言写的 • 开发我们自己的手机应用,r u ready?
纲要 • Android概述 • 平台架构 • 重要组件 • 开发环境介绍 • Hello World! • Demo演示
重要组件 Intent广播的“消费者”。通过创建和注册一个Broadcast Receiver,应用程序可以监听符合特定条件的广播的Intent。Broadcast Receiver 会自动的启动你的Android应用程序去响应新来的Intent。Broadcast Receiver是事件驱动程序的理想手段。 提供共享的数据存储。Content Provider(内容提供器)用来管理和共享应用程序的数据库。在应用程序间,Content Provider是共享数据的首选方式。这意味着,你可以配置自己的Content Provider去存取其他的应用程序或者通过其他应用程序暴露的Content Provider去存取它们的数据。Android设备本身包含了几个Content Provider来访问像联系人信息等有用的数据库。 简单的消息传递框架。使用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概述 • 平台架构 • 重要组件 • 开发环境介绍 • Hello World! • Demo演示
安卓模拟器 安卓模拟器(AVD): Android 为开发人员提供了可以在电脑上直接调试应用程序的虚拟设备 AVD(Android Virtual Device)。使用 AVD可以方便地对应用程序进行调试
程序调试DDMS • DDMS 是 Dalvik Debug Monitor Service的简称,主要功能是监控应用程序的运行并打印日志、模拟电话打入与接听、模拟短信的收发、虚拟地理位置等。有了 DDMS 的帮助,可以大大降低应用程序的测试成本。
纲要 • Android概述 • 平台架构 • 重要组件 • 开发环境介绍 • Hello World! • Demo演示
Hello world ! • 新建Android工程 • 选择支持的android版本 • 确认 源代码 编译后的class 资源文件夹 图像文件 布局文件 字符串资源 功能清单文件
源代码 • 文件位置:Src/com.huaxia.Helloworld.java • 代码: • public class Helloworld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
布局文件 • Res/layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> 采用类似于HTML一样的布局文件,将展现和代码分离 LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)
字符串资源 • Res/values/strings.xml • <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, 华夏!</string> <string name="app_name">Helloworld</string> </resources> • 类似于struts的国际化资源文件。 • 借助于apktool等工具,可以对非汉化版的apk包中的values目录下的资源文件进行汉化后重新打包,完成程序汉化
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.huaxia" android:versionCode="1" android:versionName="1.0"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Helloworld" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>