Android Add-ons

Android Add-ons 


本文暂时只针对Android 1.5 Cupcake以及1.6 Donut平台对Add-ons进行分析。 

Android Add-ons是Android中的可选API。Google和Sun相同,把部分高端应用作为可选API供手机生产商定制不同的硬件支持模块。在JME中Sun是以JSR方式公布而Google采用了Add-ons API。 

一.开发用的SDK 
从1.5开始,Google release出的android版本会将Google的一些特色服务分出来,整合到Add-ons中,编译的库在add- ons/google_apis-3/libs目录的map. jar下,我们可以将它们反编译看到里面的一些“内幕”。 
所以我们如果想在自己的应用中应用到Add-ons的东西,在新建Eclipse project的时候,需要选择Build Target 为3 (SDK1.5 Cupcake) ,或4(SDK1.6 donut)  





这样我们的程序就可以import Add-ons中的class,使用里面的方法。 


二.设备运行库 
2.1Emulator(模拟器) 
安装并运行载有Add-ons API的程序,需要新建一个Target ID为3 或者 4的 AVD(Android Virtual Device) 
例如: 
android create avd –n GoogleAddons –t 3  (1.5和1.6通用)或者 
Android create avd –n GoogleAddons –t 4 (只适用于1.6) 
AVD启动之后,我们可以查看到system/framework以及system./etc/permissions中多了一些内容 


对,这个就是Add-ons程序在设备中的运行库(被优化成了dex格式的文件)。 

2.2 Target(手机终端) 
作为与Google合作的手机终端的制造商 
如果想在自己的Android终端中集成Google的一些应用,例如map,market,picasa,sync等,需要和Google签约,这样Google会有专人帮你将这一系列服务整合到你的平台中来。 
作为没有和Google合作的手机终端的制造商 
我们可以使用破解的方法将Add-ons中的运行库整合到自己的framework中来(build到手机终端的system.img中)。 
操作如下: 
1. 在Android中,额外支持Google Add-ons(Google Maps),需要将如下档案(从标准的SDK中pull出来的,也可以从GPhone中pull出来)打包进System.img 
Google Add-ons只需要1--2 
Goolge Maps(Google的地图程序) 需要1--5 

1)system/framework       com.google.android.maps.jar 
2)system/etc/permissions  com.google.android.maps.xml 
3)system/framework       com.google.android.gtalkservice.jar 
4)system/etc/permissions  com.google.android.gtalkservice.xml 
5system/app             Maps.apk (Google Maps v3.0) 

2.源码:Android Cupcake Release(经测试,在donut平台同样适用。) 
1)编译源码(为了生成out/target目录中Android最原始的东西) 
2)将以上文件加入out/target/product/generic相应目录,在源码根目录使用make snod打包,获得新的system.img 

三 .SDK中常用类解析 
参考SDK中的add-ons/google_apis-4/docs/reference/index.html 

3.1 使用Add-ons我们到底能实现那些功能? 
1.MapActivity—管理Activity的生命周期,为mapview建立及取消对map service的连接。 

2.MapView—控制MapView中的view组件,管理Overlay,提供View的基本功能。 
使用多种地图模式(地图模式(某些城市可实时对交通状况进行更新),卫星模式,街景模式)来查看Google Map 

3.MapControl 地图移动,伸缩,以某个GPS坐标为中心。 

4.Overlay—覆盖到MapView的最上层,可以扩展其ondraw接口,自定义在MapView中显示一些自己的东西。MapView通过MapView.getOverlays()对Overlay进行管理。 
除了Overlay这个基类,Google还扩展了2个比较有用的Overlay 
1)MylocationOverlay—集成了Android.location中接收当前坐标的接口,集成SersorManager中CompassSensor的接口 
我们只需要enableMyLocation(),enableCompass就可以让我们的程序拥有实时的MyLocation以及Compass 功能。 

2)ItemlizedOverlay—管理一个OverlayItem链表,用图片等资源在地图上作风格相同的标记。 

5.Projection—MapView中GPS坐标与设备坐标的转换 



3.2 实做 
The first steps with Android and Google Maps: 
http://blogs.itemis.de/frey/2009/04/04/location-based-services-on-android-part-1/ 
http://blogs.itemis.de/frey/2009/04/07/location-based-services-on-android-part-2/ 
http://blogs.itemis.de/frey/2009/04/15/location-based-services-on-android-part-33-customoverlays 

四. Add-ons源码及相关的开源项目 
4.1Add-ons的Map.jar的源码(版本比较早,不过对了解Map的整个框架及实做很有帮助) 
http://gitorious.org/android-maps-api/android-maps-api/trees/master/src/com/anconafamily/android/maps 
如果想更深入,只能反编译add-ons/google_apis-3/libs下的那支Map.jar里面的class了。 

4.2mapview-overlay-manager 让地图的应用使用起来更方便 
     http://www.anddev.org/viewtopic.php?p=25712 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/clybe/archive/2009/09/27/4602379.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值