邓子卿 张永
【摘要】随着互联网行业的迅猛发展以及4G网络的普及,导航软件层出不穷。但传统导航在面对建筑密集的校园时,存在着基础地理信息数据不够精确的问题,为了解决这个问题,本项目设计了一款基于百度地图API的校园游览应用,并且结合了最热门的短视频社交功能。应用实践表明:参观昌航能够为学生用户提供更精确的校园导航服务和更具针对性的校园社交服务。项目主要包含三大功能模块:分别为校园导航模块,短视频模块,以及视频剪辑模块。校园导航模块主要通过调用百度地图API,对原有地图二次开发。短视频模块包括滑动播放视频的功能,视频剪辑模块偏重于针对视频的编辑,压缩,存储等一系列功能。服务器端采用SpringBoot框架开发,使用MySQL数据库进行数据存储。
【关键词】百度地图APISpringBoot框架 视频编辑
一、功能设计
(一)校园导航模块
校园导航功能包含校园地图引导,定位,全景图功能。用户可以看到一张标注了校园主要地点的地图。用户点击标记,可以观看标记所在地点的全景图。地图上标注了校园的最佳游览路线,可供用户游览时参考。
(二)短视频模块
用户可以在短视频界面观看其他用户分享上传的短视频。短视频采用上下滑动播放的方式。滑动到下一个视频,自动开始播放,并暂停上一个视频。
(三)视频剪辑模块
校园社交功能包括短视频的播放,拍摄,上传,剪辑以及滤镜功能。用户可以在参观昌航平台上看到所有用户发布的短视频,也可以自己拍摄短视频分享给大家。拍摄完成后,可对自己拍摄的视频,进行剪辑并添加各种各样的滤镜。
(四)用户信息管理模块
包含账户的登陆验证,注册,以及用户之间的点赞关注功能。用户可以在用户资料界面看到自己以及其他用户上传的作品和点赞过的作品的预览图。
二、系统核心功能实现
(一)用户管理
1.登陆验证
登陆有手机验证码和密码登陆两种方式。验证码通过调用阿里云的短信验证码API进行验证。一次登陆后,手机号会存入SharedPreferences中,下次打开软件会从SharedPreferences中读取账号密码自动登陆。
2.用户注册
用户输入基本信息,在客户端判断数据是否合法。若合法则通过Gson框架将信息封装成Json字符串,通过Okhttp框架传输到服务器,判断手机号是否重复注册,若重复注册,返回注册失败,若未重复,返回登陆成功。
(二)互动社交
1.点赞与关注
点赞与关注包括用户之间和用户与作品之间的关系。在数据库里,通过attention表储存用户之间的关注关系,通过LikeVideo表存储用户与短视频作品之间的点赞关系。客户端点赞和关注的行为,都会将用户id与作品id或作品的作者id传入服务器,并存储进数据库。在用户获取视频时,服务器会根据点赞关系表和关注关系表,将视频的是否以及点赞和是否以及关注的标识一同发过去,客户端根据标识来确定控件初始的状态。
2.作品查看
用户可以在“我的”界面查看自己发布的作品,以及点赞过的作品,在短视频界面点击用户头像,客户端会将用户id发送至服务器,服务器根据用户id,将用户发布的作品以及点赞的作品的video对象返回。在video对象中存储了作品的封面预览图地址,将地址载入glide中,在用户界面显示作品预览图。
(三)视频剪辑
通过调用手机摄像头拍摄短视频,按下按钮开始拍摄,抬起手指结束。视频剪辑使用MetadataRetriever框架将每隔一段时间的视频图片获取,通过Recycleview(显示视频的提取图片)配合glide(加载图片)和自定义view Rankbar (用于制定需要截取的视频),显示剪辑界面。用户通过滑动滑块确定需要剪辑视频在拿两个图片中间,系统获得两张图片对应的时间点,使用开源的RxFFmpeg框架对视频进行剪辑。对剪辑后的视频,调用Android MediaCodec API实现滤镜功能。
(四)短视频播放
在Recycleview控件中嵌套 StandardGSYVideoPlayer控件。首次进入界面,客户端会向服务器请求五个视频信息,保存在List中,并加入Recycleview适配器的数据源中。播放器中加载首个视频,并监听滑动事件,用户滑动视频后,将会释放上一个视频播放器的资源,保证视频播放流畅,并生成新的播放器控件加载视频。当监听到下滑剩余视频低于两个时,将会再次向服务器请求视频数据,并更新适配器数据源。由于Android内置的Videoview不带邊缓冲边播放的功能,在用户刷视频时,每刷一个视频需要等待视频完全加载,才能开始播放,每个视频都要等待两至三秒,对于视频文件较大,等待时间更长。因此使用StandardGSYVideoPlayer播放器,底层通过VideoCache实现边缓存边播放,极大改善了用户体验。
(五)校园导航
目前百度等位置服务提供者主要致力于城市级别的位置服务,要实现校园内部详细信息的展示,需要在百度地图的基础上通过添加自定义图层,完善地图信息,以弥补百度地图在小区域内地理信息不足的缺陷。使用ArcGIS图形处理软件制作完成校园的矢量地 形图和瓦片地图,使用本地加载的方式将瓦片图层添加在百度底图之上。首先实现FileTileProvider抽象类来加载瓦片图资源,并通过 TileOverlayOptions类设置,然后使用addTileLayer方法将 TileOverlayOptions 对象添加至百度底图之上。
三、小结
参观昌航在传统地图导航的基础上,通过调用百度地图API,设计了一个更具校园特色的导航。并且结合最新最热的短视频社交,搭建了一个集校园游览和校园社交为一体的app。致力于为学生用户群体,提供更精准的校园导航服务,与更高效的校园社交服务。但系统还存在着一些不足,需要进一步完善,例如,短视频暂时没有评论功能,视频剪辑部分没有丰富特效以及美颜功能。
基金项目:课题资助:南昌航空大学创新创业教育课程培育项目《C语言程序设计》;南昌航空大学校级教改课题《C语言程序设计》课程融入思政元素的探索与实践。课题资助:南昌航空大学第14届“三小”课题。