庄梓佳,李卫华(广东工业大学计算机学院,广州 510006)
基于语音与LBS的活动查看与发布应用设计
庄梓佳,李卫华
(广东工业大学计算机学院,广州510006)
当前,如何将移动互联网技术更好的与生活实际相结合,已经是各大互联网巨头们挖空心思钻研的方向。随着各种团购、旅游、打车及外卖等多个嵌入LBS技术的应用的推出,以及各种基于LBS的O2O模式的崛起,也让人们嗅到了互联网技术的一个未来的方向。LBS将会是未来互联网技术融入与研究的一个大方向,如何将LBS结合生活所需应用到日常生活中,已经是一个毋庸置疑的研究重点。人们迫切需要一个能用于发布与了解周边活动信息的平台,以便了解周边信息与活动,更好地融入到周边的生活中来。
本系统是建立在目前市场上比较普及的Android系统上,基于百度LBS并结合在线云语音技术,实现了周边活动的发布与查看。在该客户端开发中,不仅实现了查看热门与最新的活动,发布个人的活动信息,还具有定位及查看对应城市或指定地理位置周边的活动的功能,同时接入了在线云语音技术,实现了活动发布时的语音转文字输入和活动查看时的语音播放,方便了用户的操作。另外,该系统还实现了在线聊天的功能。用户可以查看对方信息进行关注并发起在线聊天等,方便了用户的社交交流。
该系统是基于LBS与语音的活动发布与查看的Android应用。作为一个基础LBS应用的需求,首先是要能够满足基本的按位置为用户提供信息服务需求,同时结合语音技术提高使用便捷性的需求,其次是满足基本的社交应用需求等,对应的基本需求模块点如下:
(1)LBS地理信息模块。LBS地理信息模块是本应用的最基础功能,该软件的主要服务都是基于地理信息模块的功能之上。地理信息模块提供用户的城市街道定位,以及发布和查看活动时经纬度的获取,并提供可视化地图的显示,方便用户查看了解具体的地理位置。
(2)语音识别技术模块。语音识别技术模块,也是本系统的一个基本功能模块。该模块提供在线云语音转换的技术,实现了语音转文字和文字转语音的功能。其中,语音转文字便是在用户输入时,直接调用本地的话筒接口采集用户的录音,并上传到服务器匹配转换为文字,方便了用户的信息输入。而文字转语音则是通过在线将文字内容转换为语音播放出来,同时实现了语音播放状态的控制。
(3)信息发布查看模块。信息发布查看是客户端对用户数据的采集和展示。该模块是基于地理信息模块和语音技术转换模块之上,在用户发布信息的时候,对LBS地理信息模块进行调用,获取相应的位置信息,同时还可以调用语音技术转换模块,通过语音来输入来提高输入的便捷性,然后将采集到图片和文字等信息,上传到服务器。而在用户查看信息的时候,是将从服务器获取到的JSON数据,以一定的格式解析后,展示出活动的基本信息到界面上来,同时,对于不方便直接查看的用户,也可直接点击声音播放让系统将内容读出来。查看详情时,也具有评论和查了评论情况的功能。
(4)个人信息模块。个人信息模块提供个人信息的展示和维护界面,以及参加和举办过的活动信息列表等,同时还有关注和粉丝列表查看功能,以及在线聊天接入入口等。
(5)活动收藏模块。活动收藏模块,提供个人活动收藏记录查看,实现将收藏的活动信息本地化保存,并在线自动更新等功能。其中,收藏的记录提供查看全部和分类查看的界面选择,提高了用户的信息查看效率等。
(6)消息提醒模块。消息提醒模块是基于个人信息模块之上,提供了在线消息推送提醒以及在线聊天的功能。使得用户能够通过活动这个介质达到互相认识聊天,了解到更多信息的社交服务功能。
(7)简单易用的交互设计与统一的界面UI风格。一个软件应用不仅要有完善的功能界面,还应该要用良好的交互以及一致的界面UI,这样才能够给用户留下良好的体验和印象。
在程序设计分析的基础上,结合实际情况,得出本程序的功能模块结构图,其中包括了系统设计时的总体功能概括,也包含了相关功能间的联系。该系统的功能模块图如图1所示。
基于以上功能模块需求,可得出系统设计的数据传输流图如图2所示。
图2 数据传输流图
图1 系统的功能模块图
在该系统中,客户端是用户使用操作的主要对象,主要的关注点是UI、交互设计与适应移动设备的性能限制。除了要简洁易用的界面之外,对于系统的响应也存在着严格的要求,并且主要为服务器收集数据和服务器打交道。该系统的整个移动客户端的分层架构图如图3所示。
图3 客户端分层架构图
根据MVC的分层设计,系统由下自上按层分包。类分层主要有如下设计实现:
(1)Bean层:此实体类层与服务端实体类相似,都是一些定义的简单对象,有用于与服务端交互的数据对象(大多数与服务端实体类一致,便于数据传输的解析),也有用户保存信息的数据对象,还有一些用于适配显示的简单类。
(2)SQLite层:本地数据存储的数据库层。
(3)Shared层:本地数据存储的SharedPreferences形式保存。
(4)Service层:逻辑功能与数据源交互的数据层。
(5)Adapter层:适配器层,主要负责UI和数据之间的适配工作。
(6)Application层:应用管理及初始化一些需要公用的数据。
(7)Activity和Fragment层:主要负责和用户交互界面的逻辑响应。
(8)Utils层:提供公用的工具类。
(9)View层:界面使用的自定义显示控件。
(10)zTest层:为界面显示提供测试数据。类分层设计的代码分包实现如图4所示。
图4 类分层结构图
整个交互流程主要通过HTTP协议进行交互,数据交互的网络对接方式主要封装在 Util包中的HttpUtil类中。
(1)客户端发送文字请求到服务器,主要是将对应参数传到对应的Service层,Service层将参数和对应地址组合成相应url字段,然后调用HttpUtil中的doPost方法,通过实例化Android系统自动的HttpClitent类来将对应请求与参数发送至服务器端。
(2)客户端上传图片资源,通过调用HttpUtil中的uploadFile方法,将图片资源的本地路径传入,再通过获取HttpURLConnection连接,将图片以字节流的方式输出到服务器端。图片资源在每上传成功一份后,会获取到后台服务器返回的PictureBean,该Bean标记了上传的结果,包括状态和服务器保存的路径名。
PictureBean的实现如下:
(3)客户端获取服务端的数据,主要是获取以JSON字符串格式的数据。后台服务器通过将对应的数据封装成JSON字符串,再封装到一层自定义的GsonBean中后发送给客户端。客户端接收到服务器端的数据后,将JSON字符串传送给对应的Service层。Service通过Gson解析将获取到的 JSON字符串解析成对应的GsonBean实例,然后返回给对应的逻辑控制层。
GsonBean的类实现如图5所示。
图5 GsonBean的类实现
其中state标记对应的后台操作状态,strJson存放数据的JSON字符串。
其获取服务器数据的交互流程图如图6所示。
图6 获取服务器数据的交互流程图
(4)客户端获取服务器端的图片资源,由于Android系统对于应用性能的限定,所以采用universalimage-loader开源框架来实现。通过将服务器的图片加载到本地,通过各种缓存cache,避免系统出现OOM的异常,使得内存的控制和图片加载更加智能。该架构使用的三级缓存的方式,对应的图片加载显示流程如图7所示。
图7 图片缓存的流程图
该模块主要是基于BaiduLBS的SDK以及相应的库来实现基本的定位功能以及地图显示。
调用百度LBS的API,需要在百度开发者官网申请应用使用LBS权限的key,然后将该key保存到应用代码中以供验证使用。无论是百度LBS还是语音功能,都需使用到该数据key。
而这key的数据,主要定义在AndroidManifest.xml配置文件中,并会在程序初始化时便将数据加载到内存并保持在BaiduKeyUtil工具类中以供使用。
(1)在使用百度LBS定位功能时,通过初始化LocationClient类并配置相应的定位参数数据,便可在设置的相应的定位回调接口中获取到定位后的数据。百度LBS位置定位的定位流程如下。
(2)地图的可视化界面主要是实现在MapLoaction Actvity中,通过在Intent中传入相应的经纬度信息,即可在该界面的MapView中显示出对应的位置信息。也可自动定位当前所在而显示所在位置在地图上的信息。百度地图LBS显示地图信息的控制流程如图8所示。
图8 百度LBS位置定位的定位流程
本模块主要基于百度的在线语音转换技术,通过调用百度提供的语音转换SDK包以及libBDTTSDecoder_V1.so库实现了在线文字转语音播放。同时通过调用VoiceRecognition.jar包和libBDVoiceRecognition-Client_MFE_V1.so实现了在线语音识别转文字。
图9 百度地图显示地图信息控制流程图
(1)文字转语音播放功能。通过自身设计切图及代码实现的一个悬浮播放按钮来显示语音的状态,包括加载、播放中、暂停中等状态,以及单机切换状态,双击取消播放等事件的处理。每个状态都有对应的显示处理。文字转语音的播放逻辑,则需实例化对应的SpeechSynthesizer对象,通过这个对象控制相应的逻辑即可。文字在线转语音播放功能的控制逻辑流程图如图10所示。
图10 文字转语音控制逻辑流程图
(2)语音识别功能。语音识别通过设置相应的参数并实例化一个BaiduASRDigitalDialog来显示语音录入界面。控制该界面的代码主要封装在DialogUtil工具类中。语音识别的控制流程如图11。
通过编码实现,以下是部分主要界面运行的效果如图12、13所示。
随着地理信息的丰富和基础设备的发展以及移动互联网的日益强盛,LBS应用已经成为生活中必不可少的一部分。同时,语音转换技术的需求也日渐提高,结合语音转换技术嵌入在应用客户端中已经形成很多基础软件的共识。
本文给出了基于语音与LBS的活动发布与查看应用设计,目前项目基本完成,但是有许多地方还可继续改善提升。例如在LBS应用实现方面,可以为用户提供相关的导航服务,以及区域定点互动游戏等,这些都会在后续进行完善。
图11 语音识别的控制流程图
图12 主界面活动查看效果图
图13 活动发布时的语音转文字输入及地图地址选择
[1]李刚.疯狂Android讲义(第二版)[M].程序语言与软件开发.电子工业出版社,2013,
[2]吴勇毅.语音技术改变人们移动生态[J].CAD/CAM与制造业信息化,2014(5):14-15.DOI:10.3969/j.issn.1671-8186.2014.05.027.
[3]咨询部.国内语音识别领域专利技术发展趋势[J].电子知识产权,2003(9):46-49.DOI:10.3969/j.issn.1004-9517.2003.09.015.
[4]张艾萍.语音识别技术在计算机辅助语言学习中的应用综述[J].消费电子,2014(12):117-118.DOI:10.3969/j.issn.S1674-7712.2014.12.107.
[5]詹新明,黄南山,杨灿.语音识别技术研究进展[J].现代计算机,2008(09).
[6]百度百科.百度语音.http://baike.baidu.com/view/1121864.htm.
[7]百度百科.百度地图API(EB/OL).http://baike.baidu.com/view/3521171.htm,2014-1-8
[8]黄玮.基于Android平台LBS的社交网络平台[D].电子科技大学,2014.
[9]Bruce Eckel.Thinking in Java[M].Upper Saddle River,New Jersey,USA:Prentice Hall,2006.
Speech Recognition;LBS
Design of Activity View and Publish Application Based on Speech and LBS
ZHUANG Zi-jia,LI Wei-hua
(School of Computer,Guangdong University of Technology,Guangzhou 510006)
1007-1423(2015)24-0070-07
10.3969/j.issn.1007-1423.2015.24.017
庄梓佳(1992-),男,广东揭阳人,本科,研究方向为Android应用开发
2015-05-13
2015-08-18
随着语音识别与地理信息技术的发展,人们迫切需要一个能用于发布与了解周边活动信息的平台,以便更好地融入到周边的生活中来。结合百度LBS与百度语音技术,实现一个用于发布个人和商业活动的信息平台,使得人们周边的社交信息得到有效的传播,群体活动得到更多的认可与参与,以此提高丰富人们的业余生活活动。
语音识别;LBS
大学生创新训练项目
李卫华(1957-),女,广东梅州人,博士研究生,教授,研究方向为智能软件
With the development of the speech recognition and GIS technology,people need a platform which can be used to publish and understand the information of the surrounding activities,so as to better integrate into the life of the surrounding.Combination of Baidu LBS and speech technology,realizes a for publishing information platform for personal and business activities,the people surrounding the social information for effective communication,group activities get more recognition and participation,in order to improve enrich people's leisure life activities.