资源描述
听书软件—喜马拉雅的设计与开发
(此文档为word格式,下载后您可任意编辑修改!)
南阳理工学院本科毕业设计(论文)
听书软件—喜马拉雅的设计与开发
Listening software - design and development
of the Himalayas
学 院(系): 计算机与信息工程学院
专 业: 计算机科学与技术(信息安全方向)
学 生 姓 名: 杨 付 雨
学 号: 1106655092
指 导 教 师(职称): 张 芳(副教授)
评 阅 教 师:
完 成 日 期: 2015年6月
南阳理工学院
Nanyang Institute of Technology
听书软件—喜马拉雅的设计与开发
计算机科学与技术专业 杨付雨
[摘 要]伴随着苹果智能手机的普及,越来越多的人使用苹果智能手机,而人们对手机的要求也不再是简单的发短信、打电话,利用手机随时随地听书、听音乐、听广播也成为时下最常见,最潮流的娱乐休闲方式。针对这一现象,利用软件工程原理,采用SQLite数据库,常用iPhone控件等技术,为使模块与模块间的低耦合,高内聚,采用模块化方法编程,完成了听书软件-喜马拉雅的设计与开发。该软件的开发,带给了人们具有声效和图效上的听觉和视觉的享受,使人们在快节奏的生活得到身心的愉悦。
[关键词]听书软件;iPhone;SQLite数据库
Listening software - design and development
of the Himalayas
Computer Science and Technology Major Yang Fuyu
Abstract: Along with the popularity of Apple's smartphone, more and more people use Apple's smartphone, and people's requirement of mobile phone is no longer simply send text messages, phone calls, the phone anytime, anywhere to listen to a book, listen to music, listen to the radio has become nowadays the most common, the trend of leisure entertainment way. In view of this phenomenon, using the software engineering principle, using SQLite database, commonly used iPhone control technology, in order to make the low coupling between modules and module and high cohesion, the use of modular programming method, completed the audiobook software - Himalayan design and development. The development of the software brings people to enjoy the sound effect and the visual enjoyment of the sound effect and the picture effect, so that people can get the pleasure in the fast rhythm life..
Key words: Listen to the software; iPhone; SQLite database
目录
1 引言 1
1.1课题背景 1
1.2 论文研究的目的和意义 1
2系统分析 2
2.1技术需求分析 2
2.2功能需求分析 3
2.3相关技术 3
2.3.1 IOS简介 3
2.3.2 OBJECTIVE-C语言 4
2.3.3 XCODE环境 4
2.3.4 JSON数据解析 5
2.4现行系统详细分析 5
2.4.1业务流程分析 5
2.4.2系统用例图 6
3数据库设计 7
3.1数据库需求分析 7
3.2数据库表结构设计 8
4系统的详细设计与实现 11
4.1首页面 11
4.2分类界面 11
4.3博主详情界面 13
4.4播放界面 13
4.5下载界面 14
4.6手机用户注册或登录界面 15
5程序运行环境 15
5.1IOS模拟测试器 15
.2 IOS真机测试 16
总结 17
参考文献 18
致谢 19
听书软件—喜马拉雅的设计与开发
1 引言
音乐、书籍大大的丰富了人类的物质生活和精神追求,是我们对美的一种追求形式,是人类娱乐生活的重要组成元素。音乐影响着人们的生活,我们在繁忙之余用音乐来舒缓情绪、排解压力。音乐还可以开发人的形象思维能力和逻辑思维能力。尤其是随着经济的发展和生活水平的提高,我们更加注重精神的享受,听书、听音乐也就尤为收到推崇。
另一方面,移动信息时代的来临,使得手机作为移动信息服务终端逐渐取代了电脑、平板等个人信息终端。手机给人们的日常生活带来的便利日益受到追捧并逐渐成为流行。苹果手机iphone至面世以来就受到我国人民的喜爱和大力追捧,冲击着整个智能手机市场。由此可见,基于ios操作系统的喜马拉雅音乐软件的设计与开发具有广阔的前景。
1.1课题背景
手机的大众化,智能手机成为现在的主流通讯工具。与此相对应的对的对手机软件的需求也就越来越多。手机的一个重要的功能就是听书,听音乐,一款好的手机听书软件可以更好的体现智能手机的强大。苹果手机作为当今中国智能手机市场上不可或缺的一个品牌,基于iOS的手机软件需求量也就相应的越来越强。市场上的听书软件品牌繁多,定位不一,基本满足了各层次消费者的需求。
伴随着苹果手机进入中国市场,相应的iOS技术逐渐流行起来。而对于开发苹果应用的语言——Object-C[1],也成为当今社会最流行的开发语言,并且保持着强劲的上升趋势,隐隐有超过C语言的现象。对于其他的开发语言,例如java、javascripe,Object-C以其强大的优势遥遥领先于这些其他的编程语言。
1.2 论文研究的目的和意义
基于iOS操作系统以Objective-C语言开发的3G移动互联应用的集娱乐休闲和听书、听歌手机软件系统,通过手机听音乐已经成为大多数人习惯和爱好,手机操作系统有很多,而苹果系统的软件具有的特点就是美观、简洁、易操作。根据这些信息,学着去设计一款基于iOS的音乐App在以后的社会竞争中更加具有优势,而且一法通万法,学会了制作一看APP,其他差别不大的APP的制作也能手到擒来,同时本人从去年开始接触iOS,在学习了几个月后,又经过差不多半年的实习经验,对iOS开发有了一定理解,所以对于这次毕业设计,我就选择了基于iOS系统开发一款产品。希望通过这次毕业设计来进一步巩固自己的iOS开发水平,同时提升自己的开发设计和编程的能力。
2系统分析
2.1技术需求分析
1.运用流媒体第三方库播放在线音乐[10]。
2.使用单例管理播放音乐。
单例的几种写法(以MyAudioPlay类为例)
1. 直接在Appdelegate里定义个属性@property (strong, nonatomic) MyAudioPlay,然后用(AppDelegate *)[[UIApplicationsharedApplication] delegate],用点语法调用MyAudioPlay即可。
2. 在.h文件里写个+ (id) sharedInstance,在.m文件里shareInstance的实现如下,
+ (id) sharedInstance{
staticMyAudioPlay * audio = nil;
if (audio == nil) {
audio = [[MyAudioPlayalloc] init];
}
return audio;
},每次使用即可用MyAudioPlay类调用shareInstance方法。
3. .h文件里写个+ (id) sharedInstance,在.m文件里shareInstance实现如下,
+ (id) sharedInstance{
staticMyAudioPlay * audio = nil;
staticdispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
audio = [[MyAudioPlayalloc] init];
});
return audio;
}
3.用coreData把数据模型存入本地。
4.使用AFNetworking异步下载歌曲(AFNetworking是大名鼎鼎的网络开发框架,几乎所有APP的开发都有它的身影)。
5.实现了下载音乐的进度条的百分比显示(通过监控下载回传的数据与总大小相比较,得到下载的进度)。
6.实现了多个cell在一个tableview上的动态显示,每个cell上可以响应多种事件。
2.2功能需求分析
本APP是基于iOS平台的一款类似音乐播放的娱乐工具,但是所有的声乐都是在线播放,所有音乐格式都是流媒体,用户也可以下载音乐,可以在下载听界面看到下载的音乐。
根据系统功能划分,本系统详细需求描述如下:
(1)音乐播放功能
由于网络接口的原因,APP播放的全是流媒体格式,但是基本实现了在线播放、歌曲切换、暂停与开始、上一曲与下一曲、歌曲图片的显示、音量调节,随意拖动滚动条来播放音乐等。
(2)界面展示功能
所有的页面展示都是自己搭建UI,从网络获取数据,加载图片或者文字,是所有APP通用的逻辑。
(3)音乐下载功能
用第三方框架AFNetworking实现了基本的下载功能,下载显示功能,下载到本地播放功能。
2.3相关技术
2.3.1 ios简介
iOS最初是设计在iPhone上的操作系统,苹果公司于2007年1月9日的Macworld大会上公布了这个系统,并命名为iPhone OS,但随着此系统在iPod touch、iPad以及Apple TV等苹果产品上的广泛应用,苹果公司于2010年6月7日WWDC大会上将其改名为IOS。据Canalys的数据显示, 截止到2011年11月,iOS占据了全球智能手机系统市场份额的30%,在美国的市场占有率更是达到了43%。随着Andriod开源操作系统的异军突起以及Windows Phone的发力,iOS市场份额正被一点点的蚕食,但是iOS设备的利润率高的惊人,以智能手机为例,iphone的利润额占到整个智能手机利润额的80%,受益于此,苹果的市值也达到了5000亿美元。
iOS操作采用的是多点触控直接操作,控制方法包括滑动、轻触屏幕和图标及按键。操作有:滑动、轻按、缩小及放大。此外,iOS移动设备中还内置了加速器,使得旋转iOS设备时,界面也可以得到旋转,这也使得iPhone等便携设备更便于使用[2]。自3GS开始,iphone装备有陀螺仪,这使得iphone有了重力感应,游戏效果更加的突出。屏幕的下方是home键,点按回到主界面。底部是dock,可安放四个使用者最经常使用的程序的图标。屏幕最上方是状态栏,显示一些有关资讯:如时间、电池电量和讯号强度等。其余的屏幕用于显示当前的应用程序。启动程序,只需点按该程序的图标,点按屏幕下方的home键即退出应用程序。在iPhone 3.0及后续版本中,及时应用程序退出,当第三方软件收到了新的讯息时,苹果公司的服务器将把这些通知推送至iPhone或iPod Touch上[3](不管它是否正在运行中)。
2.3.2 Objective-C语言
Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在GCC以及Clang运作的系统上编写和编译,因为GCC与Clang含Objective-C的编译器。1980年代初布莱德·确斯(Brad Cox)在其公司Stepstone发明Objective-C[3]。
Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。Objective-C写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。因此,Objective-C它完全兼容标准C语言.
Objective-C的优缺点:
由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:内联函数、常数传播、交互式优化、纯量取代与聚集等)。这使得Obj-C性能劣于类似的对象抽象语言(如C++)。不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象[4]。
Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
2.3.3 Xcode环境
Xcode是开发苹果应用程序的必备开发环境,自4.0开始,开发人员就可以利用Xcode开发基于iOS的iPad、iPhone、iPod Touch 设备应用程序,只要你有Mac OS X Snow Leopard 10.6.2 以上版本 Mac OS 操作系统,便可安装ios sdk,如果你有iOS设备,便可让Xcode把应用程序部署到你的iOS设备上。另外,你还可以使用iPhone仿真器进行调试。Xcode提供了友好而方便的应用程序开发环境,这样你就可以开发出好的iOS应用程序了。
Xcode支持多种语言,如:C、C++、Objective-C、Java。另外,Xcode 的编译速度也极快。
Xcode还具有自由撤消的强大功能,同时,从Xcode5.0开始具有虚拟模型和设计功能的storyBoard更完善了,这可以让你更轻松的开发和维护应用程序。
2.3.4 JSon数据解析
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成[5](网络传输速度)。
比如下面的Json数据,在OC(Objective-C)中,最外层是一个字典A,A有三个键值对,键”programmers”,”authors ”,”musicians”,相应的键对应的值是数组B,C,D,三个数组分别有3、3、2个元素,每个元素又都是一个字典E,这个字典E又有三个键值对,”fristName”,”lastName”,”email”/” genre”/”instrument”,比如我想取到musicians的piano的值(假设最外层字典为JSon),则可以这样取NSString * instrument = [[[JSon objectForKey:@"musicians"] objectAtIndex:1] objectForKey:@"instrument"];,instrument的值就是piano。
2.4现行系统详细分析
2.4.1业务流程分析
手机用户使用此软件时,首页面可以看到可以收听的节目的分类,可以看到最新的可收听的节目,也可以随时播放,具体流程如图2-1。
图2-1 系统流程图
2.4.2系统用例图
系统的用例为手机用户。具体用例图如图2-2所示。
图2-2系统用例图
3数据库设计
3.1数据库需求分析
根据各个页面的信息的多寡,考虑到手机内存空间是有限的,故对数据量较大的界面进行缓存,运用苹果官方封装的CoreData框架,将OC对象转换成数据,保存在SQLite数据库文件中,也能将保存在数据库中的数据还原成OC对象,所以我们最终存储在数据库文件中的是继承于NSManagedObject的OC对象模型,。在此数据操作期间,我们不需要编写任何SQL语句,这个有点类似于著名的Hibernate持久化框架,也就是说我们通过CoreData框架间接操控SQL,比直接编写SQL语句简单更容易理解。
最终得出需要进行数据持久化的页面如下所示:
●动态界面(HIMDynamicViewCtrl)的表:包含图片的网址、当前日期、标题与副标题、个人昵称、内容简介等;
●详细分类界面(HIMDetailCateViewCtrl)的表:包含标题、图片地址、上次更新时间、是否是最火/最近更新/经典内容、所属类别名称、播放次数等
●分类界面(HIMFindDetailViewCtrl)的表:包含所属分类名称、是否有播主信息、图片地址、发布日期
●发现界面(HIMFindViewCtrl)的表:包含图片地址、是否是滚动图数据等
●播放界面(HIMPlayViewCtrl)的表:包含播放声音的地址、用户id、声音市场、播放次数、下载地址、声音大小、创建时间等
3.2数据库表结构设计
需求分析已经说了我们存储在数据库中的是OC对象,所以下面表结构也就是OC对象的设计,简单的说就是OC对象模型的设计,如果想用CoreData储存数据,类对象就必须继承NSManagedObject对象。
图3-1播放界面(HIMPlayViewCtrl)的数据模型
图3-2详细分类界面(HIMDetailCateViewCtrl)的数据模型
图3-3 发现界面(HIMFindViewCtrl)的数据模型
图3-4分类界面(HIMFindDetailViewCtrl)的数据模型
图3-5动态界面(HIMDynamicViewCtrl)的数据模型
其中每个表都有的date用来判断再次进入程序时间是否超过一定时间,超过一定时间则删除缓存,重新缓存新数据。
4系统的详细设计与实现
4.1首页面
首页面如图4-1所示。手机用户点击软件,进入首界面,界面上端出现热门、有声小说、音乐、综艺节目、相声评述等以及更多选项,以供用户选择收听内容,中部则是一些最火主播,热门声音的推荐,最下端是动态、发现、下载听以及我的选项。
图4-1 首页面
4.2分类界面
点击首界面上端的任意选项,选择所要收听的内容,就会出现此选项的各种类型,例如如图4-2情感生活界面,手机用户选择了收听情感生活这一选项,会出现小清新,治愈系,爱情,心理等各种分类。
在情感生活界面的各种分类中,选择要收听的类型,即会出现如图4-3的小分类界面,界面上端会出现最火,最近更新,经典三个选项,在任一选项会出现可供选择的收听书籍,任选其一即可播放。
图4-2 情感生活界面
图4-3 小分类界面
4.3博主详情界面
当点击播放某一节目时,会出现该节目的一些基本信息,其中关于该博主的信息也可点击获取,如图4-4博主详情界面,可以显示博主的头像,关注的人数,粉丝数还有赞过的,以及发布的专辑。
图4-4 博主详情届面
4.4播放界面
当手机用户选中一个节目后,就可以选择播放了,如图4-5所示,在此界面上可以实现了在线播放、歌曲切换、暂停与开始、上一曲与下一曲、歌曲图片的显示、音量调节,随意拖动滚动条来播放音乐等。
图4-5 播放界面
4.5下载界面
手机用户对某一节目进行下载的话,就会跳转到下载界面,如图4-6所示。
图4-6 下载界面
4.6手机用户注册或登录界面
手机用户可以在此界面进行新用户的注册,或者已有账号的用户在此页面登录,如图4-7所示。
图4-7 注册或登陆界面
5程序运行环境
5.1iOS模拟测试器
iOS Simulator位于/Developer/Platforms/iPhoneSimulator.platform/ Developer/Applications文件夹中。通常不需要直接启动iOS Simulator-它在Xcode运行(或是调试)应用程序时会自动启动。Xcode会自动将应用程序安装到iOS Simulator上。
iOS Simulator是个模拟器,但并非仿真器。这两者的区别是什么呢?模拟器会模仿实际设备的行为。iPhoneSimulator会模仿实际的iOS/iPad设备的真实行为。但模拟器本身却使用了Mac上的各种库(如Quicktime)进行渲染以便效果与实际的iPhone保持一致。此外,在模拟器上测试的应用程序会编译为x86代码,这是模拟器所能理解的字节码。实际的iPhone设备使用的则是ARM代码。
5.2 iOS真机测试
需要申请开发者账号,需要配置真机调试证书。
硬件环境:iPhone 5, iPhone 5s, iPhone 6, iTouch 5;
系统环境:iOS 7.0及以上
证书准备:真机调试证书
如图5-2所示。
图5-2真机测试
证书的配置如图5-3所示。
图5-3 证书的配置
总结
此系统实现了在线收听音乐和下载音乐的功能,包含注册模块,用户登录和授权模块、第一界面模块、音乐播放模块、音乐下载模块、分类模块和博主详情模块,完成了最初的设想。当然也存在着一些不足,其中注册和用户登录模块只完成也页面搭建,其他例如QQ,微博什么的第三方的注册和登录不能实现,有待继续开发。
在整个编写的过程中,我也受益良多。在系统写作编程之前,要完善对系统的构思,可行性分析和需求分析等一系列的前期工作,把这些工作做好之后才开展下面的编程,以防止出现半途而废的情况。
17
参考文献
[1] Objective-C程序设计(第4版)[M].电子工业出版社,2011.
[2] Kazuki Sakamoto 、Tomohiko Furumoto著,Objective-C高级编程(iOS与OS X多线程和内存管理)[M].电子工业出版社,2013
[3] 王志刚、王中元、朱蕾著,iPhone UIKit详解[M].电子工业出版社,2013
[4] 唐巧著,iOS开发进阶[M].电子工业出版社,2015
[5] 刘一道著,iOS 7:iPhone/iPad应用开发技术详解[M].机械工业出版社,2013
[6] 徐孝凯著,C++ 语言基础教程[M].清华大学出版社,2013
[7] [美] John Ray著,iPhone开发入门经典(第2版)[M].著人民邮电出版社,2014
[8] OU J P,SOONG T T,et al.Recent advance in research on applications of passive energy dissipation systems[J].Earthquack Eng,1997,38(3):358-361.
[9] 杨正洪,郑齐心,郭晨,iOS5编程揭秘,清华大学出版社[M],2012年,61-68
[10] Jiva DeVoe.Good knowledge of Objective-C[M].Wiley Publishing,2012
致谢
匆匆四年,在我们的不经意间时光飞快的溜走,期间欢乐和忧愁伴随着我们的成长,我们在这里挥洒汗水,收获成长,南阳理工学院良好的学习氛围和严谨认真的教学氛围使我四年来受益匪浅,我在这里学习知识,学习在社会上生存的技能,也学习到了怎么和身边的人相处,学到了这么多宝贵的人生经验,收获了那么多的人生财富,让我时常怀着颗感恩之心,我也深深的爱着并感谢着南阳理工学院和陪伴我成长的师长、同学和朋友。
这篇论文是在张芳老师的悉心指导下完成的,张老师平易近人的性格和渊博的学识使我受益良多,老师对我的悉心教导对我有深远的影响,在这次论文的写作过程中,不论碰到什么问题,老师都给予及时有效的指导,耐心的为我答疑解惑,在和张老师相处的过程中,我不仅仅学到了有用的知识而且也学到了认真做人。在这里我对我的导师张芳致以真挚的祝福和深深的歇息。
这篇论文的完成过程中也受到了其他老师和同学的许多帮助,没有他们的帮助,我就不能这么顺利的完成它,他们在我的论文写作过程中给了我许多的帮助和鼓励,借此机会也想表达一下感激之情,同时我也会越来越好的,不会辜负大家的期望。
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,单片机论文,毕业设计,毕业论文,优秀毕业论文,本文档支持完整下载,支持任意编辑!选择我们,选择成功!
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,单片机论文,毕业设计,毕业论文,单片机设计,硕士论文本文档支持完整下载,支持任意编辑!选择我们,选择成功!
单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿本文档支持完整下载,支持任意编辑!
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!
单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!
单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!
20
展开阅读全文