Android嵌入式系统程序开发:基于Cortex-A8(第2版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-09-30 10:44:08

点击下载

作者:胡文,金雪松,陈铭

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Android嵌入式系统程序开发:基于Cortex-A8(第2版)

Android嵌入式系统程序开发:基于Cortex-A8(第2版)试读:

第2版前言

《Android嵌入式系统程序开发(基于Cortex-A8)》一书,自2013年4月由机械工业出版社出版后,分别在2013年和2014年重印两次,在此类专业图书教材中表现相当突出。作者非常感谢购买本书的读者,尤其是那些能够通过网络提出问题讨论并给出建议或指出错误的读者朋友。根据最近几年Android的发展变化、开发平台软件和开发工具的更新等相关资料,以及近几年笔者在学校、公司从事教学与培训中的经验和积累,决定对本书进行升级以适应快速迭代的市场变化。

本书在第1版内容的基础上修改了部分内容,主要内容包括:更新第2章Android应用程序开发内容,增加了界面布局、菜单和事件处理内容;新增第3章数据库应用程序开发,增加本地SQLite数据库应用程序,以及远程数据库访问应用程序;根据读者的建议,修改S5PV210硬件结构与接口驱动程序部分内容,涉及第5章系统硬件及驱动程序,以及第6章外设接口及驱动程序,实现了硬件接口、上层UI界面程序和中间层JNI程序结合的驱动程序;修改了第7章并更换了第9章的实例,使得初学者更容易理解和接受相关知识。

尽管笔者设计和开发过许多实际的应用项目和产品,但考虑到本书读者主要是初学者,通常不可能具备与掌握开发各种实际项目或产品所涉及的相关知识和基础,所以提供完整的综合应用项目的程序开发实例。再版书中的实例源代码放在华章网站上,包括应用程序开发、数据库应用程序开发,系统硬件及驱动程序、外设接口及驱动程序和综合应用项目的程序开发实例等源代码。

本书在编写过程中,得到了许多专家和学者的大力支持,听取了多方面的宝贵意见和建议,在此对他们表示衷心感谢。书中难免存在不足和错误之处,敬请读者批评指正。编者2015年4月

第1版前言

本书的特点是以嵌入式操作系统Android和Cortex-A8微处理器S5PV210为基础,从Android体系结构和搭建开发环境,以及Android应用程序开发等方面构造了一个完整的Android开发流程。本书重点介绍了S5PV210硬件结构和Android系统移植,详细讲解了底层驱动的封装、中间层JNI的制作,以及上层UI的设计,采用Java开发接口驱动程序。本书还提供了完整的综合应用项目的程序开发实例,介绍了功能模块设计和数据库设计,详细讲解了开发过程与程序源代码;使读者深刻理解和掌握嵌入式系统开发的整个过程,了解底层驱动程序驱动硬件的原理和上层应用程序的设计方法,真正做到了底层驱动的开发与上层应用程序的开发相结合。

本书内容丰富实用、叙述详尽清晰,方便教学与自学。结合DMA-210XP平台的实验程序,有利于读者掌握Android系统的应用程序设计方法,培养读者综合分析、开发创新和工程设计的能力。通过本书的学习,读者可以快速提高Android的编程能力和实际开发水平。

全书分三部分,共9章。

第一部分:

软件篇

·第1章介绍了Android的体系结构,以及Android系统的整体架构的各层组成,并介绍了如何搭建Windows、Linux和NDK下的开发环境。

·第2章介绍了第一个HelloEveryone的Android应用程序,以及Android应用程序组成,并介绍如何使用Android Manifest文件定义应用程序。

·第3章介绍了Android应用程序开发过程中涉及的控件,介绍了Activity转换和Intent消息传递、Menu设计修改、对话框实例和Android本地数据库SQLite应用。

第二部分:硬件篇

·第4章详细介绍了Android内核结构和设备驱动、Android内核基本配置、Android内核编译和DMA-210XP平台Android文件系统烧写过程。

·第5章介绍了S5PV210的硬件结构,包括S5PV210微处理器、GPIO接口、PWM定时器、DMA控制器、UART串行接口、SPI接口、IIC总线接口和ADC及触摸屏接口。介绍了接口应用实例及驱动程序。

·第6章介绍了在Android开发环境下,采用Java编写接口驱动程序。包括LED接口及驱动程序、背光调节控制程序、键盘接口及驱动程序、UART串行口及通信程序、ZigBee接口及驱动程序、Wi-Fi接口及通信程序、3G接口及驱动程序、MediaPlayer播放器程序等。

第三部分:项目篇

·第7章介绍了嵌入式组态软件结构,以及界面设计、功能选择区设计、辅助功能区设计和程序生成区设计Android应用,采用Java开发嵌入式组态软件。

·第8章以MyMap服务系统为实例,介绍Android Google Map、Android定位服务、案例重构,采用Java开发GPS与Google Map定位应用程序。

·第9章以3D传感器动力球游戏为例,介绍小球快跑游戏背景及功能、游戏的架构,详细讲解了游戏主菜单、游戏界面模块,游戏中各个层、游戏后台逻辑和传感器计算模块等的程序开发。

本书由胡文教授拟定编写大纲和目录。胡文编写了第6章和第7章,宁世勇编写了第2章和第3章,李明俊编写了第1章、第8章和第9章,金雪松编写了第4章和第5章。百度公司的胡玥,哈尔滨商业大学的李杨、赵艳丽、张凯、陈楠等人为本书的编写做了大量的工作,在此一并表示衷心感谢。本书在编写过程中,参考了大量的国内外著作和资料,得到了许多专家和学者的大力支持,并听取了多方面的宝贵意见和建议,在此也对他们表示衷心感谢。

由于时间仓促和作者水平所限,本书难免有疏漏和不足之处,敬请各位读者批评指正,以期再版时修订。编者2013年1月软件篇第1章 Android体系结构及开发环境1.1 Android体系结构介绍

Android是Google公司为移动设备开发的平台,它是一款开放的软件系统,其系统体系结构如图1-1所示,自上而下分为以下几个层次。图1-1 Android系统体系结构

·应用程序(Application)

·应用程序框架(Application Framework)

·函数库(Libraries)和Android运行时(Android Runtime)

·Linux内核(Linux Kernel)

Android的内核系统服务依赖于Linux2.6内核,随着Android发布版本的升级,Android系统使用的Linux内核也在不断升级,下面仅列举到Android 2.3版本。与Android系统对应的内核及其版本如下:

Android 系统版本内核版本

Android 1.0 Linux 2.6.25

Android 1.5(Cupcake) Linux 2.6.27

Android 1.6(Donut) Linux 2.6.29

Android 2.1(Eclair) Linux 2.6.29

Android 2.2(Froyo) Linux 2.6.32

Android 2.3(GingerBread) Linux 2.6.35

在本节中将对每一层次进行简单说明。1.1.1 应用程序

Android应用程序是基于Java语言编写的,为使用者提供操作接口。使用者直接操作应用程序,实现一定的功能。目前Android系统提供了计算器、联系人(Contacts)、电话(Phone)、浏览器(Browser)、E-mail客户端、SMS短消息程序、日历、地图等内核应用程序,开发者还可以使用Android提供的组件编写满足特定功能的应用程序。

由用户开发的Android应用程序和Android内核应用程序是同一层次的,它们都是基于Android系统的API构建的。1.1.2 应用程序框架

开发人员可以访问内核应用程序所使用的API框架。应用程序体系结构设计简化了组件的重用,任何一个应用程序都可以发布其功能块,并且任何其他的应用程序都可以使用应用程序体系结构所发布的功能块(不过要遵循框架的安全性限制)。同样,应用程序重用机制也使使用者可以方便地替换程序组件。隐藏在每个应用后面的是一系列的系统服务,这些系统服务包括:

·丰富且可扩展的视图(View System),可以用来构建应用程序,这些视图包括列表(List)、网格(Grid)、文本块(Text Box)、按钮(Button),甚至可嵌入Web浏览器。

·内容提供器(Content Provider)使应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

·资源管理器(Resource Manager)提供非程序代码资源的访问,如本地字符串、图形和布局文件(Layout File)。

·通知管理器(Notification Manager)使得应用程序可以在状态列中显示自定义的提示信息。

·活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

·窗口管理器(Window Manager)管理所有窗口程序。

·包管理器(Package Manager)管理Android系统内的程序。

·通信管理器(Telephony Manager)管理Android系统的通信功能。

·定位管理器(Location Manager)提供Android系统的定位等相关服务。1.1.3 函数库

Android包含一些C/C++函数库,这些函数库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。这些内核函数库包括:

·libc:标准C系统函数库,它是专门为基于Embedded Linux的设备定制的。

·Media Framework:基于PacketVideo OpenCORE,该函数库支持多种常用的音效、视频格式回放和录制,同时支持静态影像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG以及PNG。

·Surface Manager:显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

·Webkit:提供Web浏览引擎的支持。

·SGL:底层的2D图形引擎。

·OpenGL ES:基于OpenGL ES 1.0 APIs实现,该函数库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。

·FreeType:位图(bitmap)和向量(vector)字体显示。

·SQLite:一个对于所有应用程序可用、功能强大的轻量级关系型数据库引擎。

·SSL:安全套接层(Secure Sockets Layer)是为网络通信提供安全及数据完整性的一种安全协议。1.1.4 Linux内核

Android的内核系统服务如安全管理、内存管理、进程管理、网络通信和驱动模型依赖于Linux 2.6内核,Linux内核也同时作为硬件和软件堆栈之间的抽象层。关于Android对Linux内核的修改,这里重点阐述以下两个:

·Binder(IPC)Driver:提供高效率的进程间通信(Inter-Process Communication)。Android系统中有很多服务,上层的应用程序经常要取用这些服务。虽然一般的Linux系统已经提供了很多IPC的方式,但是Android几乎重新制作了一套自己的IPC。Android文件中解释说,一般IPC会造成额外资源花费以及安全问题。

·Power Management:与台式计算机或笔记本电脑不同,手持设备的电源一向相当有限,必须想尽一切办法省电,而又不能影响顺畅的使用体验。Android在此采取了颇为积极的做法:如果不使用,就关掉。例如,某程序在播放MP3音乐,于是此程序需要CPU的计算能力,那系统就得提供。如果与此同时没有执行其他程序,那么LCD显示器就可能被关闭,以便省电。一般的Linux内核考虑的都是在计算机上的做法,所以多数只有进入暂停、休眠等选择,而不会如此细致地控制各个小装置的电源供应。

以上详细介绍了Android体系结构情况,读者可以了解了Android体系结构的基本情况,为开发Android应用程序打下基础。在开发Android应用程序之前首先需要搭建开发的环境,下面将介绍Android应用程序开发环境是如何搭建的。1.2 搭建Windows下的开发环境

在搭建Windows下的开发环境之前,必须先下载Android SDK组件、Eclipse以及JDK(Java Development Kit)组件(因为Android的应用程序是采用Java语言编写的)。1.2.1 安装JDK

安装Eclipse的开发环境需要JRE的支持,如果没有JRE,则启动Eclipse时会报告错误。在Windows XP上安装JRE/JDK非常简单,步骤如下:

1)从Sun公司官方网站下载最新版的JDK。

2)双击JDK安装文件,打开安装向导,然后按照默认的设置点击“下一步”进行安装。默认情况下JDK的安装路径为:C:\Program Files\Java(这里以C盘为系统盘)。安装完成后还需设定JDK的环境变量,将JDK的bin文件的路径C:\Program Files\Java\jdk1.6.0_14\bin添加到path中。具体做法是:右击“我的电脑”,点击“属性”,打开“系统属性”对话框,在其“高级”选项卡中点击“环境变量”按钮,打开“环境变量”对话框,选择“系统变量”列表中的“Path”选项,如图1-2所示。

点击“编辑”按钮,添加JDK目录中bin文件所在路径即可,末尾要以半角的分号结尾,如图1-3所示。图1-2 环境变量配置1图1-3 环境变量配置2

配置完成后,点击“确定”按钮退出。

3)下面测试安装是否成功。点击“开始”→“运行”,在出现的窗口中输入“cmd”命令,在弹出的命令窗口中输入命令:java–version,如果出现图1-4所示信息,则说明JDK安装成功。图1-4 检测配置信息1.2.2 安装Eclipse

JDK安装完成之后,就可以安装Eclipse了。安装步骤如下:

1)从Eclipse官方网站下载最新版的Eclipse。

2)下载完成之后,解压Eclipse压缩包文件,然后进入解压目录,可以看到一个名为eclipse.exe的可执行文件。

3)双击eclipse.exe文件,即可直接运行Eclipse。如果是第一次启动Eclipse,将会看到一个选择工作目录(Workspace)的提示,如图1-5所示。图1-5 选择工作目录

在Workspace栏内输入指定的工作路径,然后点击“OK”按钮即可。1.2.3 安装ADT

成功安装Eclipse之后,还需要安装ADT开发工具。ADT用于为Eclipse打造一个Android专属的开发环境,包括创建Android开发实例、执行和调试Android程序。

1)首先下载ADT插件,与Android 2.1对应的版本为ADT-0.9.6。ADT下载网址为:http://androidappdocs.appspot.com/sdk/eclipse-adt.html。

2)下载完成后,启动Eclipse,在Eclipse界面内点击菜单栏中的“Help”→“Software Updates”。如图1-6所示。

3)进入Software Updates and Add-ons窗口,其中有两个选项卡,分别是Installed Software和Available Software,如图1-7所示。图1-6 选择“Software Updates”命令图1-7 Software Updates and Add-ons窗口

4)由于已经得到了ADT文件,所以选择Available Software选项卡直接安装即可,点击“Add Site”按钮,并在Add Site对话框中输入存放ADT的路径,如图1-8所示。

5)点击“OK”按钮退出对话框。然后在Available Software选项卡中找到Developer Tools,勾选其下面的两个选项,如图1-9所示。图1-8 Add Site对话框图1-9 勾选Developer Tools下面的两个选项

6)确认操作无误后点击“Install”按钮进行安装。这里最好使用默认设置,安装完成后重新启动Eclipse。1.2.4 安装SDK

1)Android SDK的官方网站为http://androidappdocs.appspot.com/sdk/,可以从该网站下载最新版的Android SDK,如图1-10所示。图1-10 下载Android SDK

2)选择下载适合Windows平台开发的Android SDK程序包,文件名为android-sdk_r05-windows.zip。下载完成之后解压缩到工作目录内,如F:\google_android\java_windows\。在SDK目录内可以发现,Android SDK 2.1不再捆绑platform和add-on这两个文件,因此这两部分需要手动下载。点击执行SDK目录里的SDK Setup.exe,进入如图1-11所示界面。图1-11 选择要安装的包

3)选择“Accept All”下载所有的程序,然后点击“Install”按钮即可开始下载安装。整个下载过程需要一定的时间,请耐心等待。安装过程如图1-12所示。安装完成之后,退出该窗口。

4)接下来要做的就是配置SDK。需要将Android SDK目录中的tools文件夹路径(F:\google_android\java_windows\android-sdk-windows\tools)添加到台式计算机的环境变量Path中,具体配置过程参考JDK环境配置的过程。

5)重新启动Eclipse之后,需要在Eclipse的Preferences中添加Android SDK的路径。点击菜单栏中的“Window”→“Preferences”,如图1-13所示。图1-12 开始下载安装图1-13 点击“Preferences”

进入“Preferences”窗口,如图1-14所示。

6)在“Preferences”窗口左侧的目录中选择“Android”项,然后点击右侧的“Browse”按钮,选择Android SDK 2.1的路径,如图1-15所示。图1-14 配置“Preferences”图1-15 选择Android SDK 2.1的路径

添加成功之后点击“Apply”按钮,加载SDK包。加载完成后,点击“OK”按钮退出即可。1.2.5 创建Android虚拟设备

每一个Android虚拟设备(Android Virtual Device,AVD)都模拟了一套虚拟设备来仿真Android平台,在该平台内至少有自己的内核、系统图像和数据分区,还可以有自己的SD卡和用户数据等。所以在执行Android模拟器时必须创建一个AVD设备。创建过程如下:

1)启动Eclipse,点击菜单栏中的“Window”→“Android SDK and AVD Manager”命令,如图1-16所示。

此时会发现窗口内无任何AVD,如图1-17所示,需要创建一个AVD。图1-16 选择Android SDK and AVD Manager图1-17 窗口内无任何AVD

2)点击窗口右侧的“New”按钮,出现如图1-18所示对话框。图1-18 创建一个AVD

其中,“Name”选项为创建的模拟器的名称,“Target”为创建的模拟器的版本,“Size”为SD卡的容量。根据需要设置这几个选项。

3)创建完毕后点击“Create AVD”按钮创建一个名为sdk_2_1的AVD,如图1-19所示。

4)AVD创建成功之后,选中创建的虚拟设备,然后点击“Start”按钮,启动Android模拟器。如图1-20所示。

这样AVD就创建成功了。图1-19 创建一个名为sdk_2_1的AVD图1-20 启动Android模拟器1.3 搭建Linux下的开发环境

本节将主要讲述在Ubuntu Linux环境下如何搭建Android SDK的开发环境。与1.2节中在Windows环境下搭建Android SDK的开发环境一样,在Linux系统上开发Android应用程序,需要安装Linux版本的Android SDK、Eclipse与JDK,其下载网址和Windows版本相同,注意要下载Linux平台下的开发版本。接下来详细介绍安装过程。1.3.1 安装JDK

本节将说明如何从Oracle公司的网站下载和安装JDK。具体步骤如下:

1)访问http://www.oracle.com/technetwork/java/javase/downloads/网址,选择下载Java SE 6 Update 27版本,接着在Java SE Downloads字段选择下载Linux版本的JDK文件,如jdk-6u27-linux-i586.bin。

说明:由于Android 2.1编译环境现阶段对JDK没有特殊的要求,所以仍然使用JDK 6。

2)下载完毕后,要使用管理员权限执行所下载的可执行文件,根据提示即可完成JDK的安装。

将jdk-6u27-linux-i586.bin文件先存储到/home/dmatek/Android_soft中,如图1-21所示。图1-21 先将文件存储到Android_soft目录中

在Linux环境下,JDK被安装到系统/usr/local/目录下,所以需要将jdk-6u27-linux-i586.bin文件放置到/usr/local/目录下进行安装。使用管理员权限把jdk-6u27-linux-i586.bin文件复制到/usr/local/目录下,如图1-22所示。图1-22 复制文件到/usr/local目录下

仍然以管理员权限执行jdk-6u27-linux-i586.bin,如图1-23所示。图1-23 执行文件

3)安装完毕后,必须修改环境变量才能使用JDK。JDK的安装目录在/usr/local/jdk1.6.0_27,此时需要修改/etc/profile文件。在命令窗口输入sudo vi/etc/profile命令,打开脚本配置文件,然后加入如下Java的环境变量,如图1-24所示。修改后存储profile文件并退出。export JAVA_HOME=/usr/local/jdk1.6.0_27export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOME/bin

4)执行如图1-25所示的命令使设定的环境变量生效。图1-24 修改profile文件图1-25 执行命令使设定的环境变量生效

5)此时在命令窗口执行java-version命令,若能检测到JDK的版本,就说明JDK已经安装成功了,如图1-26所示。图1-26 检测到JDK的版本,表明安装成功1.3.2 安装Eclipse

在Eclipse网站上针对不同程序语言的开发者提供了不同的开发套件,而根据Android开发者的需求,建议选择Eclipse IDE for Java EE Developers、Eclipse IDE for Java Developers或Eclipse for RCP/Plug-in Developers这三种开发套件之一。

本书使用的是Eclipse 3.7.1版本,例如Eclipse 3.7.1 for Linux版本(eclipse-SDK-3.7.1-linux-gtk.tar.gz)。执行下面的命令将eclipse-SDK-3.7.1-linux-gtk.tar.gz从/home/dmatek/Android_soft目录下复制到系统/usr/local/目录下。–$sudo cp rf/home/dmatek/Android_soft/eclipse-SDK-3.7.1-linux-gtk.tar.gz/usr/local/

接着输入如下命令解压缩eclipse-SDK-3.7.1-linux-gtk.tar.gz文件,如图1-27所示。图1-27 输入命令解压缩$ tar -zxvf eclipse-SDK-3.7.1-linux-gtk.tar.gz

当解压缩完成后会得到一个eclipse目录,进入eclipse目录执行下面这个命令就可以启动Eclipse。$./eclipse

首次启动Eclipse会出现提示用户输入工作空间路径的对话框,此时可以自行输入路径或直接使用默认的路径,本书使用的路径为/home/dmatek/apk_workspace,如图1-28所示。

此外,也可以勾选“Use this as the default and do not ask again”,这样以后每次启动Eclipse时就不会再出现这个对话框,而是直接使用这个路径。

当Eclipse顺利启动后,可以看到欢迎画面,如图1-29所示。图1-28 输入工作空间的路径图1-29 Eclipse启动后的欢迎画面1.3.3 安装ADT

在Linux环境下安装ADT时,必须添加一个插件org.eclipse.wst.sse.core,否则安装过程会报错。下载插件org.eclipse.wst.sse.core的网址为http://download.eclipse.org/releases/ganymede/。所以需要先安装org.eclipse.wst.sse.core插件,这个插件安装成功后再安装ADT(Android Development Tools)。下面是进行org.eclipse.wst.sse.core插件以及ADT的安装步骤。

1)点击Eclipse菜单栏中的“Help”→“install new software”,

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载