Android开发

关键词:

Android开发(精选十篇)

Android开发 篇1

对于媒体盒子 (Media Box) , 相信读者都不陌生。网络上各种炫酷的音乐盒子、视频盒子等工具, 就是媒体盒子程序。打开这些媒体盒子工具, 用户可以及时获取到最新的媒体资源、播放排名等信息, 还可以方便地对网络中的音乐和视频进行点播、下载、共享等操作。一般地, 媒体盒子工具还提供了搜索平台来让用户根据条件 (标题名称、艺人姓名、分类信息等) 来搜索其所感兴趣的媒体资源。而且, 当用户成为社区的注册用户之后, 还可以将本地的资源发布到社区中, 分享给其他的成员。

相比通过访问媒体网站的网页来获取媒体资源, 使用媒体盒子的方式更为简单和方便。用户无需打开浏览器工具, 更无需在多个浏览器窗体中切换所要的页面。同时使用媒体盒子产生的网络流量要比使用浏览器少, 从而也节约了不少系统资源。

2分析

2.1分析思路

使用十六进制读取软件解析音乐盒工具的主程序文件, 找出该工具所使用的API或组件类的名称 (如图1所示) , 再根据这些API或组件类的功能说明, 并结合工具的使用特征来推断出其应用机制。

2.2分析结果

使用上述的分析方法, 找到该音乐盒工具所使用的API或组件类, 如表1所示。

通过表1, 初步判断该音乐盒工具内嵌了网页浏览器组件和媒体播放器组件, 通过从互联网读取媒体资源文件来实现多媒体数据的下载和播放。至此, 就会产生如何将网页中的媒体资源的URL传递给播放器组件的问题。

结合对该音乐盒工具的使用, 作者发现, 网页浏览器组件的上下文菜单被屏蔽。当用户点击媒体资源链接 (Anchor) 时, 该资源将自动加入到播放列表当中。从而可以推断, 该工具“截获”了网页浏览器组件对网页中链接元素的分析, 并把与媒体资源相关的链接“提供”给播放器组件。

2.3分析结论

至此, 相信读者已经大致明白了该音乐盒工具的运作机制:当工具启动时, 会通过互联网连接到指定的服务器, 并从服务端获取包含媒体资源并以网页形式存储的数据文件, 继而将该文件载入到网页浏览器组件中。当用户点击网页中所包含的链接时, 工具会对当前所请求的链接进行“截获”。如果判断是媒体文件链接, 那么工具会将该项添加到播放列表, 并根据链接信息通过互联网获取文件流, 继而提供给媒体播放器组件进行播放。如图2所示。

3设计

3.1运行机制

通过以上的分析结论, 相信读者对于在Android平台中开发媒体盒子程序也有了大致的思路。同样的, Android平台中的媒体盒子程序也有网页浏览器组件 (Web View) 和媒体播放器组件 (Video View和Media Player) , 而且幸运的是, Android平台简化了通过网络来获取文件流的过程:网页浏览器组件只需要指定网页资源的URL即可实现网页的加载;播放器组件只需指定播放资源的URL即可实现自动播放。

对于用户所点选链接的URL的“截获”行为, 将由网页视图客户端 (Web View Client) 接口来进行处理。图3是在Android平台中的媒体盒子工具的运作示意图。

3.2界面设计

此外, 考虑到手机设备中屏幕资源的“紧缺”, 所以Android平台中的媒体盒子工具的用户界面不可能像PC平台中的那样“平铺直叙”, 而是需要“紧凑”一些。这里, 选用的主要的界面组件是标签页视图 (Tab Host) , 该组件继承于框布局 (Frame Layout) 。图4是该媒体盒子的主界面。

3.3界面板块

通过图4可以看出, 该媒体盒子工具分为“推荐资源”、“当前播放”、“播放列表”和“本地资源”这4个标签页。其中:

(1) “推荐资源”页所展示的是从服务端获取的、包含媒体资源信息的网页, 其效果如图4所示。该页的主要组件是网页视图 (Web View) 。

(2) “当前播放”页所展示的是当前所播放的视频内容, 如图5所示。

该页面主要的组件是视频视图 (Video View) 和播放控制器 (Media Controller) 。当用户在“推荐资源”页的网页视图中点击视频资源链接 (图5中所选取的视频资源类型为3GP) 时, 媒体盒子将切换到“当前播放”页, 并开始播放视频。

(3) “播放列表”页所展示的是当前添加到播放序列的音频资源列表, 如图6所示。

该页面主要的组件是列表视图 (List View) 。当用户在“推荐资源”页的网页视图中点击音频资源链接 (图6中所选取的音频资源类型为MP3) 时, 媒体盒子将切换到“播放列表”页, 并将当前播放项添加到列表首位, 继而开始播放音频。

(4) “本地媒体”页将要展示的是通过扫描本地存储器之后形成的媒体资源列表, 该功能在这里不予关注。

3.4后台功能

3.4.1加载网页

通过网页视图实例的“load Url”方法可以载入URL所指定的网页资源。

3.4.2分发资源URL

当用户点击网页中的链接时, 网页客户端 (Web ViewClient) 实例可以通过重载URL的加载方法来“截获”目标资源的URL, 再通过判断URL所指明的资源类型来决定将URL提交给相应的组件 (网页视图、媒体播放器或视频视图) 。

3.4.3媒体播放

通过Media Player实例的“set Data Source”方法可以设置URL所指定的音频媒体为播放的数据源;通过Video View实例的“set Video Path”方法可以设置所要播放的视频资源路径。

3.4.4播放列表更新

播放列表的更新包括添加项和调整项顺序。最近播放的项总在整个播放列表的首位。如图7中, 当选择播放列表中第2项后, 第2项的位置将调整为首位, 原第1项的位置调整为第2。

播放列表使用的是列表视图, 列表项的顺序更新实际上是组件所关联的适配器 (Adapter) 的数据容器中的元素位置的更新, 通过适配器的“notify Data Set Changed”方法就可以实现界面与数据容器的“同步”显示。

3.4.5资源下载

当用户长按 (相当于PC平台的右键菜单) 网页视图中链接时, 将会弹出上下文菜单 (Context Menu) , 其中的“下载”菜单项用于下载链接所指向的媒体资源, 如图8所示。

资源下载不仅需要连接到URL所指定的连接结点, 而且还需要在本地创建文件。通过网络连接接口 (URLConnection) 从URL所描述的结点处读取资源的字节流, 再写入到本地文件中, 即实现下载。

4开发

4.1界面布局定义

代码1是图4所示的媒体盒子工具的界面布局定义。

代码1媒体盒子界面布局定义

代码1中第6行即为标签页组件 (Tab Host) 的定义, 有关标签页组件的用法请参考Android SDK的参考。此外, 第34行中定义的按钮组件用于“绑缚”播放控制器。

4.2工程清单

代码2是媒体盒子工具的工程清单文件 (Android Manifest xml) 内容。

代码2媒体盒子工程清单文件内容

代码2中第7行设置了该工具的界面主题为无状态栏 (“No Title Bar”) , 所以工具的主界面 (图4) 没有状态栏。从第8行读者可以看出, 工具的主Activity组件是Media Box Act。第15行中的SDK版本为8表示Android的版本为2.2。

特别的, 第16行和第17行声明了2个使用许可 (Usespermission) , 第16行的是允许访问互联网, 因为有通过互联网获取资源URL的需要;第17行的是允许往扩展存储器 (SD卡) 上写入内容, 因为有下载文件到外部存储器的需要。

4.3功能模块划分

根据功能之间的耦合度, 作者将该媒体盒子工程划分为4个模块:

(1) 配置接口 (Config) , 定义工程中所有配置 (例如:下载目录、服务主页等) 的常量。

(2) 主Activity (Media Box Act) , 主要负责用户界面与后台的交互。

(3) 网页视图客户端实例 (Media Box Web View Client) , 用于“截获”和分发通过网页视图“转发”过来的资源URL。

(4) 下载线程 (Download Thread) , 用于提供后台下载。

4.4功能实现

4.4.1主Activity填充界面布局

代码3是主Activity填充界面布局的关键代码。

代码3 Activity填充界面布局

代码3中, 主Activity填充界面布局资源为内容视图 (第4行) 。从第7行到第10行, 初始化资源文件中定义的组件 (标签页视图、视频视图、列表视图、网页视图) 。从第13行到第22行, 初始化标签页视图中的4个标签页内容。

4.4.2初始化核心组件

(1) 播放列表视图

代码4是初始化播放列表视图的主要代码。

代码4初始化播放列表视图

代码4中, 使用数组适配器对列表视图 (播放列表组件) 进行初始化 (第5行) 。

(2) 音频播放器

(3) 网页视图

代码5是初始化网页视图的主要代码。代码5初始化网页视图

代码5中, 第3行中构造了网页视图客户端实例, 并绑定到网页视图 (第5行) 。第9行中指明网页视图载入指定的网页 (HTML文件) 。

(4) 视频视图

代码6是初始化视频视图的主要代码。

代码6初始化视频视图

代码6中, 创建了一个播放控制器实例 (第4行) , 然后将其绑缚到可视组件中 (第7行) , 同时将播放控制器与视频视图相互绑定 (第9行和第11行) 。

4.4.3主界面线程消息队列处理器

代码7是初始化主界面线程消息队列 (Message Queue) 处理器的主要代码。消息队列处理器给下载线程提供了向主Activity发送消息 (例如:下载完毕的消息) 的接口。

代码7初始化主界面线程消息队列处理器

代码7中, 定义了消息的处理函数 (第3行) , 一旦主线程消息队列接收到消息, 就会获取消息内容 (第8行) 并以提示条的形式进行显示 (第10行) 。

4.4.4网页链接URL分发

当用户在网页视图中点击资源链接时, 视图载入对应链接URL的行为将在网页视图所绑定的网页视图客户端来进行。代码8是媒体盒子网页视图客户端的完整定义代码。

代码8媒体盒子网页视图客户端定义

代码8中, 媒体盒子网页视图客户端重载了URL的载入方法 (第15行) , 并将所获取到的URL转给主Activity来处理 (第16行) , 而不再执行默认的载入行为 (第17行) 。

代码9是主Activity对从网页视图客户端传递过来的资源URL进行判断和分发的主要代码。

代码9代码标题

代码9中, 先对播放状态进行了重置 (第4行和第5行) , 然后在通过URL判断媒体资源类型是视频还是音频, 从而调用对应的播放方法 (第8行或第12行) 。

4.4.5播放音频资源

代码10是停止和启动播放音频资源的主要代码。

代码10停止和启动播放音频资源

代码10中, 第11行是对包含“file://”前缀 (文件传输) 的URL进行调整, 应该去掉协议模式部分 (有关URL的组成请参考有关资料) , 对“http://”前缀是无需调整的。第18行, 通过媒体播放器的“set Data Source”方法来指定所要播放的音频资源的URL。

4.4.6播放视频资源

代码11是停止和启动播放视频资源的主要代码。

代码11停止和启动播放视频资源

代码11中, 通过视频视图的“set Video Path”方法来指定所要播放的视频资源的路径 (第10行) 。

4.4.7资源下载

代码12是当用户点选上下文菜单中“下载”项进行资源下载 (见图8) 的主要代码。

代码12启动资源下载

代码12中, 当用户点选网页视图的上下文菜单项后, 可以通过视图的“get Hit Test Result”方法来获取该点击测试结果 (第5行) , 并获取有关的资源URL (第6行) 。获取到目标资源的URL之后, 就可以以此来启动下载线程 (第22行) 。

代码13是下载线程的核心代码。

代码13下载线程核心代码

代码13中, 通过URL来建立连接接口 (第10行) , 并获取接口的输入流 (第11行) , 用于从URL所指定的结点处获取字节流。同时根据文件名来创建本地文件系统的输出流 (第14行) 。通过从远程输入流到本地文件输出流的字节拷贝即完成下载过程 (第20行到第22行) 。

当下载线程下载完毕时, 该线程通过主界面线程消息队列处理器来向主Activity传递消息 (第32行) , 再由主Activity显示消息内容 (见代码7) 。代码14是下载线程向主Activity发送消息的核心代码。

代码14下载线程向主Activity发送消息

读者可以看出, 代码14中的过程与代码7中的是逆向的:代码14中是将消息内容添加到数据包 (第5行) 中并发送 (第10行) ;而代码7中是接收消息, 并提取数据包中的消息内容。

4.4.8更新播放列表

代码15是更新播放列表的主要代码。

代码15更新播放列表

代码15中, 首先要对新增项进行是否重复的判断 (第4行) , 如果存在重复项 (第6行) , 则需要先删除已存在项对应的元素 (第7行) 。总而言之, 新增项都会放置到列表的首位 (第11行) 。

当数据集更新之后, 还需要通过列表适配器来“通知”列表视图重绘内容 (第18行) 。

5结语

通过上述的介绍, 相信读者已经大致理解在Android平台下开发媒体盒子程序的功能框架和过程细节。而且, 只要读者有一定的Android平台开发经验, 甚至可以依葫芦画瓢地开发出一款定制的媒体盒子工具。但是从商业应用的角度而言, 运行于移动设备上的媒体盒子工具需要无线网络和内容管理平台的支持。通过GPRS或Wi-Fi接入的方式, 连接到无线互联网服务商所提供的无线网络, 这样才能与内容管理服务器进行通信, 从服务端获取媒体资源信息。

android 开发心得 篇2

一 个常见的流畅问题是,一个应用程序的后台处理——例如,一个 Service或者

BroadcastReceiver——弹出一个对话框来响应一些事件。这可能看起来没啥大碍,尤其是你在模拟器上单独地构建和测试你 的应用程序的时候。然而,当你的应用程序运行在真机上时,有可能你的应用程序在没有获得用户焦点时后台处理显示了一个对话框。因此,可能会出现在活跃的应 用程序后方显示了你的应用程序的对话框,或者从当前应用程序夺取焦点显示了一个对话框,而不管当前用户正在做什么(例如,正在打电话)。那种行为,对应用 程序或用户来说,就不应该出现。

为了避免这些问题,你的应用程序应该使用合适的系统资源来通知用户——Notification类。使用Notification,你的应用程序可以在状态栏显示一个 icon来通知用户已经发生的事情,而不是夺取焦点和打断用户。

另 一个流畅问题的例子是未能正确实现Activity的 onPause()和其它生命周期方法而造成意外丢失了状态或用户数据。又或者,如果你的应用程序想暴露数据给其它应用程序使用,你应该通过 ContentProvider来暴露,而不是(举例)通过一个可读的原始文件或数据库来实现。

这 些例子的共同点是它们都应该与系统和其它应用程序协作好。Android系统设计时,就把应用程序看作是一堆松散耦合的组件,而不是一堆黑盒代码。作为开 发者来说,允许我们把整个系统看作是更大的组件集合。这有益于我们可以与其它应用程序进行清晰无缝的集成,因此,作为回报,我们应该更好的设计我们的代 码。

下面将讨论常见的流畅问题以及如何避免它们:

一 定要记住Android是一个移动平台。可以显而易见地说,其它Activity(例如,“Incoming Phone Call”应用程序)可能会在任何时候弹出来遮盖你的Activity,记住这个事实很重要。因为这个过程将触发 onSaveInstanceState()和 onPause()方法,并可能导致你的应用程序

被杀死。

如 果用户在你的应用程序中正在编辑数据时,其它 Activity出现了,这时,你的应用程序被杀死时可能丢失那些数据。当然了,除非你事先保存了正在进行的工作。“Android方式”是这样做的:能 接收和编辑用户输入的 Android应用程序应该重写 onSaveInstanceState()方法,并以恰当的方式保存它们的状态。当用户重新访问应用程序时,她能得到她的数据。进行这种处理方式最经典的例子是 mail应用程序。如果用户正在输入 email,这时其它 Activity启动了,mail应用程序应该把正在编辑的email以草稿的方式保存起来。

如果你不想穿着内衣在大街上溜达的话,你的数据也不应该这样。尽管可能存在暴露应用程序的某种形式给其它应用程序,但这通常不是最好的主意。暴露原始数据,要求其它应用程序能够理解你的数据的格式;如果你变更了格式,那么,你将破坏那些没有进行同步更新的应用程序。

“Android 方式”是创建一个 ContentProvider,以一种清晰的、深思熟虑的和可维护的API方式暴露你的数据给其它应用程序。使用 ContentProvider,就好像是插入Java接口来分离和组装两片高耦合的代码。这意味着你可以修改数据的内部格式,而不用修改由 ContentProvider暴露的接口,这样,也不会影响其它应用程序。

如果用户正在运行一个应用程序(例如,Phone程序),断定对用户操作的目的才是安全的。这也就是为什么必须避免创建Activity,而是直接在当前的 Activity中响应用户的输入。那 就是说,不要在 BroadcastReceiver或在后台运行的 Service中调用 callActivity()。这么做会中断当前运行的应用程序,并导致用户恼怒。也许更糟糕的是,你的 Activity可能成为“按键强盗”,窃取了用户要提供给前一个 Activity的输入。视乎你的应用程序所做的事情,这可能是个坏消息。

不 选择在后台直接创建 Activity UI,取而代之的是,应该使用NotificationManager来设置 Notification。它们会出现在状态栏,并且用户可以在他空闲的时候点击它们,来查看你的应用程序向他显示了什么。(注意,如果你的 Activity已经在前台了,以上将不适用:这时,对于用户的输入,用户期望的是看到下一个 Activity来响应)

如果你的应用程序需要执行一些昂贵或耗时的计算的话,你应该尽可能地将它挪到线程里。这将阻止向用户显示可怕的“Application Not Responding”对话框,如果不这样做,最终的结果会导致你的应用程序完全终止。

一 般情况下,Activity中的所有代码,包括它的 View,都运行在相同的线程里。在这个线程里,还需要处理UI事件。例如,当用户按下一个按键,一个 key-down事件就会添加到 Activity的主线程队列里。事件处理系统需要很快让这个事件出列并得到处理;如果没有,系统数秒后会认为应用程序已经挂起并为用户提供杀死应用程序 的机会。

如果有耗时的代码,内联在Activity上运行也就是运行在事件处理线程里,这在很大程度上阻塞了事件处理。这会延迟输入处理,并导致ANR对话框。为了避免这个,把你的计算移到线程里。

任 何值得使用的应用程序都可能有几个不同的屏幕。当设计UI屏幕时,请一定要使用多个Activity对象实例。依赖于你的开发背景,你可能理解 Activity类似于 Java Applet,它是你应用程序的入口点。然而,那并不精确:Applet子类是一个 Java Applet的单一入口点,而一个Activity应该看作是你的应用程序多个潜在入口点之一。你的“main”Activity和其它之间的唯一不同点 是“main”Activity正巧是在AndroidManifest.xml文件中唯一对“android.intent.action.MAIN”动作感兴趣的Activity。因此,当设计你的应用程序的时候,把你的应用程序看作是Activity对象的 集合。从长远来看,这会使得你的代码更加方便维护。

当 谈到 UI观感时,巧妙地交融非常重要。用户在使用与自己期望相反的 UI的应用程序时,会产生不愉快的感觉。当设计你的 UI时,你应该尽量避免太多自己的主题。相反的,使用同一个主题。你可以重写或扩展你需要的主题部分,但至少在与其它应用程序相同的 UI基础上开始。

不 同的 Android设备可能支持不同的屏幕分辨率。甚至一些可以自己变更分辨率,例如,切换到风景模式。确保你的布局和图片能足够灵活地在不同的设备屏幕上正 常显示。幸运的是,这很容易做到。简而言之,你需要做的是为主要分辨率提供不同版本的作品,然后为不同的尺寸设计你的布局。(例如,避免使用硬编码位置而 使用相对布局。)如果那样做的话,系统会处理剩下的部分,而且你的应用程序在任何设备上都看起来很棒。

Android设备会有多种网络连接选项。所有的都提供数据访问,但之间肯定有更快的。其中,速度最慢的是GPRS,GSM网络的非 3G数据服务。即使具备 3G能力的设备在非3G的网络上也会花费很多的时间,所以,网络很慢仍然是一个长期存在的事实。

这 就是为什么你应该按照最小化的网络访问和带宽来编写你的代码。你不能假设网络是快速的,所以,你应该总是计划它是慢的。如果你的用户碰巧在一个快速的网络 上,那很好——他们的用户体验会提升。你要避免相反的情形:在不同的地点和不同时间,应用程序有时可用,有时慢得令人抓狂,这样的程序可能不会受欢迎。

还 有一个潜在的地方是,如果你正在使用模拟器,那么你很容易受它迷糊,因为模拟器使用电脑的网络连接。这比手机网络快很多,所以,你需要修改模拟器设定来模 拟较低的网络速度。你可以在 Eclipse中做到这点,在启动选项的模拟器设置页里设置或者在启动模拟器时通过命令行选项设置。

Android 可以支持多种外观形状。也就是说,一些Android设备拥有全“QWERTY”键盘,而其它可能会有40键、12键或其它键盘设置。同样的,一些设备可 能有触摸屏,但一些也会没有。当创建你的应用程序的时候,记住这一点。不要假定特定的键盘布局——除非你真的想限定你的应用程序只运行在某些设备上。

如 果移动设备经常插在墙上,那么,它也就不是很“移动”。移动设备是电池供电的,如果我们能让每次充电的电池使用得更持久一些,那么每个人都会更加开心—— 尤其是用户。

其中两大耗电硬件是处理器和无线;这也就是我们为什么要写尽可能少做工作、尽可能少去使用网络的应用程序的重要原因。

如 何让你的应用程序最小化的占用处理器,归根结底还是要写高效代码。为了减少无线的电量消耗,确保对错误条件进行正确的处理,并只获取你要的东西。例如,如 果某一个网络操作失败了,不要不断地进行重试。如果失败了一次,有可能是用户不受欢迎,因此,如果你再以正确的方式操作,有可能还会失败;所有你做的都是 在浪费电池。

Android开发 篇3

触控科技起家于iOS开发者社区——CocoaChina,这个社区从2010年开始聚集了国内一大批开发iOS应用的兴趣爱好者,这里进行的信息交流和资源共享帮助他们碰撞出很多成功的作品,触控科技后来研发的《捕鱼达人》和《魔法学院》等知名游戏中很多开发者都是从这个社区中混迹出来的。但是今年,《捕鱼达人》这样曾经在全球20多个国家畅销的游戏,在iOS的后续版本收入上不断下滑,陈昊芝说,苹果仍然是最好的做工品牌,但从手机的增量表来看,苹果增量几乎滑落到摩托罗拉等手机的水平,不再是将来可以预期的最大市场了。他补充道:“苹果的审核周期、审核质量、审核流程都出现了非常多、非常严重的问题。以前,给苹果提供应用时,大家忐忑的是自己做的不够好;今天给苹果提供应用,我们忐忑的是苹果会不会‘抽风’。”

因此,去年陈昊芝就采用了一系列策略将重点转向Android。2012年年初,他投资开源游戏引擎Cocos2D-X,可以自动把iOS版本的游戏应用程序转换成合适的比例,直接用于Android版本;他还在Android各市场加大推广力度,他说自己在admob上面一掷千金,做了两天的包场宣传,效果十分好;他还在加强多种渠道的合作拓展,比如与应用市场、手机装机市场、运营商合作,比如《捕鱼达人2》在奇虎360手机应用商店上线,一个月内下载安装300万次,并带来400万元收入,两个月的收入达到为1500万元,而《捕鱼达人2》来自运营商的收入增长迅速,已经占到总收入的90%以上。

对于陈昊芝来说,移动游戏的最佳运营策略是在iOS上做出知名度,再进入Android市场赚钱。现在,包括触控科技的《捕鱼达人2》在内,国内的世界Online、忘仙、QQ御剑等几款游戏都已经确认在Android市场达到或者超过千万级收入,他乐观地预计,今年移动游戏收入50%来自Android。

其实,像陈昊芝这样敏锐的开发者已很多——从苹果如日中天时全面投身iOS,在Android崛起后又转移战略重点,而且随着2013年Android市场的进一步增强,也许越来越多的果粉和开发者将会同意他的观点。Android将会全面超越iOS吗?

开发者转舵

好豆网首席品牌官齐鲁在2012年得到了一份满意的成绩单,专注于美食分享的好豆网移动应用下载量突破了600万,在业界打响了知名度。但其中绝大部分用户来自于Android系统,“Android和iOS的下载比例大概是2比1的样子”,齐鲁说,而今年公司团队放在Android市场的精力确实要多一些。

目前,除了游戏以外的大部分国内移动应用是不赚钱的,因此像好豆网这样的生活类应用的首要目标就是要获得更好的用户下载量和口碑,再靠广告和线下活动等方式来盈利。Android平台显然用户基数最大。根据最近IDC发布的报告,去年Android已经占据全球智能手机75%的份额,第三季度的手机出货量首次突破1亿部大关;而根据美国Business Insider Intelligence的最新调查,中国90%的智能手机来自Android系统,而且是新用户的主要来源,这些都促使应用开发者不再把iOS作为投入的首选平台。

“iOS的推广渠道少,排榜机制是考虑综合因素,所以开发者经常会感到有心无力。”齐鲁说,即使好豆网曾被评为iOS分类榜上的“年度最佳应用”,他也没总结出能快速提高下载的方法,通常的策略是迭代快、活动多或者获得行业排榜名次和推荐。相反,Android市场就相对简单,虽然国内Android市场平台多,在这些平台上面首发也要很多人力去对接,但是与这些平台的合作却相对简单,可以通过投放广告和推荐位置等各种方式提高排名,所以受到有实力的开发者偏爱。

比如,盘古搜索就投入60%以上的研发力量在Android系统开发的客户端开发工作中。盘古搜索CEO王宏宇对记者表示,由于目前搜索市场竞争非常激烈,盘古搜索采取差异化竞争策略就是走移动搜索路线,而且要针对不同人群开发特色鲜明的手机客户端,比如年轻人群的“时尚版”以及信息人群的“大众版”,这些客户端主要下载都来自Android平台。因此,盘古搜索在国内数十家知名应用市场上做推广,虽然很多是非官方出口,但是下载量却能够稳步上升,她表示今年会考虑加大营销投入,联合几个大应用市场举办大型推广活动。

与此同时,开发者对Android很难赚到钱的印象也在改变。在去年之前,大量开发者都认为开发Android版本吃力不讨好:一方面,不同品牌型号的终端硬件增加了开发者的研发成本;另一方面,Android用户比较偏技术人群和低消费人群,远不如苹果的小资人群有消费能力。但是现在Android平台中以三星为首的高端机型以及使用千元手机的学生、白领甚至农民工都显示出其价值。

“Android用户应该更容易付费”,爱奇艺副总裁杨向华说,因为使用千元手机的用户中主要是年龄低、学历低、收入低的“三低”人群。在负责爱奇艺移动端之前,杨向华曾经负责网站的付费用户服务,他认为这些用户接触互联网的第一渠道是手机而不是PC,他们更容易使用手机消费游戏、音乐和视频等娱乐内容,付费需求也更强。不过,在Android平台上开发视频应用显然更麻烦,由于设备机型不一样,分辨率也不同,杨向华和他的团队在Android播放器研发上就花了很多精力反复调整,他甚至要考虑如何让千元机播视频“不卡”,因此Android终端版本一再推延,就是因为好的播放体验相当难为。但是,Android的前景却让他甘之若饴地投入更多的资源,2012年奇艺移动客户端的播放量已经达到了整个网站播放量的20%,他期待今年Android手机的增长把移动视频播放推向更高的份额。

91无线的CEO胡泽民也给出了这样的数据:2010年Android玩家的付费能力只有苹果玩家的1/5,但是在过去了两年里,付费能力提高了3倍,如今在某些游戏里面与苹果用户比例差不多了。他表示,91与Android官方应用市场互相拜访希望能够在中国建立更完整的生态链,目前Android手机在91的下载量已经接近2/3,而且每季度有上万的Android开发者涌入,这都预示着Android在开发者心中开始“主流”起来。

一统江湖的变数

事实上,Android在推出5年之后已经风光无限,谷歌应用商店Google Play获得了惊人的增长,而且谷歌应用商店盈利增速超过了苹果。现在,谷歌和苹果的应用商店已经在应用程序数量上势均力敌,而且谷歌应用商店每日营收增长也超过了苹果App store。根据手机应用调查公司Distimo的2012年年度报告,谷歌应用商店在全球20个最大国家和地区开放,每日营收同比增长了43%,而苹果同期增长率为21%,这还包括其他非官方渠道的下载收入。

但是,Android风光能否持续还存在变数。在Android联盟内,最大的问题是各终端厂商都根据自己的需要推动Android的发展,而不是谷歌或其他多数厂商的利益。从一开始谷歌与三星、索尼、沃达丰等11家合作伙伴约定每18个月更新一次Android系统,就没有办法完全实现。从2011年底开始,Android手机升级就变得困难重重,以至于每隔几个月Android就会碎片化一次,比如三星对Galaxy S手机的Android 4.0升级就曾提出特例,因为这款手机的硬件配置无法负担升级后的操作系统和三星定制化的TouchWiz用户界面。有调查数据表明,明年Android系统将升级至5.0版本,而目前使用2010年Android 2.33之前版本的用户仍然超过50%。与苹果相比,Android在统一硬件和的生态链上面都更薄弱。

在用户更忠诚于手机品牌而不是Android系统的情况下,尤其在中国等地区,手机硬件厂商的策略将会影响Android的市场份额。比如,三星继自主研发Bada操作系统之后又一次启动了智能手机操作系统战略,将联合包括英特尔、Docomo等在内的多家公司共同开发一款新的智能手机操作系统“Tizen”,并将于2013年在多个国家推出基于该操作系统的智能手机。参与开发Tizen系统的还包括松下、NEC、英国沃达丰、法国电信以及欧洲其他几家移动运营商。另外,最近中兴美国公司CEO程立新表示,今年中兴将与欧洲无线运营商合作推出基于Mozilla火狐系统的智能手机,该操作系统是德国电信、sprint Nextel以及西班牙电信开发的基于Mozilla技术的开放操作系统,这一操作系统就是为了抗衡谷歌Android而推出的。

在主流终端厂商减少对Android依赖的同时,千元智能手机市场也在受到众多操作系统的包抄。今年年初促进开源软件项目的Canonical公司宣布,今年年底基于Ubuntu开源操作系统的手机将有望上市。作为开源的操作系统,Canonical在视频中描述了一个自由定制、更新快速、新鲜好玩、界面华丽的系统,该系统还同时支持移动和桌面两个系统,系统采用全手势操作,Ubuntu移动系统支持HTML5网页程序以及云同步服务,用户可以在多台设备之间共享文件,这些富有想象力的设计受到极客们的欢迎。此外,阿里巴巴主导的阿里云操作系统也表示在2013年推出20款以上的手机终端,而且该系统很可能获得目前增长最快的联想、华为、步步高、小米、酷派等手机的支持。

不仅如此,Android薄弱的生态链也是一个值得关注的变量。比如,苹果已经给开发者开出了更高的价码。从去年下半年开始,苹果开始向开发者支付更多的分成,到去年底,苹果应用下载次数已突破400亿次,并且已经向开者支付超过70亿美元,苹果下载增长只有60%,但是开发者的收入增长却达到了75%,这无疑会刺激更多的开发者投入iOS平台。

从开发者的角度,他们愿意尝试一切带来推广渠道和资源的操作系统。齐鲁就表示,早期微软官方邀请好豆网去微软进行Windows8系统培训,并提供给开发者很多格式化的软件和推荐位置,好豆网积极参与也获得不少于十万级的下载。如果三星和其他系统发出邀请,他们也会考虑开发相关版本的应用,因为一个成熟的开发团队快速跟进并不是难题。而陈昊芝现在最关注的是,2013年,Android市场一定会进入大型游戏公司移植产品、海外成功产品国内本地化发行、国内移动游戏团队成功产品版本升级或者持续迭代的阶段,留给独立开发者和团队的空间与时间越来越少了。

Android开发 篇4

近日, 由英特尔公司、Testin云测试联合举办的首届“英特尔凌动智能手机及平板应用开发有奖竞赛”正式启动。本次大赛旨在欢迎更多的移动开发者针对英特尔平台和相关设备进行应用开发、适配和优化。比赛基于Testin旗下的真机自动化云测试平台开展, 由中国第三方Android应用商店应用汇及91安卓市场提供大赛支持, 天极网及腾讯互联参与协办。

本次大赛持续四个月, 从12月18日开始到2013年4月18日接受参赛, 面向全球范围内拥有创新性及自主知识产权的移动开发企业及个人开发者。大赛每个月前500位参赛者均将获得专业自动化测试经费;而本次大赛重要支持伙伴“应用汇”及91旗下“安卓市场”也将专门开辟“英特尔优秀应用专区”, 宣传通过比赛平台检测支持英特尔架构的优秀A PP应用。英特尔作为这次比赛的合办方, 为参赛的移动开发者提供了开发工具和技术文档及丰富奖品, 包括每个月送出2部Intel Inside智能手机大奖馈赠开发者。

Android开发 篇5

近些年来,随着计算机技术与硬件的发展和互联网时代的到来,当今社会已经进入了信息时代,也有人把它称为数字化时代,在这数字化的时代里,传统的手机应用已经跟不上历史的潮流。手机运动助手就是为满足各种热爱运动人群的需求而开发的一套实用的软件。通过互联网创建手机运动助手运动软件,可以宣传健康运动方式,从而促进人们的健康运动知识的提高。使用Android平台开发的运动软件,可以在用户登录后提供选择运动模式、制定运动计划以及符合自己运动习惯的细节设置、提供相关运动数字作为参考、对用户信息进行分享查看删除等功能。

关键词:Android平台;手机运动助手软件;移动开发;SQLite数据库

中图分类号:TB

文献标识码:A

文章編号:16723198(2016)04022504

1 引言

本章是对本论文所描述课题的背景及自己对该课题的研究的意义的介绍,主要包括介绍Android平台的背景、论述论文研究的意义等。

1.1 论文研究的背景

在对本课题进行设计的时候,首先要熟悉Android平台的结构和开发环境,也就是要了解Android SDK软件开发中的一些类库和熟悉工具包的使用及Android平台提供的多个接口函数。其次就是要熟悉Android平台下的开发技术,如Activity的生命周期、事件的处理机制、监听机制、数据的存储等等。最后就是能够很好的运用相应的开发工具进行程序的编写和调试等。

在做好以上的准备后就是对手机运动助手的研究。虽说在网上有很多的手机运动助手,但是分析发现还有许多的不完善之处。而这次课题的研发就是在借鉴网上的手机运动助手的基础上进行一些改进,让用户使用起来更舒服。而在网上的许多的手机运动助手都只是单一的测量距离。而本次研究课题的主要实现的功能就是实现测步、测速、计算消耗卡路里、保存数据等等。从而使用户在安装一个软件的情况下享受多种功能。

1.2 课题研究的意义

作为一个Android新手,选择一个基于Android平台的应用程序做论文的研究课题,具有很大的意义。

首先对于本课题的研究,对社会具有一定的意义,可以说是有很小的意义。通过浏览网上的一些手机运动助手发现,虽说它们的功能都很强大、界面很炫酷,但是都是单一的手机运动助手。而这个课题就是把手机运动助手的各种功能相结合,使功能尽可能的满足用户。系统的界面设计得相当的简洁,给用户清新的感觉。所以对用户具有一定的意义。

其次就是对自己意义重大。虽然经过一段时间的Android学习,但是自己对这段学习成果也不是很有底,而正好可以通过编写这个论文来检验一下自己,检查自己的不足和漏洞,从而进行弥补和完善。而从大局来看就是可以对自己四年的专业知识进行一下测试,也为自己以后的工作积累点经验等等。所以总体来说这篇论文对自己的意义还是很大的。

2 需求分析

需求分析是软件工程中非常重要的一步,充分的需求分析是设计好程序的前提。这里主要包括系统的总体需求、系统的需求分析、系统的需求说明和系统的可行性分析。

2.1 系统的总体需求

现在无论是在PC上还是在手机上,相信很多人都在用手机运动助手。所以手机运动助手的作用就越来越重要。开发一个实用的手机运动助手就越来越适合当今的发展趋势。

本文就是在此基础上提出总体的功能需求。主要就是能够实现测步、测距、测速、保存数据。通俗的讲就是通过手机运动助手的多功能化,来满足更多用户的需要。这可以说是该系统开发的一个小小的亮点吧。因为现在很多的手机运动助手都是单一的功能。

2.2 系统需求分析

本文研究课题主要就是在基于Android平台下设计并开发一个手机运动助手软件。运用当前Google提供的Android SDK来实现对模块的查询。当然使用的数据库是Android自带的小型数据库Sqlite。尽管没有面向对象的数据库的作用强大,但是在Android开发上还是比较的灵活和方便的。系统的总体的功能业务可以主要描述为以下几点。

2.2.1 主界面菜单选项功能

主界面是该软件的第一个真正意义上的可操作界面,是响应用户的第一步操作,主要就是获取用户运动时的各项数据。界面的主要需求就是简单明了,再加上清新明目的背景图片,一定会给用户视觉上的快感。主界面拒绝那些繁琐的操作,给用户以方便。

2.2.2 帐号注册功能

帐号注册界面是在主界面点击帐号注册后,切换到帐号注册界面,然后进行帐号注册。输入相应的信息,然后把注册结果显示在该界面。这里主要使用的是Android中的XML进行布局。为了避免让用户在查询的时候感到眼花缭乱,在此就不再用图片做背景,减少干扰。

2.2.3 登录功能

登录也是在主界面上输入帐号密码,点击登录后,系统对帐号和密码进行验证成功则进入系统,失败则提示用户重新输入。

2.2.4 数据处理功能

数据处理功能是对用户在运动时的各项数据进行统计和处理,利用重力感应系统测速、测步、并通过这些数据计算出消耗卡路里的值,将统计的数据通过分享通过希望的途径传播出去。

3 系统的可行性分析

3.1 复杂分析

本系统的数据库文件是根据任务书要求做的调研进行设计而出,在进行数据库方面的设计时,要考虑到满足本系统的功能实现。重点是数据库的数据传输,可以与手机上的进行互动。

3.2 可行性

随着Android的快速发展和不断完善,Android的应用是越发的广泛。所以基于Android平台的手机运动助手小程序也是越来越多、越来越受欢迎。而一款好用且功能强大的手机运动助手软件可以为用户提供随时随地的服务,很多的Android手机运动助手的开发和网络上各种版本手机运动助手的出现,相信很多的用户都会选择享受这种服务。因而从服务的角度来说,具有可行性。

通过以上的需求分析和对系统复杂性的分析,基于Android的手机运动助手的开发具有现实性,综述该论文的设计开发具有可行性。

4 总体设计

根据软件工程的思想对该系统进行总体的设计。主要包括系统的设计目标、总体设计、总体流程图、功能模块图和数据库的设计。

4.1 系统的设计目标

通过对网上主流的手机运动助手app了解,在借鉴网上手机运动助手app的基础上,设计一个有所创新的手机运动助手app,而这个创新主要是体现在功能上。也就是说在实现计步的同时,实现测速、测距、计算消耗卡路里等功能。所以这也是这次毕业设计所要达到的设计目标。

4.2 系统的总体设计

手机运动助手需要具备的功能主要就是注册、登录、计步、测步速、测速度、计算消耗卡路里、记录、查看历史记录、删除记录、分享数据等。所以我们主要是围绕以下两项主要功能来实现的。该论文讨论环境主要是在Windows的操作系统下搭建,在Android平台上开发和运行。

4.3 系统框架设计

系统的框架的设计主要就是通过对系统的主要的流程和模块进行设计。在这里我们就对该系统的主要的流程和模块进行简单的介绍。

4.4 系统总体流程图

在启动Android的模拟器以后,系统首先显示登录功能界面,用户可选择是注册新用户还是登录,注册成功后返回登录界面,登录成功后进入主界面,当用户进行跑步或者散步等运动时,系统会记录下用户的各种运动数据,当按下重置时,系统会自动保存用户本次运动的数据,行成记录显示在界面长按记录进行删除。其整个流程如图1所示。

注册就是在登录界面用户点击注册按钮之后,进入注册页面,填寫注册信息,点击提交,系统进行验证,通过则在数据库添加,否则提示用户输入的信息有误,注册成功返回登录界面。

用户登录也就是在用户输入帐号密码点击登录以后,系统对用户输入的帐号密码进行验证,成功进入主界面,否则提示用户重新输入。

4.5 系统功能模块设计

系统的功能框架,主要分为对用户注册、用户登录、数据统计、数据处理。

用户注册模块包括了对用户填写的注册信息的验证,帐号的唯一性检测,新增功能。

用户登录模块包括了对用户输入的帐号、密码的格式规范、长度判断、通过服务器连接数据库查询获取,判断帐号与密码是否正确等功能。

数据统计模块包括了对用户在运动时各种数据的测试、计算,是先暂停/继续、重置(添加数据记录)、设置、查看记录等功能。

数据处理模块包括了对用户保存的历史记录进行查询、删除、分享等操作。

4.6 系统数据库的设计

本部分主要分为两个模块:用户模块和数据模块,且都为SQL Server2008数据库。

5 详细设计

在软件工程的思想中,详细设计是整个工程中最为重要的部分。经过详细设计,系统的整体结构和细节就确定了下一步就只需要编码就行。本章主要包括详细设计的目标、功能详细设计及界面详细设计。

5.1 系统详细设计目标

在对系统的总体设计完成以后,接下来就是对系统的详细设计。对于系统的详细设计主要就对其功能和界面的详细设计。

在对功能的详细设计上详细说明具体的设计方法和所要调用的方法。界面的设计通过简单的示意图来进行详细的介绍。总之,通过详细设计,能让我们很快、很好的编写代码。

5.2 系统的功能详细设计

5.2.1 登录模块功能详细设计

(1)注册功能。

注册模块的功能就是把用户在界面输入的注册信息添加到数据库中。首先在Activity内定义Button实例绑定用户页面的按钮,用setOnClickListener给它添加一个监听器,在监听器内调用向服务器请求连接并在数据库新增的操作。

(2)登录功能。

用户登录就是在登录界面,用户输入自己的帐号和密码,点击登录按钮,系统在按钮监听内相应事件,请求连接服务器并查询相应的帐号和密码,并判断帐号和密码是否正确,不正确则提示用户输入的帐号和密码有误,重新输入,正确则提示用户登录成功,并进入主界面。

5.2.2 数据获取功能详细设计

数据获取就是在进入主界面后,当用户进行跑或者散步等活动的时候系统会自动的同过手机重力感应和GPS来获取用户运动时的数据,如:步数、步长、距离、速度并计算出消耗卡路里等数据,用户在该界面可点击暂停/继续、重置、设置、记录等菜单按钮,当点击重置时,系统会自动将本次运动产生的数据通过服务器添加到数据库。

5.2.3 设置功能详细设计

设置功能实现的目的是为了让用户能够更精确的获取运动时产生的数据,可对身高体重、步长、系统感应灵敏度等常量进行设置,还可设置语音对用户进行提示。

5.2.4 数据处理功能详细设计

当用户在主界面点击重置按钮时,系统会自动通过想服务器发出连接请求并将数据添加到数据库,点击记录按钮时可查询此用户所有的运动数据信息并形成列表显示在界面,长按数据行可对此列数据删除,同时在主界面有分享功能把当时收集的数据通过你希望的途径发送出去。

5.2.5 系统的界面详细设计

本节主要是对手机运动助手中的所有界面的设计进行详细的解释。按照功能的需求分析,主要就是详细的介绍五个界面:注册界面、登录界面、主界面、设置界面、记录信息界面。

5.2.6 登录界面的设计

登录界面是用户在运行该软件的时候第一个出现的界面。主要的设计还是在XML中实现的,在XML中定义一个ImageView控件,来加载drawable-hdpi文件中的背景图片。

5.2.7 注册界面的设计

注册界面的设计是在登录界面之后出现的一个可操作界面,该界面就是让用户通过这个界面来注册自己登录系统的通行证。主要就是在XML文件中布置Button按钮控件,然后分设置相应的属性,设置不同Button按钮的ID属性,然后Function类对该界面的实现。通过类中定义的Button,用FindViewById方法获取各个Button按钮的ID值。然后分别为按钮设置监听器。最后把监听器绑定到相应的Button按钮上,实现界面之间的跳转。

5.2.8 主界面设计

主界面的功能就是把在用户运动时获取到的数据和计算出的结果在界面上显示出来。并且在得出结果之后,可以通过菜单键按钮来进行操作。总的设计过程是要在XML文件中布局,总体布局是运用线性布局,然后用几个线性布局共同作用成一个主界面界面。在这里主要就是实现对用户运动时的数据的获取,看起来比较美观,TextView是显示文本的信息。在这里设置好这些控件后,设置各控件相应的属性。

5.2.9 设置界面设计

设置模块的功能就是让用户对系统功能进行设置,对自身身体数据进行设置。总的设计过程也是在XML文件中进行的。

5.2.10 数据记录界面设计

数据记录模块的功能就是让用户查询所有运动时添加的数据记录,并以列表的形式展示在界面,长按行数据可对此行数据进行删除。

6 功能的实现

6.1 数据库的建立和连接

6.1.1 数据库的建立

本系统数据库主要是使用SQL Server 2008数据库。

6.1.2 数据库的连接

用DBHelper对数据库的连接进行管理,主要通过调用类中的loadDriver()方法来获取一个数据库对象,用getConnection()进行连接,这个对象就可以对数据库进行操作,对于数据库的关闭主要是调用该类的closeConnection(Connection conn)方法。

6.2 核心功能

(1)运动数据探测功能的实现;

(2)结束和记录功能的实现。

6.3 功能的实现

注册是在用户输入注册信息并点击提交按钮之后,通过验证并想服务器发出连接请求,向数据库添加数据。

在注册冲过后,系统会将注册的帐号传递到登录界面并显示在帐号输入框里面,用户需输入密码,点击登录按钮之后,系统会对帐号密码进行简单验证,符合规范后想服务器请求连接数据库并查询帐号,并对帐号和密码进行判断是否正确。

用户登录成功之后,进入主界面,此时,若用户携带手机进行跑步或散步等运动时,系统会自动通过手机重力感应和GPS等来获取用户运动时产生的数据,并通过计算得出用户消耗的卡路里等数据信息,并显示在界面上。

在系统同级数据时,用户可点击菜单暂停/继续、结束、设置、记录等按钮来对数据进行操作或者对系统进行设置,点击重置时,在重置数据时会自动将数据通过服务器添加到数据库方便用户查询,点击设置按钮后,用户进入到设置界面,此界面是对系统功能进行设置,或者对用户身体数据进行设置。

在主界面当用户点击记录按钮时,用户会进入到记录界面,此界面显示的是用户一晚所有运动产生的数据信息,通过服务器连接数据库获取,并以列表的形式显示在界面,长按某一行数据时,可对此行数据进行删除。

7 结束语

此次论文研究主要针对Google推出的Android平台下开发手机运动助手软件,并设计自己的数据库和单词搜索。当然这个系统是基于数据库建立起来的。在起初,主要就是看Android的SDK,学习Sqlite数据库的机制,表的建立等等。后来在网上搜到一些单词库,然后就试着导入,但是每次导入都是失败。后来下载一些小的数据库,导入才算成功。对于这种情况,我上网查了好多的资料,最后发现导入方法有点问题。最终在网上资料的指引下,这个问题得到了解决。使用的模糊查询使程序更人性化,给用户带来更多的便捷。而加入的汉语解释同样可以给用户带来好的体验。总体来说,对这次课题研究还是比较满意的。

这次论文研究及实现是对自己四年来所学的东西的检验及应用。当然由于时间的问题,该系统还有很多的不完善之处。如果以后有时间的话,我会对其多扩展几个功能:

(1)代码和界面的优化。好的界面也是吸引顾客原因之一。所以美好的界面设计可以给人以不同的视觉感受。

(2)手机运动助手可以装载外部的数据库。不同的用户使用的情况也是有所不同,用户可以根据自己的需要装载自己的数据库。

参考文献

[1]韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.8.

[2]柯元旦,宋锐.Android程序设计[M].北京:北京航空航天大学出版社,2010,(7).

[3]吴文明.Sqlite数据库在Android开发中的应用[J].重庆航天职业技术学院学报,2011.

[4]邱少明,袁劲松.Java面向对象程序设计[M].北京:清华大学出版社,北京交通大学出版社,2009,(10).

[5]余志龙,陈昱勋等.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010,(6).

[6]Google Android Web Site [EB/OL].http://www.android.com.

[7]Sqlite中文社區 [EB/OL].http://www.sqlite.com.cn.

Android开发 篇6

Android是Google推出的一款基于Linux的便携设备操作系统, 近几年来Android因其开放性的优势和丰富的硬件选择得以迅速地普及。据IDC公布的数据, 截至2012年11月份, 也就是Android发布5周年之际, 其市场份额已占全球智能机75%[1]。在应用软件需求不断增长的形势下, Android手机应用开发人才就变得供不应求[2]。很多大学和企业在教学和人才培训方面都引入了Android开发课程, 作为培养专业软件开发人才的软件学院, 我院在2010年开始为JAVA课程体系的大三本科生开设Android手机开发课程, 受到了学生们的欢迎。由于Android涉及Linux系统、JAVA、XML技术、数据库技术、网络协议等相关知识, 我们在一学期的课程中设置的主要内容是手机应用程序开发。

Android是一个相对比较新的平台, 而且是运行在智能手机、平板电脑等手持设备上, 跟电脑平台和互联网应用开发有所不同, 这给进入这一领域的开发人员设置了一个并不低的门槛。好在Google为开发者提供了一个开放性的系统架构, 该系统架构从下到上分为四层[3,4]:第一层为Linux内核层, 包括Linux操系统和驱动程序, 提供系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。第二层为Android运行时环境、核心类库。运行时环境由Andoid核心库和Dalvik虚拟机组成, 核心类库包括系统C库、多媒体库、3D处理、浏览器引擎Lib Web Core、和轻量级数据库SQLite等。第三层为应用框架层, 包含了大量的API供开发者调用。第四层为应用层, 主要是通过调用底层类库, 使用Java开发的应用程序, 这些应用程序包括电子邮件客户端、SMS程序、日历、地图、浏览器等, Android程序员开发的应用也位于此层。Android的这个系统架构采用软件叠层的方式构建, 降低了层与层之间的耦合, 从而保证了层与层之间相互分离, 各层的分工明确。

作为各种资源受限的嵌入式系统, Android应用程序的构成方式与电脑平台上的应用程序有很大的不同。Android应用程序主要由4部分组成, 也称为四大组件:Activity、Content Provider、Service和Broadcast Receiver。Activity是Android应用中负责与用户交互的组件, 包括用户界面和事件响应;Content Provider是不同应用程序之间共享数据的标准API;Service是没有界面、在后台运行的程序, 比如下载文件、播放音乐等;Broadcast Receiver是一个全局事件监听器, 用来监听系统广播的消息。多数Android应用还离不开多媒体处理和网络应用。因此, 在内容设置上, 我们以四大应用组件为基础, 以多媒体应用开发和网络应用为扩展。

1 四大应用组件

Android应用程序开发的一项重要内容就是用户界面的开发, 一个好的应用程序首先要提供友好的图形用户界面 (GUI) , 才能最终吸引到用户。Android四大组件中最重要的是Activity, 它负责系统与用户的交互, 也是大多数应用程序的入口。Activity作为视图的管理者, 管理窗口 (Phone Window) 和各个UI组件。Android提供了大量的UI组件, 使得开发者可以像搭积木一样组合出优秀的用户界面。这些UI组件都是从View类中派生出来的, View类还派生了一个View Group类, 提供了GUI上所有组件的布局方式。在界面开发方式上, Android还提供了在XML布局文件中控制组件属性的方式, 大大提高了开发的效率和程序的灵活扩展性。为了让UI组件响应用户的按键、触摸等动作, Android也提供了事件响应机制, 方便实现用户的交互操作。Android还提供了一些特殊的Activity, 比如List Activity、Tab Activity、Expandable List Activity、Preference Activity等, 它们都是从Activity类中派生出来的, 用来提供专门扩展的功能。

Content Provider是Android中不同应用程序之间共享数据的标准API。当一个应用程序需要把自己的数据暴露给其它应用程序时, 该应用程序就可通过Content Provider来实现;其它应用程序就可通过Content Resolver来操作Content Provider暴露出来的数据。一旦应用程序通过Content Provider暴露了自己的数据操作接口, 则不管该应用是否启动, 其它应用程序都可通过该接口对它的内部数据进行增、删、改、查等操作。通过Content Provider, 开发者可以很方便地访问图像、视频、音乐、通讯录、短信等系统数据。

为了节约电量, 当前Activity不可见时, 它运行的程序也进入休眠状态。为了兼顾比如音乐播放、数据下载等耗时较长的应用, Android系统提供了Service组件。Service组件与Activity相类似, 也代表着可执行程序。不过它没有用户界面, 一直在后台运行。开发者可以使用Activity做前台界面, 调用Service实现相关功能, Activity还可以与Service绑定, 并与之通信。

Broadcast Receiver是一个全局的监听器, 通过它可以方便地实现系统中不同应用程序之间的通信。这些应用程序包括用户开发的程序和系统内建的程序, 因此, Broadcast Receiver可以响应系统发生的改变, 比如电池电量变化、系统时间日期改变、开关机等。特别地, 通过Broadcast Receiver可以实现应用程序随系统自动启动。

以上四大应用组件的共同特点是, 它们都需要在Android Manifest xml文件中进行配置。除这四大应用组件外, Android还有一个重要的组件:Intent。Intent是上述四大应用组件之间信息沟通的桥梁。通过Intent, 各组件能够以统一规范的方式进行数据交换。

在数据存储方面, 除了四大应用组件之一的Content Provider, Android还有三种方式[5]。第一种称为Shared Preferences, 它采取的处理方式是键值对, 适合于用作程序和系统中的信息配置文件。第二种是文件存储, 特别是SD卡上文件的读写。Android系统大部分操作与JAVA的I/O流类似, 只要设置相应的权限并获取SD卡的路径即可。Android还内置了一个轻量级的数据库SQLite, 可以调用SQL语句实现对数据的增、删、改、查操作, 对小规模的数据存储具有较高的效率。

2 多媒体处理

Android提供了Image View控件显示普通静态图片, 也提供了Animation Drawable来开发逐帧动画, 还可通过Animation对普通图片使用补间动画。图形、图像不仅对Android系统的应用界面开发非常重要, 而且Android系统上益智游戏、2D游戏都需要大量的图形、图像处理。所谓游戏, 本质就是提供更逼真的、能模拟某种环境的用户界面, 并根据某种规则来响应用户操作。为了提供更逼真的用户界面, 需要借助于图形处理。

Android还提供了常见音频、视频的编码、解码机制, 比如常用的Media Player类, Android支持的音频格式有MP3、WAV、3GP等, 支持的视频格式有MP4、3GP等。借助于这些媒体支持类, 我们可以很方便地在手机应用中播放音频、视频等, 这些多媒体数据既可以来自于Android应用的资源文件, 也可以是来自外部存储器上的文件, 甚至是来自于网络的文件流。不仅如此, Android也提供了对摄像头、麦克风的支持, 因此也可以十分方便地从外部采集照片、音频、视频等多媒体信息。

3 网络应用

手机本身是作为客户端来使用的, 它的计算能力和存储能力都是有限的。它的主要优势是携带方便, 可以随时打开, 而且手机通常总处于联网状态。因此网络支持对于手机应用的重要性是不言而喻的。

在Android中, 除了Java中使用的访问网络的方式, 还可以通过两种方式使用HTTP进行网络通信:一种是使用Http URLConnection实现, 创建一Http URLConnection对象就可以发送HTTP请求, 默认采用的是GET方式, 也可以调用set Request Method () 方法指定使用POST请求方式。另一种是使用Http Client实现, Http Client实现了对Java中访问网络方法的封装, 有Http Get类代表发送GET请求, Http Post类代表POST请求, Http Response类代表处理响应。 (下转第19页) (上接第45页) 4结论

通过对本课程的学习, 学生可以掌握Android手机客户端应用程序开发的基础知识, 能够熟练进行应用程序界面开发和美化, 能够进行简单的单机游戏的开发, 能够通过JSP页面跟服务器进行交互。在此基础上, 学生可以通过实训等方式, 进一步提升自身的实力, 能够参与完成某些大型应用程序开发, 在娱乐、餐饮、导航、沟通、资讯、办公等方面为便携设备用户提供便捷服务。S

参考文献

[1]IDC:Android has a heady 59 percent of world smartphone share, iPhone still on the way up[OL].http://www.engadget.com/2012/05/24/idc-q1-2012-world-smartphone-share/, http://www.usatoday.com/story/tech/2012/11/02/android-on-75-percent-of-smartphones/1678429/.

[2]邹兴, 张磊.3G智能终端软件开发实验教学改革的思考[J].实验科学与技术, 2012, 6, 10 (3) :84-86.

[3]李刚.疯狂Android讲义.2版[M].北京:电子工业出版社, 2013, 2.

[4]杨凤年, 何文德, 周景, 刘华富.手持设备应用软件开发课程教学方法研究[J].中国教育技术装备, 2008, 246:33-35.

Android开发 篇7

1. Android平台的架构

Android平台主要由四个重要组成部分将其架构起来, 分别是Linux内核层、Android运行时库和其他库层、应用框架层、应用程序层。由四个核心部分形成了开发性、应用程序的兼容性, 应用程序可以互相使用某些相交程序、强大的系统是使用更具简便性四大强有力的核心优势。详细架构可参看图1。

1.1 Linux内核层

Android在最初是借助了Linux version的2.6.23内核来进行技术加工拓展, 从而实现整体Android系统的最基础工作, 所以它需要Android特有的驱动码。Linux最主要的区别是在原始系统的基础上加入了一个虚拟的CPU, 为了来满足系统运行的内存速度和内存的空间。Linux内核层主要负责的领域是系统运行的安全稳定性、内存使用的基本管、程序运行的进程管理、网络堆栈、附带着要对驱动的模块处理负责。作为一个独立体, 虚拟的存在于软、硬件之间来调节平衡, 虽然是套用了Linux系统但是最终的系统是只能够针对Android具有兼容性, 所有的标准和接入系统都与原系统不同, 在识别的过程中应该引以注意。在Linux内核层中最明显体现出开放性的是其摒弃了虚拟内存文件的形式而是大胆选用了YAFFS2 (Yet Another Flash Rle System) 文件系统, 在研发最初是为了能够运用到NAND Flash设计的文件系统中, 并且其可复制移动的特性更是深得设计研发人员的钟爱, 与YAFFS2相类似的同种文件系统YAFFS是日志型文件YAFFS的另一个分支, 之所以没有将YAFFS运用到Android是由于YAFFS更适用于小页面的运行一般是528字节/页, 而Android则需要2k+64字节/每页, 近乎四倍的数量, 如此大容量的NAND Flash, 使Android手机无疑的选用了YAFFS2的支持。

1.2 Android运行时库和其他库层

Android系统中有一个能偶对Java语言系统提高多种功能的核心库, 这个核心库连同Dalvik虚拟机一起构成为运行时库, 为手机系统提供了更为宽泛的开源代码, 这个运行时库不需要像其他系统软件一样安装, 并且无需去介意它的管理配置, 通过一个相对独立完整的250KB小数据库来完成对于2TB的数据库支持, 只是单一磁盘上的小文件却是为Android提供了诸多的选取它作为移动终端的嵌入式数据库的理由, 无论从速度上还是在服务的范围上都能够使Android系统增色不少, 同时也是能够适合Android系统运行的不二之选。

1.3 应用框架层

从应用框架层来说, 能够基于开发人员对于应用程序接口框架的访问权限很广, 几乎是可以任意进入。并且应用框架能够最大程度的将各个系统的构件充分发挥自我的价值, 掌管专门性的功能, 不会造成构架能量的重复使用, 但是应用框架分发出来的组件却可以被所有构架共享, 可谓是单独生产加工, 集中式供应使用。

1.4 应用程序层

虽然Android系统借来了很多的高手来丰富其战斗力, 但是其自身也是存在着很强的技术和战术。这些技术主要还是多出现在应用程序内, 包括Java公司全权代理研发的包括e-mail客户端、短信程序、日历、地图、浏览器、通讯录等等。

2. Android应用程序的基本组件

在Android系统中, 起到关键作用以及核心地位的是其应用程序, 包括手机使用中大部分基础功能, 能够维持应用程序正常有效运行的组件主要有Activity活动、Service服务、Broadcast Receiver广播接收器和Content Provider内容供应处理器四部分, 另外通过Intent组件将他们之间紧密的联系起来, 为任意部件需要做信息有效的传递工作。下面来详细的介绍五个部分的相关问题。

2.1 Activity活动

所有通过手机界面能够显示出现在屏幕上的图像都是由Activity实现表示层的组件功能实现的, 虽然Activity活动是最基本的组件, 但是可以通过延伸和无限的扩张来实现更复杂多变的图像组合, 其活动领域主要是借助了有关View的各种有效成分出现在手机上的各种图形, 更具体的说是GUI图形用户界面, GUI是使用者与应用程序直接

互动的媒介, 在手机的界面罗列出可被执行的有效应用功能, 用户要通过GUI来对手机操作并使其执行所需的功能, 应用程序通过GUI来知晓用户端发出的要求从而进行应用程序的运行。所以Activity负责的是基础性的表示层工作。

2.2 Service服务

Service功能是满足用户在同一时间可以运行不同的程序, 虽然不能够在同一界面同时显示, 但是却不影响其共同运行, 所以Service更多的是负责后台的工作, 并没有能够与用户之间彼此传达信息的界面。在手机使用中, 很多用户喜欢将音乐长久的处于播放状态, 同时还要进行比如进行娱乐游戏, 电子浏览器查阅等任意的使用功能, 这样音乐处理器就是进行后台的运行工作, 也就是Service在应用程序中的体现。

2.3 Broadcast Receiver广播接收器

Broadcast Receiver是能够将手机的目前的运行状态、出现任何有待解决或者异常的行为及时的告知手机的使用者以便使用者能够根据具体的情况做出调整。Broadcast Receiver并不会单一的只对当前操作的应用程序提出广播, 另外可以同时对手机系统的整体任意的部分并且同时多数量的广播, 只要是出现情况的组件都会进行广播。比如在使用手机的过程中可能会使用操作上失误, 手机就会提醒无此选项, 在短信的发送完成之后, 手机系统会提示已发送或发送成功, 当存入大量的信息后, 手机会提示您的内存已满等等提示类的信息。与Activity相类似都是又基类为源拓展为不同组件的通知形式。

2.4 Content Provider内容供应处理器

Content Provider将应用程序的特定数据提供给其它应用程序使用, 数据的存储方式可以是Android文件系统、SQlite数据库或者别的合适的方式。

2.5 Intent

Intent是一种运行时绑定机制, 它能在程序运行的过程中连接两个不同的组件。

3. 开发实例

3.1 在Eclipse下创建一个基于Android 2.2版本的新项目My SMS。

3.2 修改用户界面。修改res/layout/main.xml文件的内容, 从上到下分别增加文本域、一个用来输入号码的可编辑文本框、文本域、用来输入短信内容的可编辑文本框和一个用来发送短信的按钮框, 实现短信发送程序的主界面。

3.3 设置权限。在Android Manifest.xml中添加发送短信权限的声明, 代码为

3.4 实现短信发送功能。关键代码为

当用户按下"发送信息"键之后, 用户界面会重新回到My SMS的初始界面。

3.5 运行结果。

在Eclipse中运行程序, 系统会启动一个Android模拟器, 通过Windows的命令行再启动另外一个Android模拟器, 这样两个模拟器就可以实现两个手机间的电话或者短信的功能。每个模拟器左上角的数字代表了该模拟器的电话号码, My SMS运行的模拟器号码为5554, 通过命令行启动的另一个模拟器号码为5556。

4. 总结

Android智能手机平台无论对于使用者还是对于设计开发人员来说都能够给予更大的自由空间, 开放和兼容为更多手机提供了引入的最好契机, 同时随着Android在联盟中名牌手机中在市场受到很好的收益, 使得更多的开发设计者和手机供应商将注意力不断的向其倾斜, 本文通过对Android系统的有效构架分析来呈现其区别于其他系统的优势, 并利用短信系统的实例介绍在实际中的应用。Android具有很好的发展态势, 未来可能在更高的领域内发挥更高的技术。

参考文献

[1]胡伟.Android系统架构及其驱动研究[J].广州广播电视大学学报, 2010, (04) .

[2]李林涛, 石庆民.Android智能手机操作系统的研究[J].科技信息, 2011, (25) .

[3]宋小倩, 周东升.基于Android平台的应用开发研究[J].软件导刊, 2011, (02) .

Android开发 篇8

随着我国经济的快速发展,现代的生活节奏加快,人们之间的交流多种多样,当人们出现手不能及、分身无术的场景时,语音识别技术应运而生。随着科技技术水平的不断发展,语音识别技术也得到了巨大的发展。语音识别技术可以用于把费脑、费力、费时的机器操作变成一件很容易很有趣味性的事。目前,用语音来控制手机更是逐渐成为高端智能手机的必备功能之一。在很多特殊的环境中,比如驾车,或者只是放松的坐着,有时我们会希望解放我们的双手,通过声音就能操纵手机应用,让生活更便利。

本终端应用是一款基于android系统开发的,对手机进行语音操作的安卓语音软件。产品利用原生的Google语音搜索,加上GPRS或WIFI信号,就可以实现语音拨打电话,真正的实现用声音来控制手机。本文主要研究介绍语音拨打电话功能。

2 研究基础

2.1 Android OS架构研究

A n d r o i d手机系统是基于L i n u x平台的开源手机操作系统,该平台由应用,应用框架层,系统运行库,Linux kernal内核层四层组成。它采用软件堆层(software stack),又名软件叠层的架构,主要分为3部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机(virtual machine),由C++开发,最上层是各种应用软件。

2.2 终端应用架构及运行流程

本远程终端应用是基于C/S服务架构开发,主要应用于通过语音信号识别用户指令,从而完成指定工作,客户端即为android手机,服务器为Google云服务端。本终端系统功能主要有一个子模块:语音拨打电话模块和语音发送短信模块。

拨打电话模块主要通过解析所存储的联系人信息与Google Voice语音搜索数据进行匹配,Google Voice模块通过与Google API的整合,运用多线程技术,匹配到联系人姓名或姓氏,并对匹配结果进行响应,若匹配到全部姓名,则直接拨打出电话,若匹配到姓,则返回出所有该姓联系人信息。

3 语音拨打电话模块

语音拨打电话的功能的实现原理是:调用Google语音搜索API后,用户说出想要拨打的联系人姓名,Google云服务端返回语音是别的数据到客户端,将这些数据与用户手机存储的联系人的数据进行匹对,如果姓名匹对成功,则拨出此联系人的号码。具体实现流程如图2所示:

拨打电话功能模块主要需要完成:(1)获取联系人的数据信息;(2)获得Google语音识别后返回的数据;(3)匹对联系人数据和语音识别数据;(4)拨打电话。

3.1 获得联系人的数据信息

获得手机联系人信息是语音拨打电话的前提,主要是需要取得联系人的姓名和电话号码。

获得手机上所有联系人的接口的方法为:

Cursor cur=get Content Resolver().query

(Contacts Contract.Contacts.CONTENT_URI,null,null,null,Contacts Contract.Contacts.DISPLAY_NAME+"COLLATE LOCALIZED ASC");

遍历cur,每读出一个联系人就将其放入bean中。

获得联系人号码的接口方法为:

Cursor phones=getContentResolver().query(Contacts Contract.Common Data Kinds.Phone.CONTENT_URI,null,Contacts Contract.Common DataKinds.Phone.CONTACT_ID+"="+contact Id,null,null);

遍历phones,判断phone Type是否为1,若是,则为家庭号码,否则,为手机号码,将手机号码放入bean中。

获得联系人的姓名和手机号之后,将它们作为数据存储到数据集链表contact之中。

具体的流程如图3所示:

3.2 获得语音识别的数据

语音识别系统是一个采用C/S系统架构模式,服务器端调用Google Voice功能,客户端实现语音输入,发送数据等功能。终端服务模式如图4所示:

语音拨打电话需要使用Google语音搜索服务,因此必须判断当前用户手机是否支持该服务,所采用的方法是通过query Intent Activities()方法,查询Android系统的所有具备Recognizer Intent.ACTION_RECOGNIZE_SPEECH的Intent的应用程序,点击后,能启动该应用。

同时,Google语音服务需要网络支持,所以也需要判断当前用户的网络连接状况,在类中写一方法checkNet Work Status()引用Connectivity Manager cwj Manager来判断网络是否连接正常。

获取语音识别数据的具体流程如图5所示。

3.3 数据匹对

获得手机联系人的数据和语音识别的数据后,将两者的数据进行匹对,匹配成功则进行拨号。

数据匹对需要遍历存储手机中的联系人的数据集链表name_list和语音识别的后返回的数据集链表voice Date_list。为了增加匹配的有效性,在匹配之前,要使用String类的replace()去掉两个数据链表中的无效的空格;此外,仅仅只是大小写不相同的字符应该视为相等,即需要用equals Ignore Case()方法来比较两个字符串是否相等。

首先使用sub Sequence()函数获得name_list数据链表和voice Date_list数据链表中每个字符串元素的第一个字符,判断这两个字符是否相等(即匹对姓氏),如果相等,则接着比较这两个字符串元素是否相等(即匹对姓名),如果是,则用变量current Name和current Phone保存当前匹对成功的联系人姓名和号码,并跳出匹对过程;反之,则将所有改该姓的联系人姓名和电话分别存储在scontact_namelist和scontact_phonelist数据链表中。

流程图如图6所示:

3.4 拨打电话

数据匹对完成后,如果匹对到完整的联系人姓名,则对拨号程序进行唤起。

设置intent Call的行为:

intent Call.set Action("android.intent.action.CALL");

指定拨打的电话号码:

intent Call.set Data(Uri.parse("tel:"+current Phone));

如果没有匹配到完整的联系人姓名,但是匹配到了联系人的姓氏,则将这些同姓的联系人的姓名和电话号码写入数据集链表person_list中,用my List View将这些数据呈现给用户,并对my List View上的每个item进行事件监听,只要用户点击其中一个item,则拨打出该条目中显示的电话号码:intent Call.set Data(Uri.parse("tel:"+scontact_phonelist.get(position).to String()))

拨出电话的流程图如图7所示。

6 总结与展望

基于android系统的语音拨号应用是对日益兴起的语音识别技术的一次创新性地尝试,语音拨号给人们的生活带来了新鲜和便利,这也是顺应如今越来越快的生活节奏的需要,对于不同层次的用户具有较大的吸引力。

参考文献

[1]靳岩,姚尚朗.Android开发入门与实战[M].北京:人民邮电出版社,2009:59-61.

[2]余志龙,陈昱勋,郑名杰.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2009:75-97.

[3]张利国,龚海平,王植萌.Android移动开发入门与进阶[M].北京:人民邮电出版社,2009:45-89.

[4]E2ECloud工作室深入浅出Google Android[M].北京人民邮电出版社,2009:112-147.

Android开发 篇9

1 Android应用程序的组件

Android应用程序可以利用其他应用程序的资源 (需要这些应用程序进行授权) 。Android应用程序没有一个单一的入口点 (Main函数) , 只有一系列的组件:Activity (活动) 、Service (服务) 、Broadcast Receivers (广播接收者) 、Content Providers (内容提供者) 。

Android系统采用的是基于组件的开发模式, 其程序设计应该遵循以下原则:

(1) 必须合理划分软件层次模块。

(2) 对于组件内部逻辑、封装要合理划分。

(3) 进程间和进程内组件通信方式要充分考虑, 合理设计。

(4) 从整个手机应用平台来考虑整个软件的设计。

(5) 应用程序与其他应用程序的交互问题。

2 Android组件之间的通讯

在Android中, Intent (意图) 起连接各组件的作用, 用以实现组件间的互相调用。而组件为了输出自己能响应或者处理那些意图, 就要给出一个及以上的Intent Filter。每个Intent Filter表达的含义是其所能响应意图请求的能力, 也就是组件意图接收什么种类的请求行为, 什么种类的请求数据。

3 Android应用程序开发环境搭建

本文选择Ubuntu系统作为开发环境进行程序开发[3]。

在Ubuntu下建立安卓开发平台需以下五个步骤:

(1) 在电脑上安装Java并运行

(2) 安装Eclipse开发软件和Android SDK

(3) 更新Eclipse, 安装Android开发插件ADT

(4) 设置开发平台的环境变量

(5) Android AVD的配置

4 建立相应运行环境及安装与安卓有关的软件

4.1 安装合适的JDK

本文选择的JDK版本为JDK 1.6.0_31

4.2 下载Eclipse并且进行安装

此项可以到Eclipse官方网站下载。然后安装即可。

4.3 安装Android SDK软件

Android SDK全称Software Development Kit, 为软件开发包。程序开发过程中用到的函数库、编译程序等资源都包含在其中。开发Android软件用到的函数库等资源的集合包就是Android SDK。

Android SDK安装好后, 需要运行SDK Manager下载要开发的Android版本。

5 更新Eclipse, 安装Android开发插件ADT

安装ADT插件

设置Eclipse中Android SDK目录

在Preferences窗口中, 勾选Android选项卡, 然后将Android SDK的文件夹所在地址设置为SDK Location, 单击Apply, 就完成了对Eclipse中Android的SDK关联。

6 设置开发平台的环境变量及对Eclipse中Android AVD进行配置

安卓开发平台的环境变量的配置包含两个部分:

Java运行环境中的JAVA_HOME、CLASSPATH变量;

Android SDK中的tool变量。

6.1 对Java环境变量进行设置

打开一个Terminal终端, 输入:

$sudo gedit/etc/profi le

在打开的配置文件中加入如下部分:

保存配置文件, 然后注销当前用户, 重新登录, Java的环境变量就生效了。

6.2 对Android SDK中的tool进行设置

此步骤也需要配置到path变量内。

Android 1.6版本中引入了AVD (Android Virtual Device) 。选择Target时要注意以下几个方面:

(1) Target的API level不得低于AVD的Target的API Level

(2) 建立一个Android 2.3版本的API Level以测试应用在此版本的兼容性。

最后运行创建好的Android虚拟机。

至此, 也完成了Android应用程序的开发环境搭建工作。

7 结论

本文通过提供开放的开发平台技术, 利用核心应用程序所提供的框架APIs, 使所有的应用程序都能发布其功能, 并且任何其他应用程序都可以使用这些功能 (但需服从框架执行安全限制) 。进而使开发者能够编写极其丰富和新颖的应用程序并自由地利用设备的硬件优势、访问位置信息和运行后台服务等等。

参考文献

[1]徐瑾.基于Android平台音乐播放器的设计与实现[D].硕士学位论文.北京邮电大学, 2011

[2]Reto Meier著, 王超译.Android 2高级编程[M].清华大学出版社, 2011

Android开发 篇10

关键词 安卓应用 全球定位系统 谷歌地图 导航

目前, Android不仅仅应用到手机,已经涉足车载终端,上网本市场,随着国内3G进入正式的应用阶段,采用Android系统的智能终端越来越多,Android吸引了不少商家和终端开发人员,这使应用之间的通用性和互联性在最大程度上得到保持。由于私家车辆的速增,人们对户外出行导航提了更高要求,导航软件在智能系统中的应用成为了研究热点之一。在Android系统GPS 定位服务的支持以及3G 无线网络的驱动下,基于Android的良好的发展形势,采用Google 地图实现导航服务,是具有可行性的。本文将对Android与市场上其他的手机系统进行比较,研究其发展现状。然后分析Android平台的系统架构,最后针对Android平台结合Google Map API的导航应用开发进行了深入研究。

1 各种操作系统的比较

目前应用在手机上的操作系统主要有Symbian、Windows CE、PalmOS和Linux、IOS、Android六种。Palm OS是一种32位的嵌入式操作系统,其产品本身就包括智能手机,但这种操作系统更倾向于PDA市场。而 Symbian是一个实时性、多任务的纯32位操作系统,可以支持GPRS、蓝芽、SyncML、以及3G技术。用户可以在这个平台上进行java程序开发,扩展手机功能。目前Nokia等厂商手机终端采用了Symbian。Windows CE是一个32位、多任务、多线程的操作系统,是一种压缩并可升级的软件系统,即使在小内存条件下也能提供较高的性能,并且拥有好的电源管理系统,为嵌入的、移动的、或多媒体产品线提供了支持。而Linux系统源代码开放,手机制造商可根据实际情况有针对性地开发自己的Linux手机操作系统,也吸引了众多软件开发商对内容应用软件的开发,但它入门难度高、熟悉其开发环境的工程师少、集成开发环境较差, 尚未得到较广泛的支持。iPhone OS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone和iPod touch使用,就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。它良好的性能深受消费者亲睐,但其并不开源。

相比以上的系统,Android系统是一个真正意义上的开放性移动设备综合平台,以Linux为内核的,它包括操作系统、用户界面、中间件和应用程序,具有友好的开发和调试环境,而且还支持各种可扩展的用户体验,不仅如此,平台集成的地图模块、轻型的SQLite数据库、可视化的界面设计方案,方便快捷的2D、3D绘图,为对媒体功能和浏览器提供强大的支持。Android的平台开发性促进了应用创新,又助于降低开发成本,还可以使运营商能非常方便地制定开发富有特色的产品,具有很大的市场潜力。

2 Android的系统架构

Android结构分为四层,从高到底分别是应用层、应用框架层、系统运行库层和Linux内核层。

(1)应用层:应用是用Java语言编写的运行在虚拟机上的程序,Google最开始时在Android系统中捆绑了一些核心应用,如E—mail客户端、日历、浏览器等。

(2)应用框架层:这层包含各种组件(丰富可扩展的视图、内容提供器等),构成了编写Google发布的核心应用时所使用的API框架,也可以使用这些框架来开发自己的应用,简化了程序开发的架构设计,但是必须遵守其架构开发原则。

(3)系统运行库:包含一些C/C++库和Adroid运行库,这些库能被Android系统中不同的组件使用。它们通过Android应用框架为开发者提供服务。

(4)Linux内核层:Android的核心服务基于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖该内核。Linux内核同时也作为硬件和软件栈之间的抽象层。

3 Android开发环境的搭建

PC主机安装的是Windows XP系统,JDK是Java开发包,本次研究应用层开发,安装版本为JDK1.6,除此外,还需安装eclipse作为开发IDE,之后,安装配置SDK,SDK(Android software development kit)是Google公司针对Android推出的用于手机和移动设备的开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。同时它具有强大的功能和完善的调试手段,它提供运行模拟器,DDMS等丰富的组件。同时SDK也包含了各种在模拟器上用于调试,打包和安装的工具。本项目是在SDK1.5的环境下进行开发的。在此基础上加入Google官方提供的Android开发插件ADT。开发环境搭建完成,即可新建工程来进行应用开发。

4 GPS应用设计

本次针对车载应用设计了卫星时间校准、GPS定位、路径规划导航、兴趣点搜索、路书应用、人工服务等功能,本文主要对卫星授时、GPS定位、移动终端轨迹记录和路径规划进行研究,UI设计如下图1:

4.1 UI设计

Android应用程序的基础功能单元就是Activity类中的一个对象,本次设计的界面如上图1,该界面使用GridView控件配XML样式来进行布局,并对其设置容器ImageAdapter,它继承BaseAdapter类并加载该类方法,加入界面要显示的图片,最后为图片添加点击事件,实现了应用界面的设计

4.2 应用功能实现

点击界面图标,通过Intent跳转相应的Activity实现具体的功能。本次应用开发是基于定位导航开发,首先在Manifest.xml文件中加入应用包并进行需要的权限声明:

4.2.1 卫星时间校准

点击第一个图标,实现卫星时间的获取,通过DDMS发送的模拟卫星数据帧,由LogCat如图2知获得的时间数据为1330992014000,再利用Date进行时间的转换,并设置为 yyyy—MM—dd HH:mm:ss显示格式,卫星授时结果为2012—03—06 00:00:14

4.2.2 GPS定位

点击第四个按钮进入GPS定位功能,可获取所在位置信息,首先在布局文件中加载地图,然后获取LocationManager对象,设置Criteria(服务商)的信息,并设置Provider,取得效果最好的 由于终端是移动的,所以注册一个位置监听器LocationManager监听定位信息改变,设置更新周期为3000ms,再获取当前的Location,取得位置的经纬度信息,再进行位置解析:

通过address.getCountryName(),address.getLocality(),address.getPostalCode(),即可获取当前位置所在国家,城市及邮政编码,在DDMS中向模拟器发送模拟经纬度如图3,模拟器运行结果如下图4:

4.2.3 轨迹记录

点击下一个图标实现轨迹记录,周期性获取移动终端的地理位置,通过OverLay类在地图上两点间画直线,只要获取位置的时间周期足够短,即可实现终端的轨迹记录。设置位置监听周期为1000ms,gp1、gp2是终端移动前后两点的GeoPoint:

通过DDMS加载KML文件如图5,载入模拟位置数据,模拟器运行结果如图6:

4.2.4 路径规划导航设计

点击下一个图标,进入导航功能,在Android SDK中已移除原有M5版本里的DrivingDirection package,但是Google发布了Google Maps JavaScript API V3,开发人员可以基于Android提供的WebView控件中载入web导航网页的方式实现导航功能。WebbView不但可以运行一段HTML代码,还有更重要的一个特点,它可以同Javascript互相调用。这样我们可以用HTML和Javascript来编写Android应用。首先在XML布局文件中定义WebView控件,在程序中加载该控件,并通过loadUrl方法载入网页。

下面通过调用Google Maps JavaScript API V3用JavaScript编写Html网页实现路径规划,从Activity中获取起始及目的地址与出行方式,本次出行方式默认为DRIVING,在Activity中先对输入的地址进行解析,在JavaScript 脚本中获取Activity传来的起始点与目的点的经纬度,设置路径规划请求request,出行方式为自驾,返回多条规划结果,通过调用directionsService.route进行路径规划:

实现了地图上了规划路线显示如上图7、8,通过对路径规划的结果进行处理,对返回的多条路径规划结果routes[n]进行选择,再对选择的一条规划路径提取每一段中文规划信息,由于本次只是研究两点间的路径规划,故只存在legs[0],对该段结果的每一步steps[m]的持续时间stp.duration.text和长度stp.distance.text进行提取,结合GPS定位,将得到的路段信息,传入TTS模块,判断控制车辆前行方向和距离,实现导航功能。

4.3 性能改进

5 结束语

本文基于Android开放平台结合Google API设计的导航应用开发,对卫星授时、定位、终端移动轨迹记录和路径规划进行了研究,经测试,能实现精确定位,可根据用户需求选择的规划路线进行导航,由于Android的强大功能以及其完全开放的平台,Android应用开发将会有广阔的市场前景,能够为用户提供更多有用的信息服务。而我们的导航软件也将更智能,使我们出行更加方便。

参 考 文 献

[1] 杨丰盛. Android 应用开发揭秘. 机械工业出版社;2010

[2] 公磊,周聪. 基于Android 的移动终端应用程序开发与研究. 计算机与现代化. 2008(8):85—89

[3] 陈育春. Google Map API开发大全. 机械工业出版社. 2010

[4] 张利国,代闻,龚海平编著. Android移动开发案例详解. 人民邮电出版社. 2010

[5] 余志龙,陈昱勋等编著. 王世江改编. Android SDK 开发范例大全. 人民邮电出版社. 2009

[6] 张勇编著. Google Android开发技术. 西安电子科技大学出版社. 2011

[7] 杨丰盛编著. Android技术内幕. 机械工业出版社. 2011

[8] 杨文志. Google Android 程序设计指南. 电子工业出版社. 2009

[9] http://code.google.com/intl/zh—CN/apis/maps/documentation/javascript/v3

本文来自 古文书网(www.gwbook.cn),转载请保留网址和出处

相关文章:

Android手机01-06

android外文翻译01-06

Android安全01-06

多Android设备01-06

资助新政策01-06

android应用学习总结01-06

中铁安全总结范文01-06

安置区规划01-06

Android 面试题经典01-06

android软件需求分析01-06

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:Android手机 下一篇:android应用学习总结