1.简述各种手机操作系统的特点.
答案:
目前,手机上的操作系统主要包括以下几种,分别是Android、iOS、Windows Mobile、Windows Phone 7、Symbian、黑莓、PalmOS和Linux。
(1)Android是谷歌发布的基于Linux的开源手机平台,该平台由操作系统、中间件、用户界面和应用软件组成,是第一个可以完全定制、免费、开放的手机平台。Android底层使用开源的Linux操作系统,同时开放了应用程序开发工具,使所有程序开发人员都在统一、开放的开发平台上进行开发,保证了Android应用程序的可移植性。
(2)iOS是由苹果公司为iPhone、iPod touch、iPad以及Apple TV开发的操作系统,以开放源代码的操作系统Darwin为基础,提供了SDK,iOS操作系统具有多点触摸操作的特点,支持的控制方法包括滑动、轻按、挤压和旋转, 允许系统界面根据屏幕的方向而改变方向,自带大量的应用程序。
(3)Windows Mobile是微软推出的移动设备操作系统,对硬件配置要求较高,一般需要使用高主频的嵌入式处理器,从而产生了耗电量大、电池续航时间短和硬件成本高等缺点,Windows Mobile系列操作系统包括Smartphone、Pocket PC和Portable Media Center。随着Windows Phone 7的出现,Windows Mobile正逐渐走出历史舞台。
(4)Windows Phone 7具有独特的“方格子”用户界面,非常简洁,黑色背景下的亮蓝色方形图标,显得十分清晰醒目,集成了Xbox Live游戏和Zune音乐功能,可见Windows Phone 7对游戏功能和社交功能的重视。
(5)Symbian是为手机而设计的实时多任务32位操作系统,它的功效低,内存占用少,提供了开发使用的函数库、用户界面、通用工具和参考示例。操作系统不是完全开放的,核心代码不开放,但是API文档是公开的。
(6)黑莓系统主要在黑莓手机上使用,其特色是支持电子邮件推送功能,邮件服务器主动将收到的邮件推送到用户的手持设备上,而不需要用户频繁地连接网络查看是否有新邮件。同时,黑莓系统提供手提电话、文字短信、互联网传真、网页浏览及其它无线信息服务功能。黑莓系统主要针对商务应用,具有很高的安全性和可靠性。
(7)PalmOS由拥有较多的第三方软件,是32位的嵌入式操作系统,主要在移动终端上使用,操作系统本身所占的内存极小,不具备录音和MP3播放功能。
(8)Linux手机操作系统具有开放源代码的特性,但是也包含入门难度高,集成开发环境差,Linux的产品与个人计算机的连接性较差,具有较强的开发实力的公司很少等不足。
2.简述Android平台的特征
答案:
Android广泛支持GSM、3G和4G的语音与数据业务,支持接收语言呼叫和SMS短
信,支持数据存储共享和IPC消息机制,为地理位置服务(如GPS)、谷歌地图服务提供易于使用的API函数库,提供组件复用和内置程序替换的应用程序框架,提供基于WebKit的浏览器,广泛支持各种流行的视频、音频和图像文件格式。
Android系统提供了访问硬件的API库函数,用来简化像摄像头、GPS等硬件的访问过程。在内存和进程管理方面,Android为了保证高优先级进程运行和正在与用户交互进程的响应速度,允许停止或终止正在运行的低优先级进程,以释放被占用的系统资源。Android进程的优先级并不是固定的,而是根据进程是否在前台或是否与用户交互而不断变化的。在界面设计上,Android提供了丰富的界面控件供使用者调用,从而加快了用户界面的开发速度,也保证了Android平台上的程序界面的一致性。Android提供轻量级的进程间通讯机制Intent,使用跨进程组件通信和发送系统级广播成为可能。Android提供了Service作为无用户界面、长时间后台运行的组件,可为应用程序提供特定的后台功能,还可以实现事件处理或数据更新等功能。Android支持高效、快速的数据存储方式,同时为了便于跨进程共享数据,Android提供了通用的共享数据接口ContentProvider,可以无需了解数据源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。Android支持位置服务和地图应用,可以通过SDK提供的API直接获取当前的位置,追踪设备的移动路线,或设定敏感区域,并可以将Google地图嵌入到Android应用程序中,实现地理信息可视化开发。Android支持Widget插件,可以方便地在Android系统上开发桌面应用,实现比较常见的一些桌面小工具,或在主屏上显示重要的信息。Android支持使用本地代码(C或C++)开发应用程序的部分核心模块,提高了程序的运行效率,并有助于增加Android开发的灵活性。
3.描述Android平台体系结构的层次划分,并说明各个层次的作用。
答案:
Android采用了软件堆层的架构,共分为四层: Linux内核、中间件层、应用程序框架层和应用程序层。
(1)Linux内核提供由操作系统内核管理的底层基础功能。
(2)中间件层包含函数库和Android运行时,函数库主要提供了六个基于C/C++的函数库,包括:Surface Manager,支持显示子系统的访问,为多个应用程序提供2D、3D图像层的平滑连接;Media Framework,基于OpenCORE的多媒体框架,实现音频、视频的播放和录制功能,广泛支持多种流行的音视频格式,包括MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等;SQLite,轻量级的关系数据库引擎;OpenGL ES,基于硬件的3D图像加速;FreeType,位图与矢量字体渲染;WebKit,Web浏览器引擎;SGL,2D图像引擎;SSL,数据加密与安全传输的函数库;libc,标准C运行库,是Linux系统中底层的应用程序开发接口。Android运行时包含核心库和Dalvik虚拟机,核心库为程序开发人员提供了Android系统的特有函数功能和Java语言基本函数功能,Dalvik虚拟机实现了基于Linux内核的线程管理和底层内存管理,也可以执行Dalvik可执行格式。
(3)应用程序框架提供了Android平台基本的管理功能和组件重用机制。
(4)应用程序提供了一系列核心应用程序。
第二章 Android开发环境
1.尝试安装Android开发环境,并记录安装和配置过程中所遇到的问题。
提示:
首先下载并安装JDK,然后下载并安装eclipse,还要下载并安装SDK和ADT插件,并完成相应的设置。
2.浏览Android SDK帮助文档,了解Android SDK帮助文档的结构和用途。
略。
3.在Android SDK中,Android模拟器、Android调试桥和DDMS是Android应用程序开发过程中经常使用到的工具,简述这三个工具的用途。
答案:
Android模拟器主要用来调试Android应用程序,模拟器可以仿真手机的绝大部分硬件和软件功能,支持加载SD卡映像文件,更改模拟网络状态、延迟和速度,模拟电话呼叫和接收短信等。Android调试桥是用于连接Android设备或模拟器的工具,负责将应用程序安装到模拟器和设备中,或从模拟器或设备中传输文件。DDMS是Android系统中内置了调试工具,可以用来监视Android系统中进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟电话呼叫和SMS短信,以及浏览Android模拟器文件系统等。
第三章 第一个Android程序
1.简述R.java和AndroidManefiest.xml文件的用途。
答案:
R.java文件是ADT自动生成的文件,包含对drawable、layout和values目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源。AndroidManifest.xml是XML格式的Android程序声明文件,包含了Android系统运行Android程序前所必须掌握的重要信息,这些信息包括应用程序名称、图标、包名称、模块组成、授权和SDK最低版本等,而且每个Android程序必须在根目录下包含一个AndroidManifest.xml文件。
2.尝试建立一个支持Google APIs的AVD。
略。
3.使用Eclipse建立名为MyAndroid的工程,包名称为edu.hrbeu.MyAndroid,使用第2题中建立的AVD,程序运行时显示Hello MyAndroid。
略。
4.尝试使用命令行方式建立一个Android应用程序,并完成apk打包和程序安装过程。
略。
第四章Android生命周期
1. 简述Android系统前台进程、可见进程、服务进程、后台进程和空进程的优先级排序原因。
答案:前台进程是Android系统中最重要的进程,是与用户正在交互的进程,所以被
排放在首位;可见进程和服务进程都是包含服务的进程,不在前台与用户交互,不响应界面时间的进程,而是在后台长期运行,所以,他们被排放在前台进程之后;而后台进程和空进程是不包含任何已经启动服务的进程,在系统比较资源比较紧张的时候,会首先被清除,所以他们被排放在最后。
2. 简述Android系统的四种基本组件Activity、Service、BroadcaseReceiver和ContentProvider的用途。
答案:
Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,用于提示用户程序已经正常启动。Service一般用于没有用户界面,但需要长时间在后台运行的应用。BroadcaseReceiver是用来接受并响应广播消息的组件。ContentProvider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过ContentProvider访问其他应用程序的私有数据。
3. 简述Activity生命周期的四种状态,以及状态之间的变换关系。
答案:
Activity的四种状态,分别是活动状态、暂停状态、停止状态和非活动状态。活动状态是完全能被用户看到,与用户进行交互的状态;暂停状态是Activity不处于用户界面的最上层,不能与用户进行交互的状态;停止状态是指Activity在界面上完全不能被用户看到的状态;除以上三种状态之外,就是非活动状态。他们的变换关系是,当第一个Activity启动后,则Activity处于活动状态;如果启动新的Activity,部分遮挡先前的Activity,则
先前的Activity转换为暂停状态;如果新启动的Activity完全遮挡了先前的Activity,则先前的Activity转换为停止状态;活动的Activity被用户关闭,或暂停状态或停止状态的Activity被系统终止后,都会转换成非活动状态。
4. 简述Activity事件回调函数的作用和调用顺序。
答案:
Activity事件回调函数具体分为Activity生命周期的事件回调函数和Activity状态保存和恢复函数的事件回调函数,Activity生命周期的事件回调函数的作用主要是为了让Activity程序了解自身状态的变化;Activity状态保存和恢复函数的事件回调函数的作用主要是保存或恢复Activity的状态信息。
Activity事件的调用顺序是:
(1)onCreate,完全生命周期开始,初始化 Activity;
(2)onStart,可视生命周期开始,对用户界面进行必要的更改;
(3)onRestoreInstanceState,恢复onSaveLnstanceState保存的用户界面信息;
(4)onResume,活动生命周期开始,保存界面信息;
(5)onSaveInstanceState,在 onResume后,保存界面信息;
(6)onRestart,重新进入可视生命周期前,载入界面所需要的更改信息;
(7)onPause,活动生命周期结束,保存持久地数据或释放占用的资源;
(8)onStop,可视生命周期结束,保存持久地数据或释放占用的资源;
(9)onDestory,完全生命周期结束,释放资源
第五章 Android用户界面
1.简述6种界面布局的特点。
答案:
6种界面布局分别为:线性布局、框架布局、表格布局、相对布局、绝对布局和网格布局。
(1)线性布局的子元素可垂直或者水平排列,但是每一列/行中,只能有一个界面元素。
(2)框架布局是只存放一个元素的空白空间,且位置只能是空白空间的左上角,如果有多个子元素,后放置的子元素会遮挡先放置的子元素。
(3)表格布局将屏幕划分网格,把界面元素添加到网格中,支持嵌套,也可添加其他的界面布局。
(4)相对布局中的界面元素的位置是通过与其他的元素的相对位置确定的,具有灵活性。
(5)绝对布局的界面元素的位置是通过坐标确定的,他是不推荐使用的一种布局。
(6)网格布局将用户界面划分为网格,界面元素可随意摆放在这些网格中,界面元素可以占用多个网格的,使界面设计更为灵活。
2.参考下图中界面控件的摆放位置,使用多种布局方法实现用户界面,并对比各种布局实现的复杂程度和对不同屏幕尺寸的适应能力
略。
3.简述Android系统三种菜单的特点及其使用方式。
答案:
Android系统支持的三种菜单分别是:选项菜单、子菜单和快捷菜单。
(1)选项菜单是常用的Android系统菜单,可分为图标菜单和扩展菜单,图标菜单的子项最多是六个,支持显示图标,不支持单选框和复选框;而当子项多余六个时,采用扩展菜单,扩展菜单的子项是垂直排列,支持单选框和复选框,不支持显示图标。第一次启动选项菜单时,只需要调用一次onCreateMenu函数。
(2)子菜单的表现形式是浮动窗体的形式,适应小屏幕的显示形式,能够展示更加详细的信息,通过addSubMenu函数增加子菜单,但不支持嵌套。在选项菜单和快捷菜单中使用子菜单,便于显示和分类相似的菜单子项。
(3)快捷菜单采用动窗体的显示形式,启动方式特别,点击界面元素超过2秒后,则启动该界面元素的快捷菜单。每次启动快捷菜单时,都要调用一次onCreateMenu函数。
4.说明使用操作栏为程序开发所带来的便利。
答案:
操作栏代替了传统的标题栏功能,右侧用来显示“选项菜单”的菜单项,但所显示的内容,会根据操作栏所具有的空间不同而具有不同的现实方式。在屏幕尺寸较小的设备上,操作栏会自动隐藏菜单项的文字,而仅显示菜单项的图标;而在屏幕尺寸较大的设备上,操作栏会同时显示菜单项的文字和图标。操作栏提供多个实用的功能,包括(1)将“选项菜单”的菜单项显示在操作栏的右侧;(2)基于Fragment实现类似于Tab页的导航切换功能;(3)为导航提供可“拖拽—放置”的下拉列表;(4)可在操作栏上实现类似于“搜索框”的功能。
第六章 组件通信与广播消息
1.简述Intent的定义和用途。答案:
Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的
数据和动作传递给另一个组件。Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。
2.简述Intent过滤器的定义和功能。
答案:
Intent过滤器是一种根据Intent中的动作(Action)、类别(Categorie)和数据(Data)等内容,对适合接收该Intent的组件进行匹配和筛选的机制。Intent过滤器的作用是匹配数据类型、路径和协议,还包括可以用来确定多个匹配项顺序的优先级。每个Intent过滤器可以定义多个 3.简述Intent解析的匹配规则。 答案: Intent解析的匹配规则是: (1)Android系统把所有应用程序包中的Intent过滤器集合在一起,形成一个完整的Intent过滤器列表; (2)在Intent与Intent过滤器进行匹配时,Android系统会将列表中所有Intent过滤器的“动作”和“类别”与Intent进行匹配,没有指定“动作”的Intent过滤器可以匹配任何的Intent,但是没有指定“类别”的Intent过滤器只能匹配没有“类别”的Intent; (3)把Intent数据Uri的每个子部与Intent过滤器的标签中的属性进行匹配; (4)如果Intent过滤器的匹配结果多于一个,则可以根据在 4.编程实现具有“登录”按钮的主界面,点击“登录”按钮后打开一个新的Activity,新打开的Activity上面有输入用户名和密码的控件,在用户关闭这个Activity后,将用户名和密码传递到主界面的Activity中。 略。 第七章 后台服务 1.简述Service的基本原理和用途。 答案: Service能够长期在后台运行,适用于无需用户干预,且规则或长期运行的后台功能。首先,因为Service没有用户界面,更加有利于降低系统资源的消耗,而且Service比Activity具有更高的优先级,因此在系统资源紧张时,Service不会被Android系统优先终止。即使Service被系统终止,在系统资源恢复后Service也将自动恢复运行状态,因 此可以认为Service是在系统中永久运行的组件。Service除了可以实现后台服务功能,还可以用于进程间通信(Inter Process Communication,IPC),解决不同Android应用程序进程之间的调用和通讯问题。 2.编程建立一个简单的进程内服务,实现比较两个整数大小的功能。服务提供Int Compare(Int, Int)函数,输入两个整数,输出较大的整数。 略。 第八章 数据存储与访问 1.应用程序一般允许用户自己定义配置信息,如界面背景颜色、字体大小和字体颜色等,尝试使用SharedPreferences保存用户的自定义配置信息,并在程序启动时自动加载这些自定义的配置信息。 略。 2.尝试把第1题的用户自己定义配置信息,以INI文件的形式保存在内部存储器上。 略。 3.简述在嵌入式系统中使用SQLite数据库的优势。 答案: SQLite数据库的优势是其嵌入到使用它的应用程序中。这样不仅提高了运行效率,而 且屏蔽了数据库使用和管理的复杂性,程序仅需要进行最基本的数据操作,其他操作可以交给进程内部的数据库引擎完成。 第九章 位置服务与地图应用 1.讨论位置服务和地图应用的发展前景。 答案: 位置服务不仅可以对手机用户进行定位,对手机用户的位置进行实时监测和跟踪,还可以查询有关位置附近的各种场所的资讯,所有的信息都可以显示在电子地图上。因此,定位服务的发展具有广泛的前景。在人们的生活中,最基本的信息就是“位置信息”,特别是出现紧急情况时更需要“确切的位置信息”。据预测,到 2014 年,在各种移动通信业务用户数排名中,拥有位置服务业务的用户数将仅次于语音业务位居第二,高于 E-mail 、移动电子商务、移动银行等增值业务。移动定位服务无疑代表着一个全新的商机,移动通讯领域的商家都看好这个潜力巨大的市场。 第十章 Widget组件开发 1.分析Widget的优势和不足。 答案: Widget是一个具有特定功能的视图,一般被嵌入到主屏幕中,用户在不启动任何程序的前提下,就可以在主屏幕上直接浏览Widget所显示的信息。Widget在主屏幕上显 示自定义的界面布局,在后台周期性的更新数据信息,并根据这些更新的数据修改主屏幕的显示内容。Widget可以有效的利用手机的屏幕,快捷、方便的浏览信息,为用户带来良好的交互体验。Widget需要定时更新数据,在一定程度上增加了设备的耗电量。 2.简述Widget的设计原则和注意事项。 答案: Widget是主屏幕上的显示元素,不仅自身具有一定的设计规则,还要与主屏幕上其它的元素保持美观一致。 第十一章 Android NDK开发 1.简述Android NDK开发的优势和不足。 答案: Android NDK的优势是利用核心模块使用本地代码(C/C++)来提高开发执行效率,提高了Android应用程序开发的灵活性。Android NDK的不足是使用C/C++语言的话,会增加程序的复杂性和程序调试的难度;另外,开发人员需要认识到CPU运算量大和内存消耗较少的部分使用本地代码运行效率最高。 2.说明Android NDK应用程序开发的一般步骤。 答案: Android NDK应用程序开发的一般步骤是: (1)下载Android NDK的安装包; (2)下载并安装Cygwin; (3)配置Cygwin的NDK开发环境; (4)测试开发环境是否可以正常工作。 3.参考NDK的tow-libs示例,使用静态库实现AndroidNdkDemo示例中加法运算的函数功能。 略。 4.简述在代码中动态检测CPU类型的意义。 答案: 动态检测CPU类型有助于优化代码,利用根据CPU类型对C代码中的算法进行优化。 因篇幅问题不能全部显示,请点此查看更多更全内容