发布时间:2022-06-20 09:26:33
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的1篇安卓开发论文,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
摘要:如今,手机的智能化及人性化已经成为手机发展变革的必然趋势,无线通信技术、GPS定位技术的手机定位软件应用也愈发成熟,为用户提供了无尽的便利服。文章就基于安卓系统的位置信息服务探讨了目前手机定位软件在导游系统终端中的技术设计与开发,希望为用户出行提供集旅游、购物、社交三位一体的综合性信息平台。
关键词:安卓系统;LBS;手机定位软件;智能导游;位置信息服务
位置信息服务即Location Based Service,简称LBS。通过由运营商所提供的无线通讯网络或GPS等外部定位方式来获取移动终端用户的具体地理坐标信息,并在GIS等地理信息系统平台的支持下,为用户提供智能终端定位、智能导游等增值服务。具体来说,地图定位、自动触发景点多媒体信息、游览轨迹信息和周边服务设施信息都应该是LBS所涉及的服务范围。利用信息化技术将游客、旅游实体、旅游实体管理者这3方联系到了一起,并达成了交互的目的。也正是基于此系统,游客可以在出行期间得到更好的信息化服务。
1.安卓系统下LBS智能终端导游系统的关键技术阐述
位置信息服务LBS主要是基于3方技术来共同完成的,它们是来自于移动终端的定位软件技术、网络通信技术以及安卓系统。以下就一一阐述这3方下的具体关键技术特点。
1.1定位软件技术
定位软件技术是LBS智能导游系统应用中的关键优秀,一般起到功能作用的是Skyhook Wi-Fi定位系统和蜂窝基站定位系统,包括外部全球定位系统GPS。这几项技术都通过天线向外部发送信号,并寻求距离自己最近的复数基站,通过它们的信号转递进行信号定位。而Skyhook Wi-Fi则运用到了固定热点技术,它能直接与手机或其它智能移动终端的MAC地址相互绑定,实现对系统无线信号的接入,从而获取用户想要的地理定位信息。
另外,利用智能手机内部的微机电三轴加速传感器也能够实现对智能导游系统功能的应用。其功能实现原理是手机在空间坐标系中同时向3个方向轴上输出加速度分量,并通过这3个方向的加速度积分计算来推导出空间三维速度和位置,为用户提供准确的服务。
1.2网络通信技术
网络通信技术包含许多种,比如套接字通信,HTTP协议,增强现实技术等等。首先说套接字通信(socket),是网络通信技术的基础,能够支持TCP/IP协议获取最基本的网络通信包,从而实现对客户端服务器的连接,进一步获取本地IP,本地DNS,远距离IP及DNS。另外,安卓系统中的SDK、CFNetwork framewrok也能为基础网络通信接口提供网络通信服务,实现远程位置查询。
而HTTP协议则提供了简洁快捷的应用层技术,基于信息传输主体内容的实体、通信层与应用层之间的通信连接、HTTP所传输的消息内容、客户端向服务器发送的内容请求、接受客户请求时HTTP月艮务器端的响应以及由URI表示网络服务中的资源来为LBS提供更好的网络技术支持。
1.3安卓系统
安卓系统出现相对较晚,主要采用了软件堆层的主题架构,并细分为3大部分,底层Linux内核、中间层函数库Library及虚拟机,还有上层具体app应用软件,它们都是由C语言、c++、JAVA等计算机语言所编写的程序。
针对LBS来说,安卓系统中的Linux和Application Framework则更加关键。Linux主要为安卓系统提供优秀系统服务,是连接智能手机软硬件系统的抽象层,并将二者细化分层。所提供的服务也是统一的,能够屏蔽一些不相关层的信息,使各个信息层之间处于不关联状态。而Application Framework则是利用安卓系统中的开发应用程序来简化手机系统结构,并将LBS中所需要应用的视图、音频等组件集合起来,允许用户使用各个应用程序来访问其它数据,这在智能导游系统中是十分重要的,即通过对系统资源的共享应用来实现手机定位。
2.基于LBS的安卓智能手机导游系统软件设计
整体而言,基于LBS的安卓智能手机导游系统软件应该包括优化了的封装位置定位服务、高品质的网络通信服务、实时的数据缓存服务以及其它一部分交互展示功能。正是这些关键技术的加入才丰富和提升了手机定位软件的应用性能和运行效率。
2.1基于LBS的相关定位控件设计
2.1.1控件设计
BPLocation是LBS中一个较为重要的位置服务控件,它能够创建uIAccelerometerDelegate与CLLocationManagerDelegate接口,通过它们实现对GPS位置信息的获取。同时它也能计算GPS漂移数据量,实现对用户运动轨迹函数的推算、区域检测等等。近似于BPLocation类的相关函数种类众多,文中简单介绍3种:instance是典型的BPLocationManger类,它属于静态函数,能够根据系统应用来实现XCBPLocationManger变量的获得;LocationManager则通过设置DesiredAccuracy来获取用户的位置方向与具体信息数据;还有accelerometer,它是基于UIAcceIerometer抽象类的控件,它就是利用到了微机电的三轴加速传感器,可以在用户手机LBS软件客户端的x,y,z三个轴上实施加速度,进而计算用户手机设备智能导游系统的运行速度,起到纠正手机内部GPS定位误差的作用。
2.1.2设计应用
在具体应用中,LBS的相关控件会根据手机的位置实施运动轨迹的定位,可以实时记录用户的运行轨迹,一旦出现任何漂移,也能将这些偏差自动滤掉,这就是过滤偏移。过滤偏移共有2种方式:利用GPS历史记录确定偏移是否存在;再者就是利用计算机的运行速度和加速度来确定定位是否存在偏移,这种方法更加合理,而且精确度也有保证。
区域检测也可以通过手机安卓系统检测游客在所规定区域范围内的运动轨迹,这是智能导游系统所惯用的技术。当游客离开规定区域时,系统会发送消息通知用户,告知用户的运行轨迹,比如一些用户在跑步时会用到的计步软件,它的检测原理主要以规定区域中心点作为主要检测中心,当用户运动时,系统会为其与区域中心点做比较,所比较出的结果就是用户以中心点为轴心的运动轨迹。
2.2基于网络通信系统的相关模块设计
就网络通信系统模块设计而言,主要将研究重心放在BPFormDataRequest和BPRequestQueue的设计上。BPFormDataRequest是BPHTTPRequest的子类,在扩展手机智能导游系统对POST的支持时,就要实现基于POST的所有位置数据请求参数设置和相关文件上传,这样才能发挥BPFromDataRequest的实际作用,明确数据24#的路径和网络通信模块的所有通信接口。
相对而言,BPRequestOueue则衔承于NSOperationOueue模块,它能够管理并实现BPHTTPRequest的实时复数请求,同时也允许其对象在网络环境中发送任何位置信息请求,它与普通的传输信息模块是不同的,它对位置信息的确定性更强,而且严重依赖于图像来定位如图l所示。
如果客户通过手机端创建BPHTTPRequest模块,并发送信息请求,所发送的信息将以队列形式等待响应处理,此时LBS也会监测定位信息的传送状态。当请求处理完毕,服务器端将会收到所返回的结果并做记录,同时释放用户所要求的请求资源。
2.3基于UI视频图像交互展示技术的系统设计
手机智能导游软件要实现对视频图像的交互展示,就必须基于展示模块来设计UI。本文所介绍的是对定位软件系统中原始UIImageYiew的扩展,即BPImageView的应用,能够实现地图类型数据的可视化分析,为智能导游系统提供更多的位置空间数据和可视化功能,以地图和影像的形式展示出来。为了实现地图、影像等数据的可视化,需要通过ARView模块中的动态加载及流技术对地理位置信息进行强化。所以本文主要介绍了基于UI视频图像交互展示技术的系统设计,希望帮助手机实现对地理数据可视化信息获取的功能强化。
2.3.1基于BPImageView模块的网络图片加载设计
因为BPImageView是UIImageView的子类,所以应该实现其父类UIImageView对所有图片显示类以及图片存储数据的合理运用。这里采用的方法是利用BPImageView来接收setImageURL消息,然后引用基于BPImageLoader的可视化信息强化输出方法。此方法可以达到查看网络中缓存数据存在性的目的。如果数据存在,就说明它们可以直接以图片的形式载入。如果数据不存在,则表示要再次通过BPImageLoader类进行loadlmage For URL数据的调用,重新加载图片。
2.3.2 ARView视图功能UI强化的设计
首先要说,ARView是具备2部分视图的,它们是兴趣点POI视图和实施传输视频流如图2所示。
2个POI点视图处于叠加状态,这就可以确定POI的兴趣点,如果以视图表示POI,就可以了解到用户对该POI点视图的兴趣度。这里采用一个叫做placesOfTnterestCoordinates的数组,通过四维向量来表示数组中用户所记录的兴趣点坐标,这样就可以利用系统来记录用户的位置信息,为用户导航。
3.结语
基于安卓系统的手机定位软件的开发与设计应该是全方位的,LBS位置信息服务的多角度设计理念也恰好迎合了这一点发展需求,让手机智能系统更加人性化、系统化和精确化,特别是可视化与智能定位的巧妙设计应用也体现了它对于目前无线通讯服务的重要性。而且这种位置信息服务技术也切实地运用到了诸如旅游这样的人类大型产业中,为社会发展赢取了一定的效率和效益。所以说,LBS技术是一种具有巨大潜能的,前景无限美好的现代化技术,也希望它可以应用到除旅游外的其它各个领域,发挥它的科技智慧,为人类造福。
摘要:自从安卓手机操作系统以来,它便以开放性、不受束缚、丰富的硬件、方便开发等优势风靡全世界,我们利用安卓手机平台,开发了一款旅游社交平台软件,该软件采用安卓Sdk4.0进行开发,采用了C/S模式,可以节省网络资源,简单,易用,服务器端采用Java Web开发,数据库采用了免费的Mysql。它可以给用户提供你最想要的旅游栏目,让你置身于朋友的海洋之中,从此出行旅游更加方便。
关键词:Android平台应用开发;旅游社交平台
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。大学生从高中升入大学,犹如一下子从“地狱”进入了“天堂”,有着大量的课余时间,但是往往他们无法合理利用,大多蜗居在宿舍里打游戏,费心劳神,因此开发一款基于安卓平台的旅游社交软件,帮助大学生走出教室,走出宿舍,到自然中,去锻炼,去陶冶情操,最大程度的满足他们旅游交友的需求。
1 基于安卓平台旅游社交软件的需求分析
这个平台主要包括3个子系统,它们分别是:1)发起活动子系统;2)参加活动子系统;3)后台管理子系统;4)活动分享子系统。如图1所示。
在活动发起子系统中包括以下几个功能:1)活动申请;2)活动信息管理;3)活动资料查询;4)活动上报申请。
在参加活动子系统中包括以下几个功能:1)活动参加;2)活动资料查询;3)参加活动申请。
在后台管理子系统中包括以下几个功能:1)用户管理;2)公告管理;3)权限管理;4)分类管理;5)系统维护。
在活动分享子系统中包括以下几个功能:1)活动评价分享;2)活动图片分享。
2 旅游社交平台的总体设计
2.1 软件总体设计
根据我们定义的需求分析,我们给出了旅游社交平台软件总体设计,客户端运行在安卓手机上,服务器端运行在Tomcat上,数据库采用Mysql数据库,开发语言采用了最流行的Java语言进行开发,以下是整个软件的整体架构图,Android前台界面负责数据的采集和展示,Android端HTTP组件负责将前台界面采集到的数据封装成HTTP协议发到Servlet上,Servlet负责接收HTTP协议的数据,然后解析,调用相应的业务方法,Server端业务层负责从数据库中采取数据交给Servlet,Servlet把封装的json数据再发到HTTP组件,HTTP组件解析数据,再发往前端进行展示,如图2所示。
2.2数据库设计
2.2.1 数据库中所需的各种表
2.2.2 数据库概念模型和物理模型的设计
设计数据库时,我们可以采用sybase公司的powerDesigner来进行数据库设计,使用powerDsigner工具设计时,首先设计数据库概念模型图,它的功能和数据库E-R图十分类似,好处在于,可以使用powerDesigner工具轻松的转成数据库物理模型,然后再借助powerDesigner工具可以很轻松的生成SQL语句,从而大大方便开发。
2.3 详细设计
2.3.1 服务器端数据库工具类设计
为了更好的和数据库交互,减少开发工作量,我们对数据库操作冗余的代码做了一定的封装。这样就没必要频繁的写JDBC代码了,从而提高了程序内聚度。
2.3.2 各个业务Service的接口设计
接口在项目中就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。 采用基于接口编程的项目,业务逻辑清晰,代码易懂,方便扩展,可维护性强。即使更换一批人员,新来的人依然可以快速上手。对于团队来说,意义更大。
2.3.3 各个服务接口的实现
在设计好接口之后,我们就可以编写程序来实现各个接口了。在这个过程中我们也体会到了协同工作的效率。我们几个开发人员就可以并行的进行开发,然后再把代码提交到Svn代码管理工具上,从而很大程度上提高了工作效率。
2.3.4 各个服务所对应的Servlet的编写
Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:1)客户端发送请求至服务器端;2)服务器将请求信息发送至Servlet;3)Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;4)服务器将响应返回给客户端,如图3所示。
一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。
2.3.5 GoGoGo数据编码问题的解决
我们把安卓数据客户端所获取的数据通过HTTP协议传送到服务器端,由Servlet来获取数据,由于Tomcat默认编码是ISO8859-1,因此在后台获取中文数据时会遇到乱码。解决办法是:1)要重写HttpServletRequestWrapper下面的getParameter()方法,在这个方法对获取到的数据,重新用UTF-8编码。
2)在Filter中对每个请求过滤,调用HttpServletRequsetWrapper重写的getParameter()方法,再把请求传说出去,就完成了过滤请求,如图4所示。
2.3.6 前台和后台数据交互的问题
Android前台发送数据给服务器后台应用程序(Servlet),Servlet处理后,要给前台返回数据,数据格式如何选择将是一个非常重要的问题,因为JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于阅读和编写,同时也易于机器解析和生成。所以我们采用了json作为前后台数据交换的数据格式。
2.3.7 前台向后台如何传送数据问题
我们编写了一个HTTP数据传送工具,负责Android前台和Server后台的数据传送。因为是HTTP协议是基于TCP协议的,所在Android前台和Server建立连接需要进行3次握手,连接建立成功后,才进行传送数据。当释放连接时,需要进行4次握手才能释放连接,如图5所示。
2.3.8 数据加密问题
一个优秀的软件,在确保功能实现的同时,另外一个不得不考虑的问题便是如何保障用户数据的安全,对于用户重要的数据,我们非常有必要对其进行加密后再保存,现在比较流行的信息摘要算法有MD5和SHA1,对于这两种算法,主流的编程语言都有对其实现,因此用起来方便又安全。
2.4 旅游社交平台测试
软件测试是软件开发环节中非常重要的一环,软件测试是帮助识别开发完成的计算机软件的正确度、完全度和质量的软件过程;是SQA的重要子域。它主要包括单元测试,集成测试,系统测试,还有验收测试几个大项。
2.4.1 单元测试
在单元测试环节中,Android端采用了Android自带的单元测试工具AndroidTestCase,服务器端我们采用了Junit4测试工具,对每一个业务方法进行了测试,确保正确后才进行下一步开发。
2.4.2 集成测试
在单元测试通过的基础上,我们将所有模块按照设计要求组成子系统,进行集成测试,从而发现在单元测试中没有发现的Bug,尽早的修改,降低项目风险,主要使用的测试工具是Selenium.
2.4.3 系统测试
在集成测试完成的基础上,我们完整的对旅游社交平台进行了系统测试,测试我们的功能是否达到了当初的设计要求,测试其容错能力和恢复能力。
2.4.4 测试结论
系统功能的测试结果显示,基于安卓平台旅游社交平台能够正常使用。各功能都可支持,满足了预期设计。
3 结束语
经过我们的努力,我们终于完成了一个简易社交平台的设计和开发,基本上满足了当初的设计要求,能够方便大学生的郊游和交友的需求,总之项目还是比较成功的,但是也存在着一些不足,比如在软件架构设计上肯定达不到很高的水准,总之我们会继续努力,争取使其更加完美。
[摘要]本文主要介绍基于安卓智能移动系统的大比例尺地图数据采集系统,对系统的功能、特点、结构等进行论述。
[关键词]安卓 数据采集 数字化测图
1引言
现代科学技术的飞速发展,尤其是计算机技术的广泛采用,使测绘技术发生了革命性的变化,从模拟阶段转向数字阶段,数字化测图已成为当今大比例尺地形图测绘的主要方式。数字测图野外测量自动记录,自动解算处理,自动成图,并能提供可处理的数字地形图。目前,数字化测图软件、硬件已经得到的长足的发展,但野外现在草图的作业方式效率依然较为低下;虽然现在已有电子平板、掌上平板等野外数据采集软硬件设备,但是由于成本过高,电池续航能力不足等因素,而未能大面积推广。为了使得野外数据采集更加高效,借助现代科技,利用安装了安卓智能移动系统的设备(手机、平板电脑)体积小、便于携带,触控方便、成本低的的特点,开发一套基于安卓系统的大比例尺地形图测绘系统,对提高生产效率将起到积极的作用。
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。安卓系统平台具有以下特点:①开放性:允许任何移动终端厂商加入到Android联盟中来,可以使其拥有更多的开发者;②丰富的硬件选择:这一点还是与Android平台的开放性相关,由于Android的开放性,它拥有千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容;③方便开发:Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,因此会有新颖别致的软件会诞生;④Google应用:Android平台能无缝结合优秀的Google服务,如地图。本文针对用户对大比例尺地形图测绘简易性和高效性的需求,介绍了基于安卓智能系统的大比例尺测图系统的整体结构和基本功能。
2系统设计
2.1系统优点
基于安卓开发的地形图测绘系统与便携式计算机、平板电脑、工业级的PAD设备相比较具有以下优点:①体积小、重量轻、适合于野外工作的优点;②与便携式计算机、工业级的PAD设备相比,价格便宜、成本低;③能耗较低,续航能力强,拥有与之配套的便携式电源;④可触屏绘制图形,反应速度快,工作效率高。
基于安卓开发的地形图测绘系统与测绘外业工作的适宜性特点:①超大屏幕:7英寸(1024×600 像素)或10英寸的屏幕,完全可以满足地形图测绘外业工作的需求;②CPU:双核或四核,完全可以胜任地形图测绘的野外数据采集任务;③摄像:可以现场录制测绘现场的视频,减少外业巡查,提高效率;④拍照:定点记录现场观测的信息,为内业数据处理提供现场影像资料;⑤录音:记录外业调查的语音信息;⑥GPS:提供导航定位功能,记录一定精度范围内定位信息,辅助踏勘工作;⑦WIFI:可以方便的接入网络营运商提供的互联网服务,传输非涉密数据;在局域网内快速的与网络工作站交换数据,上传数据到局域网服务器;⑧蓝牙:驱动控制测量仪器、与测量设备交换数据、备份或恢复数据;⑨USB:驱动控制测量仪器、与测量设备交换数据、备份或恢复数据;⑩SD 存储卡:大容量SD卡可用作软件安装和数据存储。
2.2系统的数据流程
根据测图系统中数据采集的特点,系统的数据流程,如图1所示。
2.3系统结构
本地形图数据采集系统是以智能平板电脑(或智能手机)为载体,在安卓平台下使用Java 作为编程语言来开发的野外数据采集平台,集数据、图形、属性采集、编辑于一体的外业数据采集系统。该数据采集系统具有可视化、可触控、面向对象的操作界面、完整的地图符号和先进的编辑功能,可以同步采集数据、图形和地物属性,也可以在野外只采集数据或者图形,再进行图形的编辑和属性的匹配。用户可根据自己的需要和习惯选择方便自己的作图方式,利用图形编辑系统和属性管理系统,对于已作的图形可以进行再编辑和属性的更改。使成图效率成倍提高,系统结构示意图,如图2所示。
3系统功能
系统主要包括图根控制、碎部测量、图形编辑、图形(数据)查看、距离量算、坐标量测等基本功能模块。
3.1图根控制
(1)控制点管理:该功能主要实现对测区内测量控制点的管理,包括把控制上传到全站仪等采集设备、对控制点进行添加、删除、修改、查询等,并实现在地形图中自动绘制控制点符号。
(2)图根导线测量及平差:包括图根导线的基本设置,如方向、斜距、天顶距测回数、限差等。测量结束后利用简易平差原理,开发导线简易平差功能进行导线平差计算,可处理符合导线、闭合导线、支导线、无定向导线。平差结果及原始观测数据自动生成报表输出。对于导线中的一个粗差可以自动探测。
(3)自由设站:支持全站仪自由设站法的测量方式,包括已知点的观测、错误检查、坐标计算及存储等功能。
(4)寻点功能:利用设备的GPS定位功能,通过求解测区的坐标转换参数,可以速度找到测区的控制点大致点位,设站定向更迅速。
3.2碎部测量
碎部测量是数据采集的一个主要功能,程序中提供了两种基本的测量方式:极坐标法测量、直角坐标法测量。极坐标测量中通过填写图块代码,连接点,连接线型,可实现对应的图形连接和属性编码。也可通过触摸屏幕进行逐点连接,或按各点测量的顺序依次自动连接。在碎部测量中,碎部点坐标可以通过仪器设备采集得到,也可以根据现有的图形关系计算得到。
3.3碎部点坐标测算及连码处理
碎部点坐标测算是利用已有的基本碎部点通过一定的几何关系计算出未知点,并将点显示在屏幕上。系统中提供的方法包括:直角折点、直线相交、边长交会、矩形2点、矩形第4点、方向直线交会、垂线直线交会、内插点、对称点、垂足点、直线定点、方向线支距、直角偏距等。
系统开发提供一种更为简单的连码处理方式。它既提高了作业速度,又减轻了作业人员的劳动强度,它在生成测算点坐标的同时,也生成了相应的图块。主要可提供的方法包括:一点矩形、两点矩形、3 点矩形、直角折线、方向伸缩、直角隔点、过点平行线、距离平行线等。
图形编辑包括对图形的浏览、对图块和点的编辑等功能:①图形的浏览,包括图形的移动、放大(开窗放大) 、缩小、全图;②图块的编辑,包括对图块的删除、复制、粘贴、图块属性的修改。同时也可通过属性代码进行图块的添加;③点的编辑,包括点的属性修改、点的删除、点的添加等;④图层控制,系统的数据按地物特点分层放置,可以通过图层控制功能来开关显示相应图层,以提高图形显示速度,便于用户的各种编辑处理。
3.5数据转换
系统开发需提供数据转换接口,实现将外业采集的图形数据生成各种数字化成图软件或图形处理软件的交换数据文件格式,系统支持DWG(CAD),DXF,SVF(威远图) ,CAS(南方) ,EBP/ EBF(瑞得)、SHP(ARCGIS)等数据文件格式。
4系统的特点
(1)根据测量人员的作业习惯和要求进行开发,提供了更友好、操作更方便的用户界面。
(2)在数据存储过程中,采用面向对象的概念来管理地物(图块) ,这样就能很方便地对数据进行增删改,包括图形及属性数据。
(3)系统开发必须具有对所采集的数据均进行了数据的完整性和图形与属性的一致性的检查的功能,以便满足各种专题地理信息系统对外业数据采集和数据建库的需求。
(4)除支持全站仪等作为数据采集设备外,还支持通过GPS-RTK直接采集地形数据。
5结束语
目前,数字测图技术已经取代传统的手工测图方式,数字地图产品也成为最主要的地图产品。我国已有商品化的大比例尺地面数字测图系统,但尚存在某些问题,其中最主要而突出的问题是外业采集数据手工绘制草图较为繁琐,作业速度慢,内业成图时需对照草图手工绘制图形,工作效率低下;已有的掌上测图系统多采用非智能平台开发,数据传输不便,成本高,设备功耗大,无法长时间使用,无法大范围推广使用。
基于安卓智能移动系统的外业数据采集系统,充分利用了平板电脑体积小、重量轻,运行速度快,便于携带,低能耗,工作时间长等优点,在最佳的测量条件下进行最多的测量作业,减少测量环境对测量数据精度的影响;同时可视化界面的操作系统,具有良好的图形显示、图形编辑和交互操作的特性,实现即测即显,大大减轻内业工作量,提高了工作效率。
摘 要:目前,随着科技的不断发展,通信技术得到了长足的进步,如Pad,手机等数字产品成为人们日常生活中必不可少的重要组成部分,现在的手机等移动通信设备不仅具有通信这项单一的功能,还逐渐演变成一个可以移动的微机系统,为人们提供丰富的信息和服务。安卓操作系统作为一个应用广泛的智能平台,在该系统下开发的应用软件不断增多,本文详细的研究和分析了在安卓平台下开发中国象棋游戏的相关技术,设计并实现了中国象棋游戏的开发。
关键词:中国象棋游戏;Android;智能手机
随着数字化电子技术的飞速发展,联机游戏已经成为人们日常生活中一项重要的娱乐方式,而象棋是一种非常受人们喜爱的智力游戏,随着手机平台的不断升级,安卓手机系统已经占据了全世界59%的市场份额,在2007年,谷歌公司在Linux系统下开发了一款操作系统,它由中间件,用户界面,应用软件和操作系统几部分组装,这是一款专门为移动终端量身制作的移动平台,安卓平台是一个完全开源的平台,拥有完整的体系架构。安卓平台由Linux Kernel即Linux内核,Android Runtime,Libraries(库)以及Applications(应用程序),Application Framework(应用框架)等五部分成,所以,一款在安卓平台上的象棋游戏具有非常大的市场潜力,本文所设计的中国象棋游戏,正是在手机安卓平台上设计开发的广泛的,拥有非常大的实用性。
一、基于安卓系统的中国象棋游戏的设计
(一)系统的总体设计
本文设计的象棋游戏系统是一款由手机作为客户端到PC服务器的网络游戏,它的系统框架由服务器和移动终端组成。其中PC服务器主要用于同步转发手机客户端的数据,由此客户端之间就可以通过服务器来实现通信,而手机客户端的作用是游戏的操作,界面的显示并与服务器之间通信。
(二)系统的模块设计
在游戏的开发设计中,主要运用了人工智能技术,网络通信信息管理技术等,游戏有联机的人人对战以及人机对战模式,为了实现手机客户端与PC服务器之间的通信以及人机对战功能,在设计中将游戏的开发分为五个部分,并分别从静态模型设计和动态模型设计来阐述系统的设计,这五个模块分别为:(1)棋房间、棋桌模块:主要用于实现客户端分流与人人对战;(2)棋盘、旗子模块:包括游戏中棋盘的布局以及棋子的走法,系统的规则判断;(3)人工智能模块:具有人机对战的功能;(4)网络通信模块:主要用于客户端与服务器的通信,数据的发送;(5)资源存储模块:主要用于存储游戏中用到的声音资源,图片资源等。
(1)中国象棋游戏静态模型的设计。在游戏中,用Bitmaploader作为图片资源模块的静态类,声音资源用CNChesssoundmanager静态类,并将游戏中涉及到的棋子、棋盘等图片资源和声音资源采用独立的模块,这样不仅方便资源的维护,还可以实现资源的复用。
在游戏中,棋子和棋盘是游戏中非常重要的一部分,对使用者具有直接的影响,在设计中,棋子用CNChess作为基类,棋子的房间类为CNChessroom,棋桌类为CNChesstable,并在设计中直接使用棋盘类接口,并不通过内部处理,这样就大大降低了模块间的耦合程度。
网络模块作为联机对战的重要模块,采用CNChessclientsockerserver,Networkmanager类来实现网络连接和传输网络信息。
人工智能模块可以实现人与计算机博弈,在游戏中运用了人工智能技术,使计算机具有一定棋力,在游戏中用Humanvscomputer作为计算机的博弈类。
服务器端模块用来实现让客户端的用户在同一个平台下进行游戏对战,这里用到的类有CNChesslistensocket,用来监听客户端的连接,CNChessclientsocket用于各客户端的通信。
(2)中国象棋游戏的动态模型设计。系统的游戏模式分为联机对战和人机对战模式。人人对战模式是让两个玩家通过服务器通信之后进行对战,玩家选择联机模式以后,会打开一个网络端口,这个网络端口可以连接其他手机客户,然后通过服务器建立网络连接之后,进行双方对战。并用Encryptpassword和Encryptpacket这两个模块来进行通信时的数据安全处理,其中Encryptpassword用于对用户登录密码进行加密,Encryptpacket用于对游戏中的数据包进行加密,这样就对通信过程中数据的安全进行了保护。
人机对战模式即将中国象棋和人工智能结合起来,使计算机拥有下棋能力,这样玩家就可以与计算机直接对战,人机对战模式使用的是Humanvscomputer类,玩家只需要选择计算机的棋力水平的等级和执棋方就可以与计算机对战。
通过这两种方式,玩家既可以使用网络方式与其他玩家在线下棋,也可以在没有网络的条件下进行人机对战,达到了随时随地游戏的目的。
三、结束语
本文通过对安卓操作系统的研究,设计开发了一款安卓操作系统下的中国象棋手机游戏,这款游戏不仅可以实现人机对战,还可以联网实现人人对战,具有很大的市场潜力,本文详细的阐述了游戏的系统框架和游戏的实现方式。象棋的计算方式非常复杂,至今任然存在一些研究盲点,有待进一步提高,所以这款游戏具有很大的提升潜力。
[作者简介]陈明利(1990.05-),男,贵州六盘水人,顶峰互动产品经理,具有丰富的移动游戏应用设计及研发经验,对移动互联网、手游等具有丰富的积累及独到的见解,精通Android、iOS等游戏应用开发。
摘要:针对数据结构相对抽象的特点,结合实际情况,通过利用文字、图像、动画等形式描述数据结构的算法特点,在安卓手机平台上开发数据结构演示软件。整个演示软件使用下拉列表控制方式,每个列表项包括若干选项。每个列表项对应一个选择或一个子列表。系统一直处于选择菜列表或执行某一被选列表项状态,直到退出演示软件。该数据结构演示软件包含了线形表、堆栈、树、图等基本数据结构的概念以及实例分析的展示。
关键词:数据结构;演示软件;安卓手机平台;安卓布局;安卓控件
数据结构课程是计算机软件的理论和技术的重要基础,不仅是计算机各专业的优秀课程而且是其他理工科专业的主要选修课。算法演示属于软件可视化研究的一个分支,它将算法的运行过程及行为通过图形、动画、声音等方式进行展示,以辅助算法学习者理解[1]。当前,随着多媒体技术的发展,数据结构的演示软件大多是基于个人计算机环境下供学习者参考学习,即为计算机辅助教学[2]软件,这种方式虽然能够较好地动态、形象地将数据结构算法思想等展示给使用者,但有其不足之处。作为使用者必须有一台个人计算机才能安装使用,不能随身携带供随时参考。随着安卓智能手机的普及,基于安卓手机平台开发数据结构演示软件不仅能够摆脱个人计算机的环境限制,还可以随身携带,随时随地可供参阅,所以开发安卓手机数据结构演示软件还是非常有实用价值的。
1 安卓手机平台简介
1.1 Android布局管理
所谓Android布局就是组件在Activity中的呈现方式,即组件大小、间距和对齐方式等属性的具体表现。Android平台提供了以下,两种创建布局的方式:
在XML配置文件中声明:这种表现方式是将需要呈现在Activity中的各个组件在配置文件中进行定义声明,在Activity程序中通过setContentView(R.layout.main)方法实现将各组件呈现在Activity中,在Activity程序代码中通过findViewById方法获得组件实例。
在Activity具体实现程序中通过“纯代码”的形式直接实例化,将要用到的Android组件添加到所要呈现的Activity布局中。
总的来说,第一种布局创建方式更好,相对来说更加直观、简单。本软件开发过程均是用的第一种创建方式。要使用xml布局文件,大多数是通过使用Android编程提供的oncreate方法并使用setContentView来完成加载所要用到的xml布局文件。在编写代码过程中,findViewById方法要在setContentView方法加载后再调用,否则会出现加载错误,也就是说先加载后使用相关定义的组件。另外需要注意的是,所有定义的布局文件必须放在res/layout目录下才能被调用。
布局(ayout)是各个控件在屏幕上的位置关系,为了满足各种界面呈现方式的需要,Android提供五种布局方式:①FrameLayout(框架布局)又称为帧布局、②LinearLayout(线性布局)、③AbsoluteLayout(绝对布局)、④RelativeLayout(相对布局)、⑤TableLayout(表单布局)。在Android中布局通常有以下几种不同的情况:
①FrameLayout(框架布局):组件从屏幕的左上角坐标布局文件;
②LinearLayout(线性布局):按照垂直或者水平方向布局文件;
③AbsoluteLayout(绝对布局):按照绝对坐标来布局组件;
④RelativeLayout(相对布局):让子视图的位置参考其他视图位置;
⑤TableLayout(表单布局):按照行列方式布局组件[3]。
在Android中View类是一个最基本的UI类,它包括了Button(按钮)、List(列表)、TextView(文本框)、RadioButton(多选按钮)、Checkbox(选择框)等都属于View类。
注:在项目工程里面的每一个Activity类都必须在“项目工程名”/res目录下的AndroidManifest.xml文件添加类的名称,格式为:。
1.2 Android平台基本事件监听与处理
Android的事件处理方式有两种处理机制:基于监听的事件处理和基于回调的事件处理。本应用程序使用的是前者基于监听的事件处理,当用户触碰按钮、某个列表项等相关应用程序组件时,该事件就会触发事件监听器,相应的事件监听器结合自己对应的事件处理器即认为编写的事件处理实例方法来做出相应的动作。
在Android系统编程中,在处理UI中的各种元素的时候,两个程序中的关键环节为:
取得布局文件(XML)中的控件句柄:使用findViewById()获取控件句柄;
设置具体的控件行为:使用setOnXXXListener()设置事件的处理函数。
这里使用findViewById()联系布局文件中控件和句柄,并通过OnClickListener()等定制句柄的行为即开发者所需要该控件被触发后完成的具体动作。
基于事件监听的处理针对不同的事件,Android为不同组件提供了不同的接口。常用到的View类下的几个内部接口有:View.OnClickListener、OnFocusChangeListener、OnTouchListener、OnKeyListener、OnLongClickListener等。SetOnXXXListener()等函数是android.view.View类的函数,这些函数用于事件处理,它们由程序实现,通过设置这些内容也就设置了控件的行为。这些函数的参数都是所对应的android.view.View类中的方法。
1.3 屏幕间的跳转和事件的传递
总的来说,开发一个Android应用程序的过程可以看作是开发一系列Activity类的组合过程。对任意一个Android应用程序而言,每一个屏幕显示的设计与实现其实就是开发一个android.app.Activity类,在需求分析的基础上建立一系列的任务类即完成整个软件所需要的屏幕显示内容。在所有的类当中,选取一个主类作为整个Android软件的初始界面即整个软件程序的入口,这一点有点类似于C语言编程里面的main()函数。一旦进入了初始界面,接下来就是根据该类中设置相关操作以及用户的具体需求触发操作进行不同界面之间的跳转,这里的跳转也就是整个软件里面不同Activity类之间的相互切换。
上述中不同Activity之间的相互切换是靠Intent驱动的,通过在界面上设置事件的监听实现。一个Intent(android.content.Intent)对象是Android操作系统用于满足任务需求以及向系统发送广播Intent事件所使用的异步消息机制,它同适当的Activity或Service(如果需要的话则运行它)协同工作[4]。
正如前面所讲述的:一个Android应用程序一般会包括多个Avtivity,但是只有一个Activity作为程序的入口――但该Android应用程序运行时将会自动启动并执行该Activity,至于应用中的其他Activity,一般是通过入口Activity启动,或者由入口启动的Activity启动[5]。Activity通过两种方式启动其他Activity:
当切换到一个新的屏幕后,先前的屏幕将会被暂停,并被保存在历史堆栈中,也可从现在的屏幕返回到历史堆栈中的前一个屏幕。当前屏幕如果不再使用时,可以从历史堆栈中将它删除。默认情况下,Android将会保留从一开始的主屏幕到每一个应用过程中的运行屏幕。
2 软件的设计与实现
2.1 总体设计图如图2[6-7]
2.2 系统主要功能介绍
2.2.1 单链表
功能主要是链表的相关概念简介,增、删、存储等基本操作的介绍以及实例的演示。
2.2.2 栈和队列
功能包括栈和队列的定义,顺序存数和链式存储的优秀代码实现、实例入栈(队列)、出栈(队列)的动态演示。
2.2.3 二叉树
功能主要包含了二叉树的基本定义以及相关重要性质、各个相关操作的优秀代码二叉树的遍历、最优二叉树的生成过程、哈夫曼树等的实例演示。
2.2.4 图
功能主要包括图的基本概念、图的两种遍历的含义及优秀思想、实例的动态演示。
2.2.5 排序
功能主要是排序算法的介绍、主要排序算法的优秀思想以及主要的代码、相应实例的动态演示。
2.2.6 查找
功能主要是各种查找算法的基本思想以及应用的背景介绍、相应实例的演示。
2.2.7 串
功能主要是相关概念的介绍、匹配模式定理、实例的演示。
2.3 系统整体特点
系统是在Windows XP环境下开发的,运用Eclipse软件和Android模拟器编程实现和测试可行。系统总体上采用层次菜单结构呈现,通过点击按钮或者触摸屏幕实现界面跳转进入到子菜单,逐层具体实现各个模块的设计。系统开始界面是目录形式,每一个标题为一列表名称,点击出现下拉列表,选择要查询的具体模块,进入后,进行查询。每一个模块大致实现了:该模块内容介绍、原理分析、实例展示等三个主要部分。
2.4 系统实现说明
2.4.1 主界面的设计实现
主界面利用Listview组件,列表显示需要三个元素:
① ListVeiw:用来展示列表的View。
②适配器:用来把数据映射到ListView上的中介。
③数据:具体的将被映射的字符串,图片,或者基本组件。
2.4.2 Button组件的应用
1)使用Button控件
Android SDK包含两个在你的布局中可以使用的简单按钮控件:Button(android.widget.Button)和ImageButton(android.widget.ImageButton)。这些控件的功能很相似因此我们几乎可以一并地的讨论它们。这两个控件不相同的地方基本上就是外观上;Button控件有一个文本标签,而ImageButton使用一个可绘制的图像资源来代替。Button使用的一个很好的例子应该是一个简单的带有“保存”文本标签的按钮。ImageButton使用的一个很好的例子可能是音乐播放器按钮的集合,包括播放P, 暂停 以及停止。本次实现用前一种Button控件,这里是一个示例屏幕(图五),包括两个Button控件(上一步和下一步)。
2)向布局添加Button控件
Button控件通常都被作为活动的布局资源文件一部分。比如,要添加一个Button控件到与你程序相关的main.xml布局资源中,你必须编辑布局文件。你可使用Eclipse的布局资源设计器,或者直接编辑XML。像按钮这样的控件也可以通过程序动态地创建并在运行时添加到你的屏幕上。简单地通过它的类来创建合适的控件并将它添加到你的活动中的布局。要添加一个Button控件到布局资源文件,打开/res/layout/main.xml布局文件,它是你的Android项目的一部分。点击你想要为其添加Button控件的LinearLayout (或者父级布局控件,比如RelativeLayout或FrameLayout)。在Eclipse中,你可以点击Outline标签中的父级布局,然后使用绿色加号按钮添加一个新的控件。选择你要添加的控件――在这个例子中是Button控件。
3)处理点击
实现点击事件处理的方法是使用setOnClickListener()方法向你的按钮控件注册一个新的View.OnClickListener。要使用这个方法,你必须更新你的活动类以注册控件点击事件。通常情况下通过你的活动的onCreate()方法来实现。使用findViewById()方法找到控件然后使用它的setOnClickListener()方法来定义当它被点击时的行为。你将需要自己去实现界面的onClick()方法。
2.4.3 TextView显示文本控件
1)TextView常用属性
setText()设置文本内容,同xml中的android:text
setTextSize()设置文本字体大小,同xml中的android:textSize
setTextColor()设置文本颜色,同xml中的android:textColor
setBackgroundColor()设置背景颜色,同xml中的android:background
2)单击TextView实现活动跳转
①从相应的布局管理资源获得相应TextView组件的Id;
②在需要跳转的活动里面写点击事件,主要用到了TextView的字符串setSpan()函数和setText(spannableString)以及setMovementMethod()函数;
③在需要跳转的活动里面声明需要触发的Intent意图即跳转活动到目的活动,具体实例可参考图四到图五的实现效果。
2.5 总体框架的实现效果
2.5.1 菜单列表
考虑到Android手机的实际应用背景,主界面采用菜单列表式的方式呈现。主界面的部分截图如图3所示。
2.5.2 下拉列表项
每个菜单列表名称是一个下拉列表项,当点击该名称时会出现相应列表项里面的内容。以第七章图为例,点击后列表展开如图4所示。
2.5.3 界面切换
触摸每一个列表项里的选择项,会跳转到相应的活动界面。以点击第一图的深度优先遍历为例,会出现图5所示界面。
单击上一步或下一步,会出现相应以邻接表存储图的遍历步骤演示,点击上面的“点击查看优秀思想”会出现相应演示模块的原理或者概念性文字说明。
3 结论
本文的演示软件针对数据结构主要的算法给与了简要说明与实例演示,内容还不够具体、详细,每一部分具体的实现过程有待于细致推敲、修改完善,特别是对算法优秀代码的解析说明功能,做到尽可能的满足用户的需要。如何将抽象的数据结构算法思想形象生动的在Android平台展示,来帮助需求者的学习是一个值得研究的问题,希望本文的引入,给数据结构算法演示软件的多媒体实现带来一些新的思路。
【摘要】主要介绍基于安卓系统手机WiFi的家用智能遥控器客户端的开发。通过在安卓手机上开发遥控器界面,并载入多个不同品牌不同型号设备的遥控器指令数据包,借助WiFi转红外模块译码成与家电相匹配的红外信号,使实物遥控设备数据化,实现“一个家庭只需一个遥控器”的目标,为人们提供一个智能舒适、环保节能的居家环境。
【关键词】安卓系统;WiFi;红外遥控
一、引言
由于红外遥控器价格低廉、技术成熟等优点,许多智能家电设备仍普遍采用红外遥控器进行控制,包括电视、空调、DVD机、电视机顶盒等等。然而,随着家庭中智能家电设备的增多,红外遥控器数量也在增加,一个家庭使用的遥控器数量少则数个,多则十几个,这会带来三大问题:
(1)数量众多的遥控器给使用者带来使用和管理上的不便;
(2)红外遥控器使用的一次性碱性电池,废弃后给环境带来极大的危害;
(3)遥控器意外损坏后,很难找到匹配的遥控器。
基于安卓手机WiFi的家用智能遥控器,可同时控制多个不同品牌不同型号的家用电器,取代传统的实物遥控器,实现“一个家庭只需一个遥控器即可控制所有红外遥控的家电设备”的目标,极大减少遥控器数量和一次性电池的使用量,为人们创造便捷舒适、环保节能的居家环境。
二、系统的结构
整个系统主要包括客户端软件、WiFi转红外模块,如图1所示。客户端软件通过WiFi,将已编码的数据通过WiFi传送至WiFi转红外模块,然后WiFi转红外模块根据编码规则,传递指令至内部红外发射模块,实现红外数据的发送。
(一)家用智能遥控器客户端的构成
1.键码数据包的采集与设计
(1)键码数据包的采集
红外遥控器的编码格式通常有NEC。
NEC格式的特征:使用38kHz载波频率,引导码间隔是9ms+4.5ms,使用16位客户代码,使用8位数据代码和8位取反的数据代码。
随着家庭电器种类、型号的不断增多,相对应的遥控器也随之增加,为了便于管理、存取与更新家电遥控器的红外代码,需要为繁多冗杂的代码建立一个数据包。
(2)遥控器按键数据包的设计
由于红外协议各不相同,并且又相互不兼容,所以直接发送红外数据会导致WiFI转红外模块处理十分繁琐。因此,收集多种红外协议数据,按照自定义编码规则,将多种协议编码化,并保存于后台数据库。
为了实现按键界面与遥控器数据包的匹配,定义数据包格式如下:
文件起始标志位4位。
键码属性128位:设备的信息,访问中文字库编码、ASCII码。
载波频率4位:35-42kHz;分辨率0.5kHz,以适应不同载波的遥控器。
键码编码:对遥控器界面软件的所有按键进行编码,键码位数根据实际红外协议确定。
2.遥控器界面软件的设计
(1)数据库设计
安卓操作系统采用标准SQLite数据库,提供管理数据库相关的API。利用SQLiteOpen Helper类中的onCreate()Call Back方法以及onUpdate()Call Back方法创建与打开各种遥控器红外代码表Table,存进数据库中,方便数据的及时更新。
(2)按键与数据包匹配
在手机界面中,每个按键都与其相对应的红外代码相匹配,即按键功能与数据库中各种遥控器数据相连接。通过调用getReadable Database()方法当用户按下按键时,软件会查找数据包,将与该按键相连的数据包数据,即相对应的控制家电的红外代码以WiFi的形式发送至WiFi转红外模块。
(二)WiFi转红外模块
本模块负责数据接收、红外发射。包含WiFi数据接收与传送、串口数据解析、红外电平发射。采用WiFi芯片USR-WIFI232,提供WiFi信号及获得客户端所发送数据,再将数据通过串口传送至中控CPU。
本模块内部采用单片机作为中控CPU,处理编码化数据与红外协议的转化。由于单片机价格低廉,资源足够,功能满足中控CPU的需求,因此,采用单片机作为中控CPU。在单片机程序中设置多个红外协议入口点,当编码化的数据传送至单片机后,按照自定义的编码规则,寻找对应的红外协议入口,从而发射对应的红外电平。
中控CPU功能硬件电路由单片机最小系统及红外发射电路成。在中控CPU程序中,包含定时器功能、串口数据读取功能、红外电平控制功能。中控CPU的程序流程图如图3。定时器功能主要是用于产生载波,并与红外信号叠加,从而提高红外信号在空气中传播的抗干扰能力。串口数据读取,将WiFi芯片传递的数据加以分析,按照自定义的编码规则,进入不同的红外协议功能函数。红外电平控制功能,实现具体的红外协议函数,通过串
口读取功能提供的数据,发射出匹配的红外信号。
三、实验测试
本次试验采用专用的红外测试仪器,可以监测到红外信号并将其波形显示出来。采用安装客户端的安卓手机及WiFi转红外模块,对比于实物遥控器。将实物遥控器、WiFi转红外模块都对准红外测试仪器。按下实物遥控器的某个按键之后,观察红外测试仪器显示的波形,如图3所示;接着按下安卓手机上对应的遥控器按键后,观察红外测试仪器上的波形,如图4所示。
由图3、图4可以看得出,安装客户端的安卓手机及WiFi转红外模块可以实现实物遥控器的功能。
四、结束语
本项目设计的运行在安卓手机上的新型遥控器,实测数据证明,其实现的功能与原配的实物遥控器性能一致,完全可以取代现有的各种实物遥控器,实现实物遥控设备数据化,降低成本。由于它基于安卓手机平台,具有成本低、扩展好、“一机多控”、环保、智能等优点,作品成熟后,具有较高的市场应有价值。