基于 iOS的车载视频客户端软件开发_第1页
基于 iOS的车载视频客户端软件开发_第2页
基于 iOS的车载视频客户端软件开发_第3页
基于 iOS的车载视频客户端软件开发_第4页
基于 iOS的车载视频客户端软件开发_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业论文(设计) 题 目 基于 iOS的车载视频客户端软件开发 学生姓名 刘昌云 学 号 20121336005 学 院 信息与控制学院专 业 自动化 指导教师 吴毅二一 六 年 五 月 十五 日目 录1.引言51.1研究背景及目的51.2 国内外iOS系统开发现状51.3 本文主要工作52.产品概述62.1需求分析62.2产品目标63.开发软件介绍及基本原理73.1开发环境73.2开发技术简介73.2.1 Xcod简介73.2.2Objectvie-C语言简介73.2.3UI设计简介94.产品设计和调试104.1产品总体设计104.2产品功能设计124.2.1首页界面模块设计144.2.2行车视频记录模块设计164.2.3行车地图导航模块设计214.2.4登录注册模块设计225.总结24参考文献24致谢26附录27基于iOS的车载视频客户端软件开发刘昌云南京信息工程大学信息与控制学院 ,江苏南京,210044摘要:随着车辆增多以及一些行车过程中的事故以及纠纷的出现,车载视频客户端软件的软件的需求以极快的速度增长,甚至一些手机厂商也涌入这个市场以抢占先机。同样,在世界以及中国范围内,苹果手机的用户的占有比重也很大。设计并开发以苹果智能终端为载体,搭载基于iOS的车载视频的软件就是一个很好的结合体,使用了客户已有的智能终端就是解决了硬件购买硬件的成本,而且这样的一款产品能够给苹果客户带来学习成本为零的使用体验。安装具有功能多样且强大,对用户友好,使用快捷方便的客户端软件就拥有很好的前景,也可以在这个新兴且充满竞争的行业里抢占先机,并且用高质量的产品来获得相应的非常可观的利润 。车载视频终端已成为人们生活中必不可少的一部分,设计一款基于iOS 的车载视频客户端有一定的现实意义和应用价值。本设计的目标是掌握手机软件开发中运用的 iOS 系统的常用Objective -C语法、UI界面搭建,掌握 iOS 开发架构、视 图与视图控制器、触屏事件处理以及界面控件的用法。通过本项目的设计和开发,实现车载视频软件的首页界面,登录、注册界面,行车记录,地图导航等功能的实现。 关键词:iOS,Objective -C,UI设计iOS-based car video client software developmentChangyun LiuSchool of Information and Control,NUIST,Nanjing,210044Abstract:With the increase in vehicle traffic as well as some accidents in the process as well as disputes arise, the demand for in-car video software client software at breakneck pace, and even some mobile phone manufacturers into the market in order to seize the opportunity. Similarly, in the world as well as the scope of China, occupies a proportion of Apples mobile phone users is also great. Design and development of intelligent terminals with Apple as a carrier vehicle equipped with iOS video-based software is a good combination, existing customers use intelligent terminal is to solve the hardware cost of the hardware purchase, and such a product can Apple customers to cost zero learning experience. Installation has versatile and powerful, user-friendly, quick and easy to use client software to have good prospects, but also can seize the opportunity in this emerging and competitive industry, and with high-quality products to obtain the corresponding very handsome profit. Car video terminals have become an indispensable part of peoples lives, to design a car-based iOS video client has some practical significance and application value. The design goal is to master the use of the mobile phone software development system iOS common Objective -C grammar, UI interface structures, master iOS development framework, view and view controller, touch screen interface event processing and usage control. Through the design and development of this project, to achieve the realization of Home car video software interface, login, registration interface, driving record, map navigation and other functions.Key words: iOS; Objective C; UI design1.引言1.1研究背景及目的随着车辆增多以及一些行车过程中的事故以及纠纷的出现,车载视频客户端软件的软件的需求以极快的速度增长,甚至一些手机厂商也涌入这个市场以抢占先机。同样,在世界以及中国范围内,苹果手机的用户的占有比重也很大。设计并开发以苹果智能终端为载体,搭载基于iOS的车载视频的软件就是一个很好的结合体,使用了客户已有的智能终端就是解决了硬件购买硬件的成本,而且这样的一款产品能够给苹果客户带来学习成本为零的使用体验。安装具有功能多样且强大,对用户友好,使用快捷方便的客户端软件就拥有很好的前景,也可以在这个新兴且充满竞争的行业里抢占先机,并且用高质量的产品来获得相应的非常可观的利润 。车载视频终端已成为人们生活中必不可少的一部分,设计一款基于iOS 的车载视频客户端有一定的现实意义和应用价值。所以本文选择基于iOS的车载视频客户端开发这一课题。1.2 国内外iOS系统开发现状在全世界的电子产品都走向智能的大背景下,我们的身边有很多的智能终端,手机就是其中之一,智能手机铺天盖地而来,各大厂商的都纷纷推出自己的智能手机,近年来,国产的智能手机也是在享誉国内外。智能终端中的智能手机只是一个开端,再下来的趋势中,就是苹果公司的iOS手机操作系统引领世界走向智能的大时代。我们知道的现在非常火的手机操作系统就是iOS和Android。iOS比较高端,Android较为草根。iOS操作系统的手机还是Android操作系统的手机,大家都接触过,苹果iOS操作系统的手机有着很高的硬件配置,和海量的应用,这是很多用户的非常重要的选择,这就是为啥当下的iOS操作系统的手机很流行的原因。(1)iOS手机系统和手机的硬件的整合很高,这使得他们的分化度很大程度的降低,这就很强于Android。Android是开源的,免费的,很多手机厂商自己打造自己的Android手机操作系统,这会使得分辨率与手机系统分裂,带给开发者很大的烦恼,也会造成开发成本的加大,使得很多Android的开发工程师转向iOS的开发。(2)华丽的界面。苹果手机得界面做的是很好的,苹果者手机界面的设计二和开发中花费了很多的精力,从它的外表外表到内在,iOS都有很高的用户体验。(3)数据的安全性。我们每个人都有隐私和秘密,苹果的iOS系统有着很强的安全性。用户的个人隐私不会被泄露!(4)众多的应用。Appstore有很多的手机应用可以给用户来下载,而且开发者可以通过开发软件来让用户付费使用,让用户体验了很多,也让开发者赚到钱。1.3 本文主要工作本车载视频客户端软件要实现以下的几项基础的功能:一、首页:(1)主要是获取了当前所在的城市天气,若定位失败会默认城市为南京(论文答辩所在地),另外,模拟器是无法定位的,因为需要真机测试,之所以有天气数据,是因为有了默认城市送的是南京(2)列表展示了道路交通新闻和历史上的今天,分两个区展示。道路交通新闻点击cell可跳转网页查看新闻具体内容。二、行车记录:主要由四个功能模块组成:(1)行车记录:原理是采用系统的摄像头录像,行车时将手机固定即可。涉及到的所有视频录制均可采用才功能。录制的内容可在手机相册中查看到 。(2)声音记录:音频录制节目,可录下声音等作为证据,录下后会自动播放一遍声音的,此处也可自己注释掉。此处代码相当于展示了如何播放音频文件(3)拍照留证:调用系统的照相机拍下车祸等摩擦的现场图片等。(4)SOS灯光:主要是调用了系统的闪光灯,可常亮可模拟SOS求救信号,防止发生意外时无法呼救或呼救不起效果,毕竟光速大于声速。(5)本地音频、视频文件的播放,使得车载视频客户端软件兼具播放器的功能和影音娱乐的功能。三、地图导航:主要是百度地图的调配使用,实现的功能主要有选择显示卫星地图或是标准平面地图(导航条右按钮控制);当前定位城市的道路交通状况,(地图右下的“路”字按钮);由于定位有一定的误差,导航的启点可能跟当前定位的位置有一两百米的误差,此处可提出作为后期的优化之处。四、个人中心:主要是登录/注册功能的实现。一般的注册需要用到手机号码获取验证码,该功能需要收费,此项目可以作为后期的改进之处。登陆成功之后会进入个人中心界面,用户可修改自己的头像,拍照或者从相册选取均可。还可以查询违章和号码归属地等信息。2.产品概述设计并开发以苹果智能终端为载体,搭载基于iOS的车载视频的软件就是一个很好的结合体,使用了客户已有的智能终端就是解决了硬件购买硬件的成本,而且这样的一款产品能够给苹果客户带来学习成本为零的使用体验。通过本项目的设计和开发,实现车载视频软件的首页界面,登录、注册界面,行车视频、音频的记录,拍照记录,地图导航等功能的实现。2.1需求分析随着车辆增多以及一些行车过程中的事故以及纠纷的出现,车载视频客户端软件的软件的需求以极快的速度增长,甚至一些手机厂商也涌入这个市场以抢占先机。同样,在世界以及中国范围内,苹果手机的用户的占有比重也很大。设计并开发以苹果智能终端为载体,搭载基于iOS的车载视频的软件就是一个很好的结合体,使用了客户已有的智能终端就是解决了硬件购买硬件的成本,而且这样的一款产品能够给苹果客户带来学习成本为零的使用体验。安装具有功能多样且强大,对用户友好,使用快捷方便的客户端软件就拥有很好的前景,也可以在这个新兴且充满竞争的行业里抢占先机,并且用高质量的产品来获得相应的非常可观的利润 。2.2产品目标本软件设计时有以下的目标:(1)首页的设计。进入首页后可以查看天气,路况等信息,点击头标题可以联网进入网页浏览。(2)实现行车视频,音频,照片的记录,本地音频和视频的播放(3)使用开源的百度地图,实现软件的车辆的导航功能(4)登录/注册界面,用户可以注册账号,可以用注册的账号登录(5)界面设计友好,用户体验评价良好(6)软件运行稳定,安全,高效(7)程序编写风格良好,车载视频客户端后期的维护简单、易操作3.开发软件介绍及基本原理3.1开发环境在开发此款软件的过程中需要以下软件环境的支持:服务器端: 操作系统:Mac OS X EI Caption 10.11.3开发软件:Xcode7.2及以上版本客户端:操作系统:iOS 8 及以上版本分辨率:iPhone 6 :1334750分辨率 iPhone 6 Plus 19201080分辨率 iPhone 6s 1334x750 分辨率屏幕尺寸:iPhone 6 /iPhone 6s:375667 iPhone 6 Plus:414736 3.2开发技术简介3.2.1 Xcod简介Xcode是iOS软件开发者的主要开发工具。Xcode支持很多语言的开发,比如有C语言、C+、Fortran、Objective-C、Objective-C+、Java、AppleScript、Python、Ruby和Swift,还提供Cocoa、Carbon以及Java等语言的编程模式。Xcode的版本7及以后的版本里面提供了开发者需要创建的手机(iPhone),平板(iPad), 电脑(Mac), 智能手表(Apple Watch), 智能电视(Apple TV)等应用开发的环境。3.2.2Objectvie-C语言简介Objective-C是一种使用广泛的、高级的、面向对象的程序编写语言,具有封装、继承、多态的特性。Objective-C的商标权属于苹果公司,苹果公司也是这个编程语言的主要开发者。OS X和iOS继承了苹果在开发NeXTSTEP操作系统时的OC语言。现在Objective-C与Swift是OS X和iOS操作系统、及与其相关的API、Cocoa和Cocoa Touch的主要编程语言。Objective-C是C语言的严格超集就是任何C语言的程序不用任何改动就可以在Objective-C编译器上运行,所以在Objective-C语言的编程中使用C语言编程也是可以的。Objective-C语言就是在C语言编程的主体上加上了面向对象程序设计的特性。Objective-C语言的面向对象程序设计的语法来自于Smalltalk消息传递机制。所有其他非面向对象的语法都和C语言程序设计的编程是完全一致的。但有些C语言语法合法程序在Objective-C中运行时的意思却不是很相同,有区别的地方一定要加以注意,不然会产生语法错误。Objective-C主要语法介绍:(1)消息发送机制Objective-C的最突出的特点是是继承了Smalltalk的消息传递模型。(在Objective-C中,对象之间互相传递消息是很常见的。Objective-C语言编程的当中,类和消息的关系不是很紧密的,调用方法看作是给对象发送消息,所有方法的实现都看作是对消息的回应。当所有的消息处理直到运行的时候才会做出实时的决策,同时交给类自行的决定这么样去处理收到的那些消息。也可以这样说,一个类不完全肯定会回复收到的那个消息,假设类收到了没办法处理的消息时,程序会抛弃那个消息而不是让程序出错或者奔溃。如:定义一个Student类的对象student,让他执行study方法,此段程序就会在执行时会通过消息发送机制自己去寻找方法。Student *student = Student alloc init;student study;- (void)study NSLog(好好学习);(2)类的定义与实现Objective-C中强行规定将类的定义(interface)与实现(implementation)分为两个部分。类的定义文件遵循C语言之惯例以.h为后缀,实现文件以.m为后缀。如:在.h文件中interface youObject : NSObject int member1; / 实例变量 id member2;+(return_type) class_method; / 加号方法为类方法-(return_type) instance_method1; /减号方法为 实例方法end在.m文件中implementation MyObject int memberVar3; /私有的实例变量+(return_type) class_method . /method implementation/类方法的实现-(return_type) instance_method1 ./实例方法的实现end(3)协议(Protocol)协议就是一个方法得签名列表,我们可以在其中定义很多个方法。根据配置,遵守该协议的类会去实现这个协议中规定的若干个方法。协议使用的六部曲:1.声明协议 2.声明代理人 3.执行协议方法 4.签订代理 5.指定代理人 6.实现协议方法。在定义协议时,通过required和optional来设置协议中的方法的实现,required是遵守这个协议必须去实现的方法和optional是遵守这个协议可以选择的方法。比如说:protocol MyChooseDayViewDelegaterequired/要求必须实现的方法- returnChooseDay:(id)myChooseDayView;optional/可选实现的方法- hideThisView;- changeDateFormatter:(NSString*)formatString;end(4)继承 程序的继承很类似于人类社会的继承,子类如果继承了父类,那么子类就拥有了父类的所有的方法和属性(成员变量)。这样的类比可以如图1。图1 继承关系示例图在这个实例图中我们可以看出来动物这个大类是所有猫类与所有的狗类的父类, 而黑猫与白猫类是猫这个大类的子类。继承关系的上面的一层是父类,继承关系的下面的层是子类,如果一个类没有父类,那么这个类就被称作是根类,Objective-C语言中的根类是NSObject这个类,我们称之为祖宗。继承的关系是单向的,不能相互的去继承。继承关系是具有传递性的:比如说:甲继承自乙,乙继承自丙,那么甲就具有乙、丙的特征和行为。一个类的子类是能够继承父类的全部的特征和行为。当多个类存在一部分相同的实例变量与方法的时候,我们就要考虑使用继承的方法,这个方法可以使我们的代码简化,优化代码。继承方法的作用就是让我们的把若干个类里相同的实例变量的方法分出来,写为一个公共的,通用的父类。面向对象程序设计有继承的语法,这能够为我们很大成都的简化和优化代码,将公共的方法和实例变量写在父类里,子类只需要写自己特有的实例变量和方法就可以了。子类继承父类的时候,就会将父类里声明为private的实例变和私有方法之外的方法继承,所当子类中有和父类里一样的方法时就可以不用再写。当父类的方法实现,不足以满足子类的要求时,可以重写父类的方法。私有方法就是在.m中实现而没有在.h文件中声明的方法,私有方法不允许在本类得外部访问。使用继承方法时的三种情行:(1)保留父类对原有方法的实现(实现方法:不重写方法)。(2)按照子类重写的方式来实现(实现方法:重写该方法,写出重写后的实现体)。(3)对于一个方法既有父类对该方法的实现,同时也有子类对该方法的实现。3.2.3UI设计简介UI是用户界面的意思,User Interface的缩写。UI设计就是指对软件的人机交互得方便程度、操作逻辑的清晰与否、界面美观程度的总体设计。优秀的UI设计不只是简单地让软件符合产品的需求,而且还要让用户使用和操作软件时要简单易操作,同时体现设计风格和产品的特点。软件设计分为两个部分,分别为编码设计和UI设计,程序员能看到编码设计和UI设计但是客户在自己的智能终端智只能看到最后的软件产品,那是UI设计和编程设计的结合但是用户看不见代码也不需要看见代码,他们只会看到软件的使用时的样子,以及软件使用时的感受,这就是用户体验,所以在软件的开发和设计中,UI设计尤其重要,因为它直接关系到用户的第一映象,第一观感。UI不仅仅是由用户和界面两个部分组成,同时也包括了用户和软件的交互。4.产品设计和调试4.1产品总体设计车载视频软件客户端的开发,其核心需求就是要实现行车视频、音频、照片的获取、保存和查看,还应当还有附加的有地图导航的功能,为车辆导航。随着车辆增多以及一些行车过程中的事故以及纠纷的出现,车载视频客户端软件的软件的需求以极快的速度增长,甚至一些手机厂商也涌入这个市场以抢占先机。同样,在世界以及中国范围内,苹果手机的用户的占有比重也很大。设计并开发以苹果智能终端为载体,搭载基于iOS的车载视频的软件就是一个很好的结合体,使用了客户已有的智能终端就是解决了硬件购买硬件的成本,而且这样的一款产品能够给苹果客户带来学习成本为零的使用体验。安装具有功能多样且强大,对用户友好,使用快捷方便的客户端软件就拥有很好的前景,也可以在这个新兴且充满竞争的行业里抢占先机,并且用高质量的产品来获得相应的非常可观的利润 。车载视频终端已成为人们生活中必不可少的一部分,设计一款基于iOS 的车载视频客户端有一定的现实意义和应用价值。此产品的开发从总体设计来说,需要用到基本的三大视图控制器,UINavigationController(导航视图控制器),UITabBarController(标签视图控制器),UITableViewController(表视图控制器)。这三大视图控制器 都是继承于UIViewController 。具体的页面元素和控件会在本文的后面详细说明,抛开具体的页面元素与控件,UITabBarController(标签视图控制器)包含所有的基本页面,页面跳转时使用UINavigationController(导航视图控制器)来从一个页面跳转到另一个具体的页面,而一个具有详细信息的页面一般使用的是UITableViewController(表视图控制器)。(1)UITabBarController标签视图控制器UITabBarController有以下重要属性: l viewControllers:显示的视图控制器 l tabBar:标签栏 l delegate:代理 l selectedIndex:选中某个tabBarItem(2)UITabBartabBar是UITabBar对象,包含多个UITabBarItem,每一个tabBarItem对应一个viewController。它的高度是49。当tabBarItem超过5个时,系统会自动增加一个更多按钮,点击更多按钮,没有在底部出现的哪些按钮会以列表形式显示出来 tabBar属性:tintColor、barTintColor、图像设置(3)UITabBarItemtabBarItem可以设置titile、image、badgeValue。可以使用系统样式创建tabBarItem。它的高度是66。(4)UIAppearance如果想通过一键设定所有导航试图控制器的颜色,类似于QQ的一键换肤操作,可以通过UIAppearance协议来进行操作,通过它可以对一些控件进行自定义颜色等。值得注意的是:UITabBarController是项目开发中常见的布局样式,与UINavigationController不同,它的viewControllers都是并列的;而UINavigationController的则是层次性的 。UITabBar通常都会定义外观以适应程序风格,必要时会完全自定义。(5)三大视图控制器综合使用UITabBarController、UINavigationController、UITableViewController通常都是组合出现,这种布局方式特别常见,UITabBarController可以嵌套UINavigationController ;同样的UINavigationController也可以嵌套UITabBarControlleriOS的设计模式主要有设计模式主要分为三类:创造型的:单例和抽象工厂。结构类型的:MVC Decorator, Adapter, Facade and Composite。等这几种模式行为性的:Observer, Memento, Chain of Responsibility and Command。设计模式的好处:我们可以写出容易理解,重用度很高的代码。降低代码的耦合度,符合软件工程的思想。iOS开发应用的基本都是基于MVC设计模式。其中代表Medel:持有我们应用的数据,和定义怎么操控他。V代表View:处理用户的操作和展示model,都是UIView的子类。C代表Controller:他的作用主要是用来协调View和Model把数据展示到View上,就是应用的ViewController类。如图2。图2 MVC模型图(1)C到M之间的通信:从Controller到Model是可以直接通信的,Controller可以看到Model的所有东西的。(2)C到V之间的通信:Controller可以直接与View进行通信,可以通过Outlet实现通信。(3)V到C之间的通信:1.View到Controller不能直接通信,View需要Target-Action通知Controller事件的发生的时候的处理方法。这就要用到Target-Action了。Target-Action就是Controller自己设置一个Target, View通知Controller的时候,向Controller发送Action。2.因为View不拥有自己本身的数据,当View需要从Controller得到数据的时候需要用到代理(delegate),delegate就是把View自己要做的事情,委托给了自己的代理(delegate)来做。(4)M到C之间的通信: Mode与Controller之间的通信是用通知或者KVO来实现对Controller的通知。在了解了基本的通信方式后,我们在这里介绍几个用到的主要控件:一、UIImageViewUIImageView对象可以用来显示一个图像或者一组动画中的任意一个图像。使用者可以使用UIImage来制定任何你想展示的图像来添加到UIImageView上来进行显示。比如,使用者可以使用这个类来展示许多标准格式的图像文件,如JPEG和PNG文件的内容。对于动画图像,使用者也可以使用这个类的方法来开启和终止动画并修改其播放动画的其他一些参数。二、UILabel该UILabel类展现的是一个只读的文本视图。在手机界面中你看到的很多你不可修改的文本展示就是通过这个类所展示的。该系统下得UILabel类默认的是标签文本的样式,我们开发是自己可以自己设置标签上显示的文本的字体、字体颜色、阴影效果和边界的效果等。三、UITextFieldUITextField对象显示在界面上可编辑的文本区域。通常我们在手机上看到的输入框就是UITextField类。此控件帮助我们实现收集用户输入,实现弹出键盘的类型和键盘的回收,一段文本用户是否可以被编辑,还可以委托对象来实现重要的任务。四、UIButtonUIButton是我们常见的在界面上和用户实现通信的控件,通过点击按钮可以触发我们设置在按钮上的事件的发生。一般使用时,我们先创建一个按钮,设置按钮的类型和样式(颜色、大小、字体、点击前的样式、点击后的样式),然后再给按钮添加事件,再实现这个触发事件。五、UITableViewCellUITableViewCell这个类我们设置UITableView对象cell的属性和行为。我们在这个类里设置UITableView单元格的内容和背景(包括文字,图片,和自定义视图)。当创建cell时,用户可以自己设置cell也可以使用系统样式的cell。在UITableView里用一个最重要的概念叫做重用。就是样式一样的cell我们不需要第二次创建,系统会根据重用标识符去寻找一个一样的cell样式,然后再赋值新的内容就可以实现一个样式一样,内容不一样的cell。4.2产品功能设计产品功能介绍如图3。图3 产品功能图一、首页:(1)首页功能主要是获取了当前所在的城市天气信息,若定位失败会默认城市为南京(论文答辩所在地)。是通过网络请求数据来得到的实时信息。另外,模拟器是无法定位的,所以次功能的实现需要真机测试。默认城市的是南京。(2)首页中的列表展示了道路交通新闻和历史上的今天,分两个区展示。此功能是通过网络请求数据来获取的网络实时数据。道路交通新闻点击cell可跳转网页查看新闻具体内容。二、行车记录:主要由四个功能模块组成:(1)行车记录:行车记录功能的原理是采用系统的摄像头录像,行车时将手机固定即可。涉及到的所有视频录制均可采用此项功能。录制的内容可在手机相册中查看到 。(2)声音记录:音频录制的功能可录下声音等作为证据,录下后会自动播放一遍声音的。而此处的录下后再次播放的功能相当于用代码展示了如何播放音频文件。(3)拍照留证:拍照留证的功能是调用系统的照相机拍下车辆刮擦,碰撞,车祸等交通事故现场的现场图片等作用。(4)SOS灯光:SOS灯光主要是调用了系统的闪光灯,可常亮可模拟SOS求救信号,防止发生意外时无法呼救或呼救不起效果。事故发生在黑暗或者能见度很低时或者呼救不起作用时,我们使用此项功能,因为光速大于声速。当让在平时的使用时此项功能亦可作为手电筒的功能,方便我们的使用。(5)文件播放:文件播放的功能是实现本地音频、视频的播放,将行车记录的视频和声音录制这二者保存在本地的文件可以调出播放,并且也让车载视频软件兼具播放器的工能,实现影音娱乐的功能,用户也可以播放自己手机总保存的喜欢的歌曲,电影等。三、地图导航:地图导航的功能主要是利用百度地图来为用户进行车辆的导航服务。实现的功能主要有选择显示卫星地图或是标准平面地图(导航条右按钮控制);当前定位城市的道路交通状况,(地图右下的“路”字按钮);由于定位有一定的误差,导航的启点可能跟当前定位的位置有一两百米的误差,此处可提出作为后期的优化之处。四、个人中心:个人中心模块主要是登陆、注册的功能的实现。用户已经注册过账号和密码时可以直接使用自己的账号密码登录;没有账号我们可以点击注册按钮进入到注册页面,注册好后会自动返回到登录界面,输入用户名和密码即可实现登录。一般的注册需要用到手机号码获取验证码,该功能需要收费,此项目可以作为后期的改进之处。登陆成功之后会进入个人中心界面,用户可修改自己的头像,拍照或者从相册选取均可。还可以查询违章和号码归属地等信息。号码归属地的API接口是免费的,此功能以实现;但是违章查询功能的API接口是收费的,此软件的此功能暂时不实现,作为产品的改进和优化之处。 4.2.1首页界面模块设计当客户端软件开启运行时,先开到是开机画面,然后是首页信息。开机画面是用可视化编程的xib搭建的动画视图。Xcodeh中的可视化编程方法有xib和storyboard两种,都是非常方便、快捷的搭建页面的工具,在纯代码熟悉的条件下,可以直接使用xib和storyboard。开机画面的动画搭建好了之后,我们要赋予它动画的效果。这些效果的实现我们要用代码来实现。此款软件的开机画面是动画并伴有音乐,这就涉及到动画的播放和音乐的播放。当软件的开启完成后我们要动画视图从屏幕移除,音乐停止播放。开机画面如图。开机动画如图4。图4 开机动画图4 开机动画核心程序:- (void)viewDidLoad super viewDidLoad; self.isPlayMusic = YES; self playTheSound; self logoAnimation;程序分析:以上程序使软件开启时呈现动画,并播放音乐。软件开启时呈现动画,该动画是由两幅主要的图组成的立体的动画,并且我们让他显示出立体的效果。当动画时间结束,我们将软件开启动画的imageView从父视图移除,就直接进入首页界面。详细代码见附录“开机动画”。 首页界面主要用到UITabBarController(标签视图控制器),UINavigationController(导航视图控制器),UITableViewController(标示图控制器)。首页的实现,三大视图控制器都用到了,还用到了而网络数据请求。UITabBarController管理了“首页”,“行车记录”,“地图导航”,“个人中心”四个独立的模块。而每个独立的单独的模块又是有单独的视图控制器来控制视图。在首页这个模块中,在首页我们使用了UITableViewController(表视图控制器),就是上图中我们可以看见的一行显示的由头标题和内容构成。而且每一行都是一个单独的模块,都可以点击跳转到具体信息,此功能通过webView实现具体的信息展示,这些显示的信息都是从网络上获取的实时的最新的数据。首页界面如图5所示,首页信息的具体网页信息展示如图6所示。图5 首页界面图6 首页具体信息核心代码:- (void)viewWillAppear:(BOOL)animated super viewWillAppear:animated; self.navigationController setNavigationBarHidden:NO animated:YES; self sendRequestOfTodayInHistory; self sendRequestOfNews; self sendRequestOfWeatherWithCityName:nil;程序分析:以上程序是当进入首页后的一些将要展示的数据的数据请求。在设置好页面布局后,我们通过网络请求的数据来给他们赋值,实现天气,道路交通新闻以及点击道路交通新闻后的详情页面具体内容的呈现。此模块最重要的就是网络的数据请求,以及调用真机的GPS定位实现所在地的位置显示。详细代码见附录“首页界面”。4.2.2行车视频记录模块设计点击屏幕下方的行车记录按钮,会出现如上图所示的界面。界面上是五个按钮状的小模块。分别为“行车记录”、“文件播放”、“声音录制”、“拍照留证”、“SOS灯光”五个小功能模块。“行车记录”界面如图7。图7 行车记录界面核心代码:- (void)cofigViews NSArray *titleArr = 行车记录,声音录制,拍照留证,SOS灯光,文件播放; CGFloat center_X = self.view.center.x; CGFloat center_Y = self.view.center.y - 50; self.currentTag = TAGSTART; for (NSInteger i = 0; iMENUS_NUMBER; i+) CGFloat temp_Y = center_Y + RADIUS*cos(2.0*M_PI*i/MENUS_NUMBER); CGFloat temp_X = center_X - RADIUS*sin(2.0*M_PI*i/MENUS_NUMBER); ECItemButton *item = ECItemButton alloc initWithNormalImage:powerbuttonon highlightedImage: tag:i+TAGSTART title:titleArri; item.frame = CGRectMake(0, 0, 100, 100); item.center = CGPointMake(temp_X, temp_Y); item.delegate = self; rotationTransform1i = CATransform3DIdentity; CGFloat scaleNumber = fabs(i-MENUS_NUMBER/2.0)/(MENUS_NUMBER/2.0); if (scaleNumber 0.3) scaleNumber = 0.4; CATransform3D rotationTransform = CATransform3DIdentity; rotationTransform = CATransform3DScale(rotationTransform, scaleNumber*SCALENUMBER, scaleNumber*SCALENUMBER, 1); item.layer.transform = rotationTransform; self.view addSubview:item; 程序分析:以上程序是实现行车记录的界面模块的菜单视图的动画效果,并且在每个按钮上都添加了相应的跳转方法。CATransform3D 的数据结构定义了一个同质的三维变换(4x4 CGFloat值的矩阵),用于图层的旋转,缩放,偏移,歪斜和应用的透视。图层的两个属性指定了变换矩阵:transform 和 sublayerTransform。transform :是结合 anchorPoint(锚点)的位置来对图层和图层上的子图层进行变化。sublayerTransform:是结合anchorPoint(锚点)的位置来对图层的子图层进行变化,不包括本身。CATransform3DIdentity 是单位矩阵,该矩阵没有缩放,旋转,歪斜,透视。该矩阵应用到图层上,就是设置默认值。详细代码见附录“行车记录界面”。行车视频拍摄模块设计进入行车记录模块后,会有五个按钮,点击“行车记录”按钮,进入行车视频记录状态,在该状态下,行车视频会被记录并保存到本地,在后续查看时可以点击文件播放来实现本地存储的文件的查看。该功能的实现是客户端软件通过代码来调用手机自带的摄像头来实现视频的获取,再将拍摄的视频保存在苹果手机上来实现文件的存储。“行车记录”界面中的“行车记录”按钮如图7,行车记录功能模块界面如图8。图7 行车记录界面图8行车记录模块核心代码:- (void)btnOfVideoClicked:(id)sender ECVideoView *video = ECVideoView alloc init; video.strIdetify = 视频录制; self.navigationController pushViewController:video animated:YES; NSLog(跳转视频录制);程序分析:以上程序是点击行车记录的按钮,跳转到录制界面。点击录制按钮进行视频的录制,再此段程序中,调用手机的相机功能。其核心是调用AVCaptureConnection *captureConnection=self.captureMovieFileOutput connectionWithMediaType:AVMediaTypeVideo时会有一个判断,根据设备输出获得连接,再根据连接取得设备输出的数据来判断,是调用相机拍照还是直接执行录像功能。将录制完成的视频保存到本地相册。调用writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:(NSURL *assetURL, NSError *error) 方法,实现给定标识符的文件在本地的保存。如果发生错误,此文件将不保存,如果标识符一致就可以保存至本地。详细代码见附录“行车视频拍摄模块”。拍照记录模块设计进入行车记录模块后,有五个按钮,点击文件“拍照留证”,调用系统相机,进入拍照留证的相机界面。在此页面下,“行车记录”界面中的“拍照留证”按钮如图7,相机界面如图9。图9 拍照留证此模块的实现是通过程序是调用真机摄像头,进行拍照功能的实现。虚拟机无摄像头此功能,会在答辩时用真机做现场演示。详细代码见附录“拍照记录模块”。声音录制模块设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论