等。Android 平台使用
Java 语言编码,却使用自有的Android Runtime 来执行,该Runtime内有两个重要元件:Core Libraries(核心函数库)与Dalvik Virtual Machine(Dalvik 虚拟机器)。
核心函数库里包含了绝大多数Java 程序语言所需要调用的函数,每个Android 程序都以各自进程来执行,并且都以自属的Dalvik 虚拟机器来同时执行,各个程序的执行效率却丝毫不会受到影响。应用程序框架包含了10 个主要的软件元件,如LocationManager(位置管理员)、Activity Manager(活动管理员)、Window Manager(视窗管理员)、Resource Manager(资源管理员)、XMPP Services 等等,便于用户开发不同类型的应用程序,这种框架,在移动终端应用程序开发历史上是独有的。
在应用程序执行过程中,Android 使用Intent 类与IntentFilter 来完成窗口之间的切换。
一个Intent 描述了应用程序想做的Activity(活动),而IntentFilter 则描述了一个活动所能处理的所有Intent。在不同窗口之间切换是通过解析Intent 完成的。平台采用XML 布局与视图定制联合起来,做到"First Look", 将界面设计与应用程序逻辑分离。
Android 平台内置了地图服务模块,借助3G 网络等无线网络的高速传输条件,开发者只需简单的几行Java 代码即可将Google Maps 的地图资源显示在移动终端上,有限的几行代码即可实现缩放、浏览、卫星图/地图切换等等,同时,该平台也支持其他数据提供商的数据资源。平台提供了两个基于位置服务的地图API 开发包:android.location 以及com.google.android.maps.通过对这两个地图API 开发包内与位置服务相关的类的使用,配合设备本身的具备的定位定向等相关模块,可以很好地实现对用户移动空间信息服务应用程序开发。
2.1 Location 接口
Android 的定位接口(android.location)包含几个与位置服务相关的类,并且提供LocationManager 服务,这个服务提供定位与定向API,当然,前提是设备具备这种基本的功能模块,比如说,设备内置了GPS 接收机模块等等。LocationManager 服务不会被直接用来获取用户位置信息,它会通过getSystemService(Context.LOCATION_SERVICE)来获得一个指向它的Handle,实现对它的有效应用。一旦应用程序拥有了一个指向LocationManager的Handle,那么它将会拥有以下三种功能:
1) 查询 LocationManager 所掌握的全部LocationProviders 的最终位置信息
列表;2)
注册或者注销当前位置从一个LocationProvider 提供的实时位置更新;3) 当移动终端在一个给定的位置半径范围以内的话,激活一个给定的intent,从而实现用户所需的空间信息功能。
需要说明的是,开发阶段不能使用Network、GPS 等获取的真正的实时位置数据。为此,平台提供了模拟数据开发的功能模块,开发者可以使用DDMS 或者geo 命令行导入模拟数据到模拟器中。通过 DDMS 工具,可以设定一个经纬度来更新当前位置、使用GPX 文件来进行路径回放操作、使用KML 文件来进行回放的多个独立地标标注等等;使用geo 命令行时,通过geo fix 来设定一个地理位置,它可以设定一个包含经纬度,高程可选的地理位置,比如,geo fix -121.45356 46.51119 4392,通过geo nmea 来设定一个 NMEA 0183 语句,这个命令接受一个单独的NMEA 语句,这个语句的类型或是'$GPGGA' (fix data),或是'$GPRMC' (transit data).比如,geo nmea $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62DDMS 与geo 操作均可以把模拟位置数据送入模拟器,对应用程序开发者来说,是一个很好的位置信息服务开发辅助工具。
2.2 maps 接口
Android 的地图接口(com.google.android.map