1 / 38

智能手机应用开发

智能手机应用开发. based on android 201 2 .5. 内容包括:. 1 、 Android 平台概述 2 、搭建 Android 开发环境 3 、第一个 Android 应用程序 4 、 Android 用户界面设计 5 、 Activity 、 Intent 、 Service 、 Broadcast Receiver 6 、 Android 中的数据存取 7 、 Android 实验设计. 用户界面. 数据存取. 平台综述 开发环境. 网络连接. 程序结构. 硬件访问. 图形编程. 课程结构.

osanna
Download Presentation

智能手机应用开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 智能手机应用开发 based on android 2012.5

  2. 内容包括: 1、Android 平台概述 2、搭建 Android 开发环境 3、第一个 Android 应用程序 4、Android 用户界面设计 5、Activity、Intent、Service、Broadcast Receiver 6、Android 中的数据存取 7、Android 实验设计

  3. 用户界面 数据存取 平台综述 开发环境 网络连接 程序结构 硬件访问 图形编程 课程结构 • 开放手机联盟(OHA) • Android 平台综述: • 平台介绍、开发者社区 • 开发环境: • 构建 Android 开发环境 • 应用程序: • 应用程序结构 • 典型应用: • 用户界面、图形编程 • 数据存取、网络连接 • 硬件访问

  4. 获取 Android 资料的途径 • http://developer.android.com • http://androidappdocs.appspot.com • 下载 sdk 等相关软件 • 查看文档 • 在线帮助 • 开发社区 • 国内需要代理才能访问 • http://www.android123.com.cn/ • news • sdk下载 • 开发FAQ、源码下载 • 移植

  5. 3、第一个 Android 应用程序 on android

  6. Android 模拟器 • Android Emulator • 可模拟电话本、通话等功能 • 内置的浏览器和 Google Maps 都可以联网 • 可以使用键盘输入(不包括小键盘) • 可使用模拟器按键、键盘输入 • 可以使用鼠标单击、拖动屏幕进行操作

  7. Android 模拟器 • Android 模拟器和真机的不同之处 • 不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼入和呼出 • 不支持USB连接 • 不支持相机、视频捕捉 • 不支持音频输入,但支持输出 • 不支持扩展耳机 • 不能确定连接状态 • 不能确定电池电量水平和交流充电状态 • 不能确定 SD 卡的插入/弹出 • 不支持蓝牙 • 模拟器在上位机上产生的 .tmp 文件需要手工清理

  8. Android 虚拟机 Dalvik • Dalvik 和标准 Java 虚拟机(JVM)首要差别 • Dalvik 基于寄存器,相对于基于数据栈的 JVM,能够更快的编译较大的应用程序 • Dalvik 和 JVM 运行环境的区别 • Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例 • 每一个 Dalvik 应用作为一个独立的 Linux 进程执行,可防止在虚拟机崩溃的时候所有应用都被关闭 • Dalvik 提供一个拥有较少限制许可证的平台

  9. Android 中重要的包 • Android.app :提供高层的程序模型、提供基本的运行环境 • Android.content :包含各种的对设备上的数据进行访问和发布的类 • Android.database :通过内容提供者浏览和操作数据库 • Android.graphics :底层的图形库,可以将它们直接绘制到屏幕上. • Android.location :定位和相关服务的类 • Android.media :提供一些类管理多种音频、视频的媒体接口 • Android.net :提供帮助网络访问的类,超过通常的 java.net.* 接口 • Android.os :提供了系统服务、消息传输、IPC 机制 • Android.opengl :提供 OpenGL 的工具 • Android.provider :提供类访问 Android 的内容提供者 • Android.telephony :提供与拨打电话相关的 API 交互 • Android.view :提供基础的用户界面接口框架 • Android.util :涉及工具性的方法,例如时间日期的操作 • Android.webkit :默认浏览器操作接口 • Android.widget :各 UI 元素(多数可见)在应用程序屏幕中使用

  10. Android 的文件格式 • java 文件:应用程序源代码 • android 本身相当一部分都是用 Java 编写而成 • android 的应用程序使用 Java 来开发 • class 文件:Java 编译后的目标代码 • Google 使用 Dalvik 来运行应用程序 • Android 的 class 文件是编译过程中的中间目标文件,需要链接成 dex 文件才能在 Dalvik 上运行

  11. dex 文件:Android 平台上的可执行文件 • Dalvik 虚拟机执行的是 dex 格式字节码,并非 Java 字节码 • 在编译 Java 代码之后,通过 Android 提供的 Dx 工具可以将 Java 字节码转换成 dex 字节码 • Dalvik 针对手机应用、嵌入式 CPU 做过优化,可以同时运行多个 VM 实例而不占用过多系统资源

  12. apk 文件:Android 上的安装文件 • apk 是 Android 安装包的扩展名,安装包内包含了与该 Android 应用程序相关的所有文件 • Android 将 AndroidManifest.xml 文件、应用程序代码(.dex文件)、资源文件和其他文件打成一个压缩包,即 .apk • apk 文件的本质是一个压缩包,一个工程只能打进一个 .apk 文件

  13. Adroid 应用

  14. Activity:活动 • Android 应用程序中最基本的组件,应用程序中一个Activity 通常就是一个单独的屏幕 • 每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应 • 大多数的应用是由多个屏幕显示组成

  15. 示例:Hello world! on android

  16. HelloWorld • Eclipse 下自动生成 • new android project → HelloWorld

  17. HelloWorld.java • Java 程序 package test.helloworld; import android.app.Activity; import android.os.Bundle; 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); } } 返回

  18. R.java • Java 程序 /* AUTO-GENERATED FILE. DO NOT MODIFY. */ package test.helloworld; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } } 返回

  19. main.xml • 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> Resources 返回

  20. strings.xml • xml 文件 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, everyone!</string> <string name="app_name">HelloWorld</string> </resources> 显示内容: Hello World, everyone!

  21. AndroidManifest.xml • xml 文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=“http://schemas.android.com/apk/res/android” package="test.helloworld“ android:versionCode="1"android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <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> 返回

  22. RUN RUN

  23. 模拟器运行 显示内容: Hello World, everyone!

  24. 命令行方式 • 首先启动模拟器 emulator -avd SDK_2.1_Update1_API_7 • 然后连接模拟器: telnet localhost 5554 • 接下来,就可以拨打电话: gsm call 10086 • 或者是发送短信: sms send 10086 messageform10086 • 另:adb kill-server:关掉现有 adb Server adb devices:显示运行中的设备

  25. 屏幕分辨率 • 入门级的: QVGA(320x240) • 主流的: HVGA(480x320) • 主流的: WVGA800(800x480) • moto特有的: WVGA854(854x480) • 魅族 M9: 960x640 • 三星 Galaxy Tab P1000:1024x600(7 寸屏) • 基准分辨率: VGA(640x480) • HVGA-L 或是 -P:横屏、竖屏 • 模拟器的默认分辨率依 SDK 版本而不同

  26. Android project 的目录结构 文件夹 src 文件夹 gen 文件夹 Android 2.1-update1 文件夹 assets 文件夹 res AndroidManifest.xml default.properties proguard.cfg • 项目 HelloWorl :

  27. Android project:src • 该文件夹是存放项目的源代码。新建项目时,系统生成了一个 HelloWorld.java 文件,它导入了两个类 android.app.Activity 和 android.os.Bundle,HelloWorld 类继承自 Activity 且重写了 onCreate 方法。 • @Override:在方法前面加上 @Override 系统可以帮助检查方法的正确性。 • 例如,public void onCreate(……){……} 这种写法是正确的,如果写成 public void oncreate(……){……} 这样编译器会报错——The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写 onCreate 方法。如果不加 @Override,则编译器会认为是新定义了一个方法 oncreate,检测不出书写错误。

  28. android.app.Activity 类:因为几乎所有的 Activity 都是与用户交互的,所以该类关注创建窗口,可以用方法 setContentView(View) 将自定义的 UI 放到 Activity 里面。 • 有两个方法是几乎所有的 Activity 子类都实现的: onCreate(Bundle):初始化 Activity,用布局资源(layout resource)调用 setContentView(int) 方法定义 UI(main.xml)。 onPause():处理当离开该 Activity 时要做的事情,用户做的所有改变应该在这里提交(通常 ContentProvider 保存数据)。

  29. android.os.Bundle 类:从字符串值映射各种可打包(Bundle:捆绑)的(Parcelable)类型 • 例如该类提供了公有方法:public boolean containKey (String key),如果给定的 key 包含在 Bundle 的映射中返回 true,否则返回 false。

  30. Android project:gen • 该文件夹下面有一个项目创建时自动生成并实时更新的 R.java文件,这个文件是只读的,不允许修改。 • R.java 文件中定义了一个类 R,类中包含很多静态类,且静态类的名字都与 res 中的一个名字对应,即 R 类定义了 res 目录下所有资源的索引。 • 通过 R.java 程序可以很快地查找到需要的资源,另外通过检查 R.java 列表,编译器不会将没有被使用到的资源编译进应用程序包中,以减少手机中的空间占用。

  31. R:资源索引类

  32. Android project:Android 2.1-update1 • 该文件夹下包含 Java 归档文件 android.jar,包含了构建项目所需的所有的 Android SDK 库和 APIs。 • 通过 android.jar 将应用程序绑定到 Android SDK 和 Android Emulator,这使得项目可以使用所有 Android 的库和包,并且可以在适当的环境中调试。 • 例如 HelloWorld.java 通过下面两行代码从 android.jar 导入了两个包: import android.app.Activity; import android.os.Bundle;

  33. Android project:res • 资源目录,包含项目中的资源文件并将其编译进程序包中。向此目录添加资源时,会被 R.java 自动索引。 • res 中默认有三个子目录:drawabel、layout、values • drawabel:包含应用程序可以用的图标、图像文件(*.png、*.jpg) • layout:界面布局文件(main.xml)等 • values:项目中所需要显示的各种文字。可以存放多个*.xml文件,还可以存放不同类型的数据,如 arrays.xml、colors.xml、dimens.xml、styles.xml

  34. Android project:assets • 该文件夹包含项目所需要使用到的诸如 mp3、视频文件,存放的也是资源文件。 • 与 res 文件夹存放的资源不同的是,assets 内的资源文件不会被 R 类索引,不能使用 R 的成员引用方式进行访问。

  35. Android project:AndroidManifest.xml • 项目的总配置文件,存储整个项目的配置数据,记录了应用程序中所使用的各种组件,列出了应用程序所提供的功能,指出了应用程序使用到的服务(如电话、互联网、短信、GPS 等) • 应用程序添加新的 Activity 时,也需在此注册后才能调用 • AndroidManifest.xml包含如下设置: application、permissions、Activities、Intent filters 等

  36. Android project:default.properties • 由 Android Tools 自动生成,不允许修改 • 文件中记录了项目中所需要的环境信息,比如Android API 的最低兼容版本等 • 项目 HelloWorld 的 default.properties 文件代码如下所示: # Project target. target=android-7

  37. Android project:proguard.cfg • proguard 是 Java 类文件的压缩、优化、混淆器,用于删除没有用的类、字段、方法与属性,以使字节码达到最大程度地优化 • 作为配置文件,proguard.cfg 是 \android-sdk-windows\tools\lib\ 目录下的同名文件的副本 • proguard.cfg 是在Android SDK 升级到 2.3 版后才出现的,同样不需要手工修改

  38. thanks

More Related