Toolbox/google-apis
From Android中文网
[编辑] Android平台的Google API和Service
既然Android是一个开放的手机平台,那么任何人都可以DIY他们自己的设备来运行核心Android操作系统。没有任何规定要求运行Android的手机一定要安装Google的软件或一定要和Google有某种关联。
然而,一些机构或许需要从Google获得一套可选用户应用程序的授权,这些可选的程序使得你能够在你的应用程序中访问Google服务。通常来说,这些可选的用户程序是一套包含在Android的系统基础映像(base system image)中的软件,并随手机一起发行。
很多设备都会包括这些库,为了方便开发者,我们这里提供了这些API相关的信息。然而,请明确下述列表中的API并不是在所有的Android设备上都可用。如果手机没有安装Google的软件,那么这些库和类也不会在手机上。这样做的结果是,如果你的应用程序需要使用这些API而必要的库又不存在时,你的应用可能就无法安装或正确运行。
[编辑] MapView
MapView是一个Android的View对象,通过它第三方的代码可以在手机屏幕上显示和控制Google Map。Google的地图应用程序也提供了 MapActivity 对象,通过这个对象,其它的 Activity 能够显示某个位置的地图, MapView 是MapActivity的一个补充,都可以用来显示地图 。下表归纳了这两种方式的区别。
| 特性 | MapActivity | MapView |
| Layout嵌入支持 | 不支持(仅支持独立显示) | 支持 |
| 用户控制的导航 | 支持 | 支持 |
| 代码控制的导航 | 不支持 | 支持 |
| 触发事件被用户代码捕捉 | 不支持 | 支持 |
与Activity相比,使用MapView带来的好处是你能够把Map和你的Layout更紧密地集成在一起;例如,你可以封装MapView,形成自定义的控件,也可以在MapView的基础上添加很炫的交互方式(比方说用一个倾斜度传感器来探测用户倾斜设备的角度,从而相应以不同的方向来滚动地图)。MapView的缺点是你需要写更多的代码来使用它;如果你只是想简单地在一个标准的UI控件上显示Google Map,那么使用Activity要简单得多。
[编辑] 采用XMPP的P2P服务
一些应用程序需要在设备与设备之间频繁地交换信息。例如,你可能希望两个设备可以相互发送消息来实现一个交互式的Checker游戏。或者,你也许会开发一个社交应用程序(IM等)来发送一条消息给你的好友。
实现这种功能的一种途径是发送短消息给其它的手机。通过IntentReceiver,你的手机来接收到数据时,系统会收到通知,转而去检查这些数据是否包含你的应用程序所需要的数据,如果包含,那么系统就将该数据发送给你的应用程序,同时阻止其它应用程序直接看到这部分数据。这种机制工作得很好,但是存在两个主要的不足:SMS消息有时候需要好几分钟才能被对方收到,而且用户发送和接受需要付一定费用。如果你在SMS的基础上开发在线游戏,这款游戏很可能慢得让人沮丧,而且对用户来说玩游戏需要花很多钱。
作为SMS的替代方案,Google提供了一组采用XMPP协议传输消息的API。XMPP包括在线状态通知功能,这就为手机提供了一种很便捷的途径去通知彼此是否在线或是否可以互相发送消息。XMPP还提供了一个和SMS消息传递类似的编程模型,其中消息发送者调用一个Service的一个方法来发送一条消息,接收者通过广播一个Intent来接收消息到达通知。但由于XMPP采用的是一个持续的套接字连接,响应时间要比SMS短得多,从而提供十分流畅的用户体验。
XMPP仅维持一个到XMPP服务器的连接,所有的XMPP流量--包括标准的XMPP及时消息和点对点的消息传递系统控制命令都在这个连接上进行传输。
