Professional Documents
Culture Documents
农丽萍,王力虎,黄一平:Android 在嵌入式车载导航系统的应用研究
Computer Engineering and Design 2010,31 (11) 2473
嵌入式系统工程
Android 在嵌入式车载导航系统的应用研究
农丽萍 1, 王力虎 2, 黄一平 1
(1. 广西师范大学 电子工程学院,广西 桂林 541004;2. 广西师范大学 物理科学与技术学院,广西 桂林 541004)
作原理决定了它是目前最具可移植性的移动设备操作系统 [8],
0 引 言
本文在众多嵌入式软件中选择 Android 操作系统作为车载导
随着城市化的进展和汽车的普及,交通拥挤加剧,交通事 航系统终端软件,便于软件升级和维护,能够有效降低软件的
故频发,交通环境恶化,这成为长期以来困扰发展中国家和发 成本,降低移动设备价格;系统内部使用开源库类,既为开发
达国家的严重问题 。在美国、日本等发达国家,车载导航已
[1]
人员提供一个非常便捷的开发环境,也为同行设计人员的方
经成为大众生活的辅助工具,中国由于技术和自主研发能力 案设计提供有用参考,促进嵌入式系统的发展。
的落后和不足,导致车载导航产品“物美”并不“价廉”[2]。车载
1 Android 操作系统介绍
导航系统是集中应用了自动定位技术、地理信息系统 ( 简称
GIS)与数据库技术、计算机技术、无线通信技术的高科技综合 Android 是 Google 于 2007 年 11 月宣布的基于 Linux 平台
系统 [3-4]
。依据车载导航系统把车辆和道路综合起来考虑,运 开源手机操作系统名称,号称是首个为移动终端打造的真正
用各种高新技术系统可以有效解决交通问题 [5]。我国市场上 开放和完整的移动软件。Google 重新设计了 Java 虚拟机和系
高档的 GPS 测量设备和 GPS 接收模块仅限于自主式导航终 统,使得 Android 的 Java 应用更接近于底层系统,效率更高;另
端产品,技术不够完备,市场化程度低 [6]。随着对导航系统信 外使用虚拟机技术使得 Android 的应用在被监控的情况下运
息服务能力要求的进一步提高和终端硬件成本不断降低,软 行,安全性更高。Android 包括移动电话工作所需的全部软件,
件操作系统所占比例越来越大,因此选择一款易于开发、维护 而且不存在任何以往阻碍移动产业创新的专有权障碍,具有
和升级,并且兼容性强的操作系统软件来支撑终端硬件系统 平台标准化、用户可定制以及服务免费等特色。是一个对第
的运行就显得异常重要 [7]。 三方软件完全开放的平台,突破了 iPhone 等只能添加为数不
由嵌入式 Linux 和 Java 构成的 Android 系统,其架构和工 多的固定软件的枷锁;同时与 Windows Mobile、Symbian 等厂
收稿日期:2009-07-06;修订日期:2009-09-10。
基金项目:广西研究生教育创新计划基金项目 (2008106020809M263)。
作者简介:农丽萍 (1985-),女 (壮族),广西桂林人,硕士研究生,研究方向为嵌入式系统; 王力虎 (1962-),男,广西桂林人,博士,教
授,研究方向为计算机网络; 黄一平 (1983-),男,广西桂林人,硕士研究生,研究方向为嵌入式系统、智能卡开发。E-mail:pingarm@qq.com
2474 2010,31 (11) 计算机工程与设计 Computer Engineering and Design
卫星
车载远程监控服务器
Internet 防火墙 卫星
Google
Android 嵌入
Map 电子
式操作系统
地图
卫星
SP 短消息网关
液 车载导航终 串
10.4 寸 LCD 晶 GPS 数据接
端硬件平台 口
液晶显示屏 接 收处理模块
1
口 ARM 核心板
GSM 网 CPU、ROM、
RAM、时钟、
复位
触
串 摸
GPRS 无线
口 屏 触摸屏输入
通讯模块 2 接
口
语音提示
图1 车载导航终端整体结构框架
农丽萍,王力虎,黄一平:Android 在嵌入式车载导航系统的应用研究 2010,31 (11) 2475
回经度数据;
Android 应用
对于海拔高度,hasAltitude() 判断是否有海拔数据,而 get-
桌面 短信收发程序 日历 电话通讯录 浏览器
Altitude() 则以米为单位返回海拔数据;
E-mail 客户端 GPRS GPS Google Map 地图
对于方向,hasBearing () 判断是否有方向数据,而 getBea-
Android 应用框架
ring() 则以度为单位返回其值;
项目管理 窗口管理 内容提供 视图管理 软件包管理
对于速度,hasSpeed () 判断是否有速度值,而 getSpeed() 则
电话管理 资源管理 定位管理 通告管理
以米每秒为单位返回速度数据。
Android 普通库 Android 运行环境
3.2 Google Map 电子 地 图 显 示 处 理
界面管理 媒体功能库 SQLite 引擎
Java 内核库 利用 Android 平台开发导航地图过程中,主要采用 Android
3D 图形库 游览器引擎 标准 C 函数库
Dalvik 虚拟机 提供的 MapView 和 MapActivity 这两个类实现。其中 MapView
位图和矢量 2D 图形库 安全套接层
是一个展示地图的视图,它可以获取键盘事件 (onKeyDown 和
Linux 内核 onKeyUp) 来支持地图移动和缩放功能,同时也支持多层 Over-
液晶驱动 触摸屏驱动 音频驱动 GPRS 驱动 GPS 驱动
lay,可在地图上画坐标 、写地名、画图片等。MapView 只能通
电源管理 内存管理 进程管理 安全管理
过 MapActivity 来建立,因为 MapView 需要在后台使用文件系
统和网络,所有这些线程需要在 Activity 的生命周期中被控制。
图2 系统整体软件结构框架
如何利用 Android 的强大地图功能将 GPS 模块定位得到
应用程序开发效率。 的经纬度信息在地图上显示出来呢?地球上的任何一个地点
(3)Android 普通函数库:Android 的普通函数库包括:标准 都可以利用经度+纬度来表示。在 Android 的类库中,Point 类
C 函数库、媒体功能库、浏览器引擎、2D 和 3D 图形库及 SQLite 代表了一个地点的经纬度,函数格式为:Point(int latitudeE6,int
引擎等。开发者利用这些功能可方便开发出人机界面友好的 longitudeE6),E6 是微度,即度数乘以 1000000。如果要指定地
应用程序接口,极大地缩短了开发进程。 图地点,须传递一个 Point 类到地图中。然后调用 setMapLoca-
(4)Java 程序运行环境:Android 的程序运行环境包含一组 tionCenter 方法将地图移动到合适的位置,最后调用 MapCon-
Java 内核库及 Dalvik 虚拟机,它们有效地优化了 Java 程序的 troller 对象的 animateTo 方法可以将该坐标设置为地图的中心
运行过程。 点。在实际应用中,可以使用 zoomTo(int) 缩放到需要的级别,
(5) Linux 内核层:Android 系统平台基于优化了的 Linux 同时利用 mapView.toggleSatellite () 和 mapView.toggle-Traffic ()
version 2.6.23 内核来开发,该层用来提供系统的底层服务,提 来获得卫星图和路况图。
供诸如内存管理、进程管理、设备驱动、安全管理、电源管理等 3.3 GPRS 无 线 通 讯 模 块处 理
驱动模块,作为一个虚拟的中间层,该层位于硬件与其它的软 系统采用带 RS232 串口输出的 GPRS 模块,可直接与硬
件层之间,同时也是手机软硬件的连接层。在系统开发中,也 件平台的 UART 接口直接连接,扩展方便、实用。采用 BENQ
需要针对自身的硬件模块添加对应的驱动,如 GPRS 驱动、GPS M32 的 GSM/GPRS 无线模块,该模块体积小巧,性能稳定,支
驱动、液晶和触摸屏驱动等。 持 GSM 语音,数据,传真,短信息及 GPRS 数据传输等。其下
3.1 GPS 定 位 模 块 软 件处 理 行理论速度为 85.6Kbps,上行理论速度为 42.8Kbps。在软件开
Android 操作系统支持 GPS API-LBS,可以通过集成 GPS 发方面支持标准 AT 命令,该模块在远程监控和无线公话以及
芯片或外接 GPS 设备来接收卫星信号,通过 GPS 全球定位系 无线 POS 终端等领域都具有广泛的应用。
统中至少 3 颗卫星和原子钟来获取当前设备的坐标数据。对 Android 的 RIL(radio interface layer,无线接口层 ) 提供了电
于位置服务而言,稳定工作是关键,而 Android 完美的实现了 话服务和 radio 硬件之间的抽象层。RIL 负责数据的可靠传
这一点。Android 提供多种定位相关函数,使得开发人员可以 输、AT 命令的发送以及 Response 命令的解析。应用处理器通
灵活应用。使用 LocationProvider 对象进行 GPS 定位,而使用 过 AT 命令集与带 GPRS 功能的无线通讯模块通信。在 Linux
Criteria 对象来实现自定义定位功能。在本文设计的导航系统 内核的驱动中,提供了相关的驱动程序的支持,可以建立在
中,我们希望 GPS 设备尽可能的省电,定位尽可能的精确,并 UART 或者 SDIO,USB 等高速的串行总线上。
且需要获取运动物体的速度。因此,可以这样设置 Criteria 对象:
4 实验结果与分析
Criteria c = new Criteria(); //创建一个 Criteria 对象
c.setAccuracy(10); //设置定位精度 基于 Android 操作系统和 ARM 微处理器进行设计的车载
c.setPowerRequi main modules rement(c.POWER_LOW ); 导航系统,利用 Android 通用框架和与设备无关的应用程序开
//设置低电量参数 发平台,实现了车载导航的软件总体架构。其内部集成的 Web-
c.setSpeedRequired(true); //设置允许获取当前速度 Kit 浏览器、Dalvik 虚拟机等模块及提供的 Views、Intents、Acti-
接着将 Criteria 对象传递给 LocationManager 对象,Loca- vity、Permissions、Resource Types、Services、Notifications、Map-
tionManager 对 象供了 多种 方式 来获 取经纬 度坐 标和 其它 数 View、MapActivity、ContentProviders 以及 XML 支持的 API 接
据,它获取定位数据的方法如下: 口,可以方便开发出自身的人机界面应用程序。GPS 和 GPRS
对于经纬度,getLatitude() 返回纬度数据,getLongitude() 返 系统都有相应的 Android 接口函数支持,通过 PC 机模拟 GPS
2476 2010,31 (11) 计算机工程与设计 Computer Engineering and Design
(上接第 2434 页)
对已知蠕虫和未知蠕虫的检测同时降低了系统的误警率。初
8
7 步实验表明,该系统的设计是可行有效的,达到了设计目标。
6
5 参考文献:
时间/s
4
3 [1 ] Chen Shigang,Ranka Sanjay.Detecting Internet worms at early
2
stage [J]. IEEE Journal on Selected Areas in Communications,
1
0 2005,23(10):2003-2012.
192.168.0.1 192.168.0.10 192.168.0.30 192.168.0.63 192.168.0.100
可疑主机检测; 感染主机检测
[2 ] Chen S, Tang Y. Slowing down Internet worms [C]. IEEE