Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526892
  • 博文数量: 150
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1705
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-11 23:29
文章分类

全部博文(150)

文章存档

2011年(9)

2010年(25)

2009年(94)

2008年(22)

我的朋友

分类: LINUX

2009-12-01 00:26:07

今年九月份的统计数据显示,目前在中已经有超过10K的Softwares和Games提供给Android手机用户下载。一些曾经在IPhone APP Store创下辉煌战绩的Applications已经开始集体移植到这个拥有巨大潜力的平台。官方第二届(简称:)已经进入到了最后评审阶段,据称这次拥有大量惊奇创新的应用软件,AR会针对排名靠前的一些软件和游戏提供比较详细的技术剖析,希望大家保持。今天要说的内容与创新无关,主要是讲解如何将现有功能互补的软件通过Intents无 缝整合,使其最大限度的提高用户体验(不同的软件之间相互协调,不但可以达到优势互补的目的,而且通过相互间的合作可以在某个领域创造出相对完整的应用体 验)。手机用户尤其厌烦手动输入大量信息(奥巴马曾对外界声称自己不使用的理由是不想忍受用手机输入信息的痛苦感受),所以这样的整合可以 促成多方软件协同工作的“共赢”局面。而在这其中起到绝对关键性的技术因素是利用了Android平台最独特和最优雅的“Intent机 制”,平凡的岗位创造出不平凡的“成就”。为此,大家需要多多留意那些看似微小的事物,往往越是简单的东西越容易改变这个世界。下面引述一个例子来形象展现这项应用所带来的好处:正在使用WHERE和GoodFood的用户可以基于当前数据直接快速利用OpenTable程序完成订餐服务,整个过程避免对 某些已经存在信息的重复调用。

名词解释:

  • OpenTable(用户可以指定特定的区域,搜索符合用餐时间和用餐人数的餐馆,并将其标注在地图上)
  • (基于精确地理位置的本地化信息检索工具,例如:哪里的汽油最便宜,路况信息和距离最近的咖啡店等等)
  • (与Where出自同一个公司,同样也是利用地理位置信息,提供一个完整的沟通服务平台)

发挥Intent整合优势的准备工作

首先第一个步骤是需要设计使用的Intent接口(或者API)。例如:OpenTable开放了可供使用的公共RESERVE Intent ,利用特定的参数通过URI传递给处理预约申请的Activities(包括地点、时间和人数等基本要求)下面是一个简单的例子:

1.startActivity(new Intent("com.opentable.action.RESERVE",
2.Uri.parse("")));

我们的目的是创建一个可供其他开发者容易理解和应用简单的开放接口,而这完全取决于如何定义Action和Uri的样式。那么问题来了:什么样才算得上是比较理想的开放接口呢?

  • 首先考虑如何定义合适的Action。如果应用程序仅仅是在常规状态下被调用,一般比较好的方法是直接采用提供的标准。针对有特殊要求的应用,则需要采 用自定义的Action,从而更加准确的提供局部应用支持(局部应用的含义:Application包括多个Activities,通常仅仅是一个或者一 小部分Activities通过开放的接口被外部的其它应用程序调用)。自定义Action需要符合Android平台的命名规 范:.action.。因为考虑到Action完全是String格 式,所以需要特别强调Namespace的重要性。(在本文提供的例子中将Action定义 为:”com.opentable.action.RESERVE”)
  • 其次考虑外部接口程序根据特定的需求初始化数据。Android平台提供了Bundle(mapping:通过索引相匹配的数据)用于传递简单或者复杂的数据。在本文的例子中采用了另外一种较灵活的方式,将参数直接捆绑在Uri中(”reserve://opentable.com/2947?partySize=3“)。应用”reserve://”字头的目的是为了匹配我们所定义的Action(android:scheme),”opentable.com”可以理解为作用域(android:host),前两者将用来在AndroidManifest.xml中声明)。最后2947和partySize分别代表了餐馆ID和限定用餐人数。

Exposing 在系统中注册Intents

前面已经创建了Intent的内容。当条件满足时,系统将负责启动匹配Intent的应用程序(例子中所指:OpenTable)。为了让系统认识这位 “新朋友”(Intent),需要在<Intent-filter>标签中根据Intent的内容修改的属性,并根据Uri的描述创建一个新标签:(以上设置都被包含在AndroidManifest.xml中)

? XML
 android:name=".activity.Splash" ... >
...
>
 android:name="com.opentable.action.RESERVE"/>
 android:name="android.intent.category.DEFAULT" />
 android:scheme="reserve" android:host="opentable.com"/>
>
...
>

如果程序中包含有多个开放的接口,那么可以根据上面的方法对每个中的管理员在2009年8月13日编辑了该文章文章。

-->
阅读(568) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~