《智能手机应用开发基础.ppt》由会员分享,可在线阅读,更多相关《智能手机应用开发基础.ppt(73页珍藏版)》请在三一办公上搜索。
1、智能手机应用开发基础兰州大学移动联合实验室,2011.11,主要内容,智能手机是什么,智能手机有哪些,智能手机的操作系统,OHA Android,Android 应用编程实例,智能手机(Smartphone),智能手机的特点具备普通手机的全部功能,如正常的通话、收发短信等具备无线接入互联网的能力,即支持GPRS/CDMA1X/3G网络 具备PDA的功能,包括个人信息管理、日程记事、多媒体应用等具备一个具有开放性的操作系统,扩展性能强,可安装更多的第三方应用程序具有人性化的一面,可根据个人需要定制机器功能,智能、非智能,具备中央处理器(CPU)的,未必就是智能手机联发科 MTK6225:内核:A
2、RM ARM7EJ-S主频:104MHzTI OMAP4430:内核:ARM Cortex-A9 MPCore+PowerVR SGX540 主频:1GHz,安装有操作系统(OS)的,未必就是智能手机S40、Nucleus:简单易用几乎没有什么扩展能力Android、iOS、Symbian、Windows Mobile:可扩展、定制高功耗,支持 3G 的手机,未必就是智能手机3rd Generation,第三代数字通信,只是一种通信技术标准符合 3G 标准就是 3G 手机,与智能与否无关简言之,智能手机就是一台可以随意安装和卸载应用软件的手机(专用计算机):很容易就能够从网络上获取第三方应用软
3、件检索软件的依据是手机操作系统而不是手机品牌型号获取软件的网站是手机软件市场而不是手机厂商网站,智能手机的主要品牌,智能手机的操作系统,BlackBerry邮件是特色,对输入设备做过特别设计iPhone OSMac OS X 的衍生,类 Unix 系统,Objective-CWindows CE微软:“Windows Mobile 将熟悉的 Windows 体验扩展到了移动环境中,所以您可以立即使用它投入工作。”Symbian诺基亚为主,2010年2月开放,以 S60 为主流Palm OS掌上电脑专用,节能、资源占用少、内置数据库MeeGo由英特尔和诺基亚整合 Moblin 和 Maemo 而
4、来Android、MontaVista基于嵌入式 Linux,BlackBerry,RIM 1984年成立,加拿大为数不多的全球知名品牌之一特点:手机和电子邮件的融合,商务性能优越宽大的屏幕和便于输入的 QWERTY 键盘,为拇指输入而优化推送邮件服务(push email):新邮件自动由 RIM 服务器传送到手机服务运营商,然后直接推送到黑莓终端上RIM 服务器的数量、分布、可靠性直接影响用户的邮件应用封闭源码,iPhone OS,源自 Mac OS X,类 Unix 系统iPhone、iPod Touch、iPad 特点:多点触摸(Multi-Touch)界面 对 Java、Flash 的
5、支持有限系统架构分为四个层次内核操作系统层(the Core OS layer)内核服务层(the Core Services layer)媒体层(the Media layer)可轻触层(the Cocoa Touch layer)封闭源码+开放源码组件,Windows CE,Windows CE:精简的 Windows95类似的操作界面、类似的编程工具2009.2Windows Mobile 6.52010.10Windows Phone 7 2011.2Nokia 加盟2011.9Windows Phone 7.5,WinCE 的系统结构、主要组成部件,Symbian,Symbian 的
6、前身是 Psion 公司的 EPOC 系统实时性、多任务的纯32位操作系统抢占式的多任务调度和内存保护具有功耗低、内存占用少等特点三个系统设计原则用户数据的完整性和安全性至关重要不能浪费用户的时间所有的资源都是稀少的Symbian OS 分类按内核版本分有v6.1,v7.0,v8.0,v8.1,v9.1,v9.2等按用户平台(UI)分有S60,S80,S90,UIQ,MOAP等,Symbian,1998年6月,为了在智能移动终端领域对抗微软、Palm,诺基亚、摩托罗拉、爱立信、三菱和宝意昂(Psion)共同成立 Symbian 公司2003年,竞争加剧,Symbian 阵营成员开始脚踏多只船,
7、摩托罗拉转投 Windows Mobile2004年2月,诺基亚收购了 Psion 的 Symbian 股权,在 Symbian 的股权达到63.3%;10月 Symbian 宣布与英特尔合作风光一时,Symbian,Symbian,Symbian,由于对新兴的社交网络和 Web 2.0 支持欠佳,Symbian 的市场占有率从2006年三季度的72.8%逐年下降至2010年三季度的37.6%自2009年底开始,摩托罗拉、三星、LG、索爱等各大厂商纷纷转投 Android,而诺基亚则推出了面向高端市场的 Maemo 平台2011年初,诺基亚宣布与微软成立战略联盟,推出基于Windows Pho
8、ne 的智能手机,并宣布 Symbian 系统不再更新,仅对用户界面 UI 进行改进,Symbian 系统的生命周期终止,Palm OS,一个开放式软件架构,简单高效主要特点:良好的节能功能,极低功耗合理的内存管理,内存占用非常小以数据库的形式存储数据与3Com公司几经离合,最终独立2009年2月,Palm 公司宣布将专注于 webOS 和 Windows Mobile,终止 Palm OS 的研发应用 2010年,与3Com同时被HP收购2011年8月,惠普放弃 webOS,Meego,Nokia N9,Meego,2010年2月,Intel 和 Nokia 合作在 MWC 发布 MeeGo
9、整合了 Intel 的 Moblin 和 Nokia 的 Maemo2011年9月,Nokia 首款 MeeGo 手机 N9 上市,也是最后一款2011年4月,Nokia 宣布放弃开发 Meego,转向 Windwos Phone 7;9月28日,Intel 宣布将 MeeGo 与 LiMo 合并成为 Tizen2011年10月官网公告:MeeGo is dead,Android,Droid,Nielsen、Beareyes,OHA 开放手机联盟,OHA:Open Handset AllianceGoogle 公司于2007年11月发起的一个全球性的联盟组织联盟目标加速智能移动设备的发展 提供
10、用户更多更好更便宜的服务联盟支持 Google 可能发布的手机操作系统或者应用软件,共同开发名为 Android 的开放源代码的移动系统,联盟创始成员Aplix、Ascender、Audience、Broadcom、中国移动、eBay、Esmertec、谷歌、宏达电、英特尔、KDDI、Living Image、LG、Marvell、摩托罗拉、NMS、NTT DoCoMo、Nuance、Nvidia、PacketVideo、高通、三星、SiRF、SkyPop、Sonic Network、Sprint Nextel、Synaptics、TAT、意大利电信、西班牙电信、德州仪器、T-Mobile 和
11、 Wind River至2011年5月,成员已达 80 家手机芯片商、手机制造商移动运营商软件开发商、软件服务商,Android,Android 是 OHA 发布的开源手机操作系统第一个完整的、开放的、免费的智能移动开发平台基于 Linux 2.6 内核,使用 Java 进行编程Android 包括操作系统、中间件和一些关键应用,Android 优势,平台的开放性源代码完全开放带来更多的第三方应用、更具差异性的程序、更多的竞争不受限制的开发商针对有限内存、电池、CPU 优化的 Dalvik 虚拟机Android 源码遵循 Apache V2 而不是 GPL v2 良好的盈利模式 3-7 开的盈
12、利模式极大的激发了软件开发者的热情Google 应用的无缝结合10 余年间,Google 已完成全面的互联网渗透地图、邮件、搜索等服务与手机的无缝结合,Android 不足,由于采用了 Java 作为应用开发语言,目前可用的传统第三方应用还很少Google 仅提供了一套 Java 核心包(J2SE 5,J2SE 6)的有限子集,可能会造成 Java 阵营的进一步分裂基于 QEMU 开发的模拟器调试手段不够丰富,只支持通话、SMS 等,运行速度慢不具备 Push Mail、Office 功能,对商业用户支持尚弱,Android 系统架构,Linux 内核,API 库,应用程序框架,应用程序,An
13、droid 特点,应用框架可以重复使用,其组件也可以更换Dalvik 虚拟机针对移动设备进行了优化优化的图形能力支持 2D/3D 图形(OpenGL ES 1.0)集成了开源 WebKit 引掣、SQLite 轻型数据库等丰富的开发环境,包括模拟机、调试工具、内存运行检测,以及为 Eclipse IDE 所写的插件,多媒体支持多种音频、视频格式GSM Telephony(hardware dependent)支持蓝牙 Bluetooth,3G 和 WiFi支持照相机、GPS、指南针和加速度仪等传感器硬件应该有的都有,DVM vs.JVM,DVM(Google)针对便携设备有限的系统资源和供电进
14、行专门优化Dalvik excutable bytecode每个应用程序在它自己的 Dalvik VM 实例中执行优化后的 dex 代码JVM(Sun)跨平台Java bytecode唯一的 JVM 实例,最新消息,2011年7月,国内可直接访问 Android 开发者网站 2011年8月,Google 以 125 亿美元收购摩托罗拉移动,以应对 Apple 和微软针对 Android 设备制造商进行的专利诉讼2011年10月,Google 发布 Android SDK 4.0,实现手机和平板电脑应用开发平台的统一,Android 应用编程,Android SDK 所支持的操作系统:Windo
15、ws XP(32 bit)or Vista(32/64 bit)Mac OS X 10.5.8 or later(x86 only)Linux(tested on Linux Ubuntu Dapper Drake),开发环境,IDEEclipse for JavaEclipse plug-inADT(Android Development Tools)Software Development KitAndroid SDK,调试工具,Android EmulatorAVD(Android Virtual Device)DebugerADB(Android Debug Bridge)DDMS(D
16、alvik Debug Monitor Service),开发环境建立,安装配置顺序jdk eclipse sdk adt ok请参考参考视频:youku、tudou,获取 Android 资料的途径,下载 sdk 等相关软件查看文档、在线帮助开发社区国内需要代理才能访问news、sdk下载开发FAQ、源码下载、移植,Say Hello to Android,Android Emulator可模拟电话本、通话等功能内置的浏览器和 Google Maps 都可以联网可以使用 PC 键盘输入(不包括小键盘)可使用模拟器按键、键盘输入可以使用鼠标单击、拖拽屏幕进行操作,Android Emulato
17、r 和真机的不同不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼入和呼出不支持USB连接不支持相机、视频捕捉 不支持音频输入,但支持输出不支持扩展耳机不能确定连接状态 不能确定电池电量水平和交流充电状态 不能确定 SD 卡的插入/弹出不支持蓝牙模拟器在 PC 机上产生的临时文件需要手工清理,apk 文件:Android 上的安装文件apk 是 Android 安装包的扩展名,安装包内包含了与该 Android 应用程序相关的所有文件Android 将 AndroidManifest.xml 文件、应用程序代码(.dex文件)、资源文件和其他文件打成一个压缩包,即.apkapk 文件的本质是
18、一个压缩包,Activity 活动,Android 应用程序中最基本的组件,应用程序中一个Activity 通常就是一个单独的屏幕每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件做出响应大多数的应用是由多个屏幕显示组成,示例:Hello world,on Android,Hello World,Eclipse 下自动生成 new android project HelloWorld,HelloWorld.java,Java 程序,package test.helloworld;import android.app.Activity;i
19、mport 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);,返回,R.java,Java 程序,/*AUTO-GENERATED FILE.DO NOT MODIFY.*/package test
20、.helloworld;public final class R public static final class attr public static final class drawable public static final int icon=0 x7f020000;public static final class layout public static final int main=0 x7f030000;public static final class string public static final int app_name=0 x7f040001;public s
21、tatic final int hello=0 x7f040000;,返回,main.xml,xml 文件,Resources,返回,strings.xml,xml 文件,Hello World,HelloWorld!HelloWorld,显示内容:Hello World,HelloWorld!,AndroidManifest.xml,xml 文件,返回,RUN,RUN,模拟器运行,显示内容:Hello World,HelloWorld!,屏幕分辨率,入门级的:QVGA(320 x240)主流的:HVGA(480 x320)主流的:WVGA800(800 x480)moto特有的:WVGA85
22、4(854x480)魅族 M9:960 x640三星 Galaxy Tab P1000:1024x600(7 寸屏)基准分辨率:VGA(640 x480)HVGA-L 或是-P:横屏、竖屏模拟器的默认分辨率依 SDK 版本而不同,(1)Emulator Control:(2)adb 命令:sms send 10086?(3)模拟器之间互发:55545556(3)模拟器自发自收:55545554,发送短信的方式,Activity 的生命周期,onCreate()onStart()onResume()onPause()onStop()onRestart()onDestroy(),示例:Activi
23、ty,on Android,findViewById 方法实现 UI 组件的实例化不同 Activity 之间的切换Activity 在 manifest.xml 文件中的注册Toast 的使用,Intent:组件之间的使者,Intent:不同组件之间通信的“媒介”,用于描述程序想要做什么Intent 可以包括:动作 Action数据 Data,以 URI 的形式表示分类 Category类型 Type组件 Component扩展信息 Extra常用于启动新的 Activty、Service 或是发起新的 Broadcast 等,用于启动一个新的Activity,实现多个Activity 间的
24、切换定义并实例化一个 Intent调用 startActivity()方法启动新的 Activity,button0=(Button)findViewById(R.id.button0);button0.setOnClickListener(new View.OnClickListener()Override public void onClick(View v)/TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,Common_Widget_Test.class);startActivity(i
25、ntent););,示例:IntentAction,on Android,实例:Test_of_Intent_Action,使用系统提供的标准 Action不同的 Action 执行不同的动作,Service:后台服务,后台运行,几乎不与用户交互,没有可视化界面与 Activity 一样,同属 Android 基本组件同样需要在 AndroidManifest.xml 中注册,Service:后台服务,每一个服务均继承自父类 Service同样以 startService()方法启动服务,button1=(Button)findViewById(R.id.button1);button1.se
26、tOnClickListener(new View.OnClickListener()public void onClick(View v)Intent intent1=new Intent(Runnable_Service_Test.this,Runnable_Service.class);intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startService(intent1););,示例:Service,on Android,实例:Test_of_Service,private Runnable task1=new Runnable()pu
27、blic void run()intCounter+;Log.i(test,int Counter:+Integer.toString(intCounter);Toast.makeText(getApplicationContext(),Integer.toString(intCounter),Toast.LENGTH_SHORT).show();handler1.postDelayed(task1,1000*second);,Runnable:允许服务持续运行,即使启动服务的应用退出类似于 定时器中断的中断服务程序,Broadcast Receiver:系统级别的事件处理机制UI的事件处理机
28、制:程序、组件级别的sendBroadcast(Intent intent)方法发送广播BroadcastReceiver.onReceive()方法接收广播并做相应处理多个广播接收器可能同时接收同一个广播,Broadcast Receiver:广播接收器,标准的 Broadcast Action 常量:ACTION_TIME_CHANGED时间改变ACTION_DATE_CHANGED日期改变ACTION_BATTERY_LOW电量不足ACTION_MEDIA_EJECT插拔外部媒体ACTION_BOOT_COMPLETED启动完成用户自定义广播事件,示例:Broadcast Receive
29、r,on Android,实例:Test_of_BroadcastReceiver_Send,(1)Main Activity中定义一个 Button,其单击事件中准备数据并发起广播,private int i=0;private static final String TESTACTION=test.broadcast.SEND;button1=(Button)findViewById(R.id.button1);button1.setOnClickListener(new View.OnClickListener()public void onClick(View v)Intent int
30、ent1=new Intent();intent1.setAction(TESTACTION);i+;intent1.putExtra(message,这是第+i+次广播);sendBroadcast(intent1););,(2)定义继承自 BroadcastReceiver 类的Receiver1 类,用于接收广播并回显信息,import android.content.Context;import android.content.Intent;import android.widget.Toast;import android.content.BroadcastReceiver;public class Receiver1 extends BroadcastReceiver public void onReceive(Context ctx,Intent intent)String string1=intent.getStringExtra(message);Toast.makeText(ctx,string1,Toast.LENGTH_SHORT).show();,(3)在 AndroidManifest 文件中注册广播接收器类 Receiver1,并指明其用于接收识别的 action,thank you,