軟件工程畢業(yè)論文-ios下視頻點(diǎn)播app設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  本科畢業(yè)論文</b></p><p><b>  (20 屆)</b></p><p>  iOS下視頻點(diǎn)播App設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  摘 要</b></p><p>  蘋果iOS是蘋果開(kāi)發(fā)的手持設(shè)備操作系統(tǒng)。蘋果公司最早于

2、2007年1月9日的Macworld大會(huì)上發(fā)布這個(gè)系統(tǒng),最初設(shè)計(jì)給iPhone使用,后來(lái)陸續(xù)套用到iPod touch、iPad以及Apple TV等蘋果產(chǎn)品上。</p><p>  近年來(lái),隨著iphone和廣泛應(yīng)用,使許多企業(yè)發(fā)現(xiàn),手機(jī)業(yè)務(wù)價(jià)值,促使越來(lái)越多的人開(kāi)始學(xué)習(xí)開(kāi)發(fā)手機(jī)。蘋果手機(jī)軟件基于Object_C編程語(yǔ)言編程Xcode的環(huán)境下發(fā)展。手機(jī)軟件分為許多類型,包括視頻類手機(jī)軟件有很高的地位在手機(jī)軟件的

3、發(fā)展。</p><p>  本文基于iOS開(kāi)發(fā)平臺(tái)設(shè)計(jì)并且實(shí)現(xiàn)了一款手機(jī)視頻App,展示如何通過(guò)利用Object_C 的工具函數(shù)實(shí)現(xiàn)對(duì)視頻的各種處理。論述了視頻的播放,異步下載以及斷點(diǎn)播放。</p><p><b>  關(guān)鍵字:</b></p><p>  視頻播放 Dota Object_C </p><p>

4、<b>  Abstract</b></p><p>  Apple iOS is the development of handheld devices operating system.Apple as early as January 9,2007 the Macworld conference this system,originally designed for use in iP

5、hone,subsequently applied to the iPod touch,Apple,and Apple products such as Apple TV.</p><p>  In recent years, with the iphone and it is widely used, make many businesses found that mobile phone on busines

6、s value, prompting more and more people begin to learn the development on mobile phones. Apple mobile phone software based on Object_C programming language under the environment of Xcode development programming. Mobile p

7、hone software is divided into many types, including video class mobile phone software have the very high status in the development of mobile phone software.</p><p>  This article is based on the iOS(Internet

8、working Operation System) is designed and implemented a mobile video App, shows how to use Object_C tool function on video processing. Discusses the video playback, asynchronous download and breakpoint.</p><p&

9、gt;<b>  Keywords</b></p><p>  Video Display Dota Object_C</p><p><b>  目錄</b></p><p><b>  第一章 緒論5</b></p><p>  1.1 iOS系統(tǒng)概述5&

10、lt;/p><p>  1.2 iOS系統(tǒng)的構(gòu)架5</p><p>  1.2.1 Cocoa Touch層5</p><p>  1.2.2 Media 層6</p><p>  1.2.3 Core Services層6</p><p>  1.2.4 Core OS層6</p><p&

11、gt;  1.3 Object_C的介紹6</p><p>  第二章 總體設(shè)計(jì)8</p><p>  2.1 系統(tǒng)各個(gè)功能模塊總體設(shè)計(jì)8</p><p>  2.2 iOS的View的生命周期9</p><p>  第三章 詳細(xì)設(shè)計(jì)11</p><p>  3.1 基礎(chǔ)類設(shè)計(jì)11</p>&

12、lt;p>  3.2 項(xiàng)目所需系統(tǒng)類庫(kù)13</p><p>  3.3 第三方SDK13</p><p>  3.4 App運(yùn)行首頁(yè)面14</p><p>  3.4.1 視頻解說(shuō)14</p><p>  3.4.2 視頻解說(shuō)詳情頁(yè)面16</p><p>  3.4.3 視頻播放17</p>

13、;<p>  3.5 視頻緩存18</p><p><b>  3.6 直播20</b></p><p>  3.7 Dota2 英雄介紹和物品介紹21</p><p>  3.7.1 Dota2 英雄介紹21</p><p>  3.7.2 Dota2 物品的介紹24</p>&l

14、t;p><b>  3.8 設(shè)置26</b></p><p>  3.9系統(tǒng)測(cè)試28</p><p>  3.9.1 功能模塊測(cè)試28</p><p>  3.9.2 功能整體測(cè)試28</p><p>  第四章 結(jié)論和致謝29</p><p><b>  緒論</

15、b></p><p>  1.1 iOS系統(tǒng)概述</p><p>  iOS操作系統(tǒng)是iPhont、ipod touch以及iPad設(shè)備的核心。</p><p>  構(gòu)架iOS平臺(tái)的知識(shí)與Mac OS X系統(tǒng)同出一轍,iOS平臺(tái)的許多開(kāi)發(fā)工具和開(kāi)發(fā)技術(shù)也源自Mac OS X,都是以UNIX為基礎(chǔ)。但開(kāi)發(fā)者無(wú)需具備Mac OS X的開(kāi)發(fā)經(jīng)驗(yàn)就可以編寫iOS的應(yīng)

16、用程序。iPhone軟件開(kāi)發(fā)包(SDK)為著手創(chuàng)建iOS應(yīng)用程序提供所需要的一切。</p><p>  1.2 iOS系統(tǒng)的構(gòu)架</p><p>  iOS架構(gòu)和Mac OS的基礎(chǔ)架構(gòu)相似。站在高級(jí)層次來(lái)看,iOS扮演底層硬件和應(yīng)用程序的中介。創(chuàng)建的應(yīng)用程序不能直接訪問(wèn)硬件,而需要和系統(tǒng)接口進(jìn)行交互。系統(tǒng)接口轉(zhuǎn)而又去和適當(dāng)?shù)尿?qū)動(dòng)打交道。這樣的抽象可以防止應(yīng)用程序改變底層硬件。iOS實(shí)現(xiàn)可

17、以看作是多個(gè)層的集合,底層為所有應(yīng)用程序提供基礎(chǔ)服務(wù),高層則包含一些復(fù)雜巧妙的服務(wù)和技術(shù)。</p><p>  圖1-1 iOS的層</p><p>  1.2.1 Cocoa Touch層</p><p>  Cocoa Touch層提供了基本的系統(tǒng)行為支持,而且將你的工作量降到最低,當(dāng)你想要實(shí)現(xiàn)更為復(fù)雜的行為和界面時(shí),才考慮向下層探尋技術(shù)支持。</p&g

18、t;<p>  UIKit框架:UIKit提供了一些程序運(yùn)行所必須的關(guān)鍵對(duì)象,使得App能夠捕捉用戶輸入和在屏幕上顯示內(nèi)容</p><p>  MapKit框架:iOS3.0引入該框架,該框架提供一個(gè)可被嵌入到應(yīng)用程序的地圖界面,該界面包含一個(gè)可以滾動(dòng)的地圖視圖</p><p>  Address Book UI框架:iOS3.0引入該框架,可以利用該框架撰寫電子郵件,并將其

19、放入到用戶的發(fā)件箱排隊(duì)等候發(fā)送</p><p>  Message UI框架:顯示創(chuàng)建或者編輯聯(lián)系人的標(biāo)準(zhǔn)系統(tǒng)界面</p><p>  1.2.2 Media 層</p><p>  包含圖形、音頻、視頻等技術(shù)。</p><p>  Quartz Core框架:包含Core Animation 是高級(jí)動(dòng)畫制作和混合技術(shù),它使用經(jīng)過(guò)優(yōu)化的渲染路

20、徑實(shí)現(xiàn)復(fù)雜的動(dòng)畫和視覺(jué)效果</p><p>  Media Player框架:應(yīng)用程序播放視頻和音頻內(nèi)容</p><p>  AV Foundation框架:該框架包含的Object_C類可用于播放音頻內(nèi)容</p><p>  Core Graphics框架:(CoreGraphics.framework)包含Quartz 2D繪圖API接口。該框架基于C接口,提供

21、繪圖功能</p><p>  1.2.3 Core Services層</p><p>  應(yīng)用程序提供基礎(chǔ)系統(tǒng)服務(wù)??赡軕?yīng)用程序并不直接使用這些服務(wù)。但它們是系統(tǒng)很多部分懶以建構(gòu)的基礎(chǔ)。</p><p>  Foundation框架:為Core Foundation框架的許多功能提供Object_C封裝</p><p>  Core Fou

22、ndation框架:是一組C語(yǔ)言接口,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能</p><p>  Core Location框架:可用于定位某個(gè)設(shè)備經(jīng)緯度</p><p>  其他框架:CFNetWork框架、Core Data框架、Core Media框架、Core Telephony框架、Event Kit框架、Mobile Core Services框架、Quick Look

23、框架、Store Kit框架、System Configuration框架</p><p>  1.2.4 Core OS層</p><p>  Core層的底層功能是很多其他技術(shù)的構(gòu)建基礎(chǔ)。通常情況下,這些功能不會(huì)直接應(yīng)用與應(yīng)用程序,而是應(yīng)用與其他框架。但是,在直接處理安全事務(wù)或和某個(gè)外設(shè)通訊的時(shí)候,則必須要應(yīng)用到該層框架</p><p>  Accelerate

24、框架:iOS4.0引入了Accelerate框架,該框架的接口可用于執(zhí)行數(shù)字、大數(shù)字以及DSP算法</p><p>  External Accessory框架:iOS3.0引入了External Accessory框架,通過(guò)它來(lái)支持iOS設(shè)備與綁定附件通信。附件可以通過(guò)一個(gè)30針的基座接口和設(shè)備連接,也可以通過(guò)藍(lán)牙連接</p><p>  Security框架:iOS系統(tǒng)不但提供內(nèi)建的安

25、全功能,還提供Security框架用于保證應(yīng)用程序所管理之?dāng)?shù)據(jù)的安全。該框架提供的接口可用于管理證書(shū)、公鑰、私鑰以及信任策略。它支持生成加密的安全偽隨機(jī)數(shù)。同時(shí),它也支持對(duì)證書(shū)和Keychain迷藥進(jìn)行保存,是用戶敏感數(shù)據(jù)的安全倉(cāng)庫(kù)</p><p>  1.3 Object_C的介紹</p><p>  Objective-C是非常“實(shí)際”的語(yǔ)言。它使用一個(gè)用C寫成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)

26、用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反,ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)(通常沒(méi)附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來(lái)開(kāi)啟一個(gè)窗口的情況相反。</p><p><b>  擴(kuò)展的關(guān)鍵字:</b></p><p>  @interface,類型聲明,類似于c++中的class,區(qū)

27、別在于Object c中的聲明與實(shí)現(xiàn)是強(qiáng)制分開(kāi)的,@interface關(guān)鍵字用于類型的聲明,包括數(shù)據(jù)成員、方法聲明、屬性等。方法的參數(shù)傳遞采用中綴符的形式,利用“:”分割參數(shù)名和被傳遞參數(shù),類型的聲明以@interface開(kāi)頭,以@end結(jié)束。</p><p>  @implementation,對(duì)應(yīng)于@interface的類型聲明,@implementation表示一個(gè)類型的實(shí)現(xiàn)過(guò)程,同樣以@end結(jié)束。<

28、;/p><p>  @class,是一個(gè)前向引用聲明,類似于C++中的friend友元聲明,其作用是告訴編譯器其后面的字段代表一個(gè)類型名稱,盡管不知道類型的具體實(shí)現(xiàn),但是只需要將其作為一個(gè)類型名稱處理即可。通常在使用復(fù)合的結(jié)構(gòu)時(shí)可以采用@class來(lái)減少頭文件的相互引用,如果出現(xiàn)循環(huán)依賴,則需要依靠@class來(lái)避免引用的死循環(huán)。</p><p>  @property,提供了外界對(duì)成員變量的

29、訪問(wèn)接口,其本質(zhì)是為某一個(gè)屬性提供set和get操作。</p><p>  @synthesize,與@property對(duì)應(yīng),將一個(gè)外在屬性與成員變量相關(guān)聯(lián),定義在 @implementation中,如果屬性名與變量名一致則可以省略變量名。</p><p>  Object_C采用引用計(jì)數(shù)的方法進(jìn)行內(nèi)存管理,由于所有的對(duì)象都集成與NSObject,因此所有的對(duì)象都可以接受NSObject的

30、三個(gè)方法:</p><p>  retain方法將對(duì)象的引用計(jì)數(shù)加一并返回該對(duì)象,release將引用計(jì)數(shù)減一,retainCount方法返回對(duì)象當(dāng)前的引用計(jì)數(shù)。當(dāng)采用new、alloc、copy方法創(chuàng)建一個(gè)對(duì)象時(shí),它的引用計(jì)數(shù)被置為1,如果程序中對(duì)該對(duì)象進(jìn)行操作,則應(yīng)根據(jù)需要,通過(guò)調(diào)用retain和release方法來(lái)保證該對(duì)象在不需要的時(shí)候被清除。當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)被置為0后,系統(tǒng)會(huì)自動(dòng)向?qū)ο蟀l(fā)送一個(gè)dea

31、lloc消息,將其占有的資源釋放。通常情況下,如果一個(gè)對(duì)象的初始化過(guò)程調(diào)用了其他資源,則應(yīng)該重寫改對(duì)象的dealloc過(guò)程,保證在對(duì)象的銷毀期正確釋放這些資源。</p><p>  類別是為現(xiàn)有的類提供一個(gè)新的方法的方法,即使沒(méi)有一個(gè)類的源代碼,仍然可以向類中添加一個(gè)方法以方便使用。類別的主要目的有3個(gè):將類的實(shí)現(xiàn)分散到多個(gè)不同的文件或框架中,創(chuàng)建對(duì)私有方法的前向引用,向?qū)ο筇砑臃钦絽f(xié)議。</p>

32、<p>  Object C中的協(xié)議類似于java中的接口,通過(guò)@protocol關(guān)鍵字定義一個(gè)或多個(gè)需要遵從協(xié)議的對(duì)象實(shí)現(xiàn)的方法。</p><p><b>  總體設(shè)計(jì)</b></p><p>  2.1 系統(tǒng)各個(gè)功能模塊總體設(shè)計(jì)</p><p>  iOS開(kāi)發(fā)是基于Object_C語(yǔ)言,使用iOS SDK在Xcode開(kāi)發(fā)環(huán)境下進(jìn)

33、行開(kāi)發(fā),其應(yīng)用與iOS系統(tǒng)的移動(dòng)設(shè)備上,本課題主要是本地應(yīng)用,加入少量網(wǎng)絡(luò)解析和分享功能。</p><p>  2.1.1 功能總體設(shè)計(jì)</p><p>  根據(jù)系統(tǒng)功能分析,可以分為五大模塊:視頻解說(shuō)、視頻緩存、直播、Dota2、設(shè)置。</p><p>  圖2-1 功能總體設(shè)計(jì)圖</p><p>  2.1.2 主要頁(yè)面設(shè)計(jì)</p&

34、gt;<p>  頁(yè)面一覽表顯示出了本程序的主要頁(yè)面以及設(shè)計(jì)的類名,概要的描述了頁(yè)面的主要功能。</p><p>  表 2-1-2 頁(yè)面一覽表</p><p>  2.1.3功能一覽表</p><p>  功能一覽表顯示出了項(xiàng)目的主要功能的實(shí)現(xiàn),以及所需技術(shù)或所需添加的第三方SDK,簡(jiǎn)要的描述了功能概要。</p><p>  

35、表 2-1-3 功能一覽表</p><p>  2.2 iOS的View的生命周期</p><p>  ViewController的職責(zé),對(duì)內(nèi)管理與之關(guān)聯(lián)的View,對(duì)外跟其他的ViewController通信和協(xié)調(diào)。對(duì)于與之關(guān)聯(lián)的View,ViewController總是在需要的時(shí)候才加載視圖,并在不需要的時(shí)候卸載視圖,所以也同時(shí)擔(dān)當(dāng)了管理應(yīng)用資源的責(zé)任。理解ViewControlle

36、r的生命周期,能夠有效的管理應(yīng)用資源,ViewController的生命周期圖:</p><p>  圖2-2 UIView生命周期圖</p><p><b>  第三章 詳細(xì)設(shè)計(jì)</b></p><p><b>  3.1 基礎(chǔ)類設(shè)計(jì)</b></p><p>  基礎(chǔ)類中設(shè)計(jì)了一些公用方法功能

37、,以及一些界面的實(shí)例化,主要有網(wǎng)絡(luò),網(wǎng)絡(luò)監(jiān)測(cè),頁(yè)面坐標(biāo)大小設(shè)置。</p><p><b>  微信分享</b></p><p>  微信分享,存在Dota2模塊中的英雄詳情頁(yè)面和物品詳情頁(yè)面,英雄詳情頁(yè)面,主要分享英雄的圖片以及英雄的簡(jiǎn)介,而物品詳情頁(yè)面分享的是物品的圖片以及物品的簡(jiǎn)介,分享到微信朋友圈,沒(méi)有設(shè)置鏈接。</p><p><

38、;b>  網(wǎng)絡(luò)監(jiān)測(cè)</b></p><p>  網(wǎng)絡(luò)監(jiān)測(cè),監(jiān)測(cè)有沒(méi)有網(wǎng)絡(luò),如果沒(méi)有網(wǎng)絡(luò)則網(wǎng)絡(luò)不請(qǐng)求數(shù)據(jù),只要有網(wǎng)絡(luò)不管是3G還是Wifi都進(jìn)行網(wǎng)絡(luò)請(qǐng)求。</p><p>  3.2 項(xiàng)目所需系統(tǒng)類庫(kù)</p><p>  CoreGraphicss.framework</p><p>  (CoreGraphics.frame

39、work)包含Quartz 2D繪圖API接口。該框架基于C接口,提供繪圖功能。所有Xcode創(chuàng)建的工程都自帶的一個(gè)類庫(kù)。</p><p>  Foundation.framework 和 UIKit.framework</p><p>  ios中,Cocoa的框架中最重要最基本的兩個(gè)框架是Foundation和UIkit,和界面無(wú)關(guān)的基本類的屬于Foundation框架,UIKit框架

40、是和界面相關(guān)的。 </p><p>  3)AVFoundation.framework</p><p>  該框架包含的Object_C類可用于播放音頻內(nèi)容。</p><p>  4)QuartzCore.framework</p><p>  Quartz核心框架(QuartzCore.framework)包含CoreAnimatio

41、n接口,Core Animation是一種高級(jí)動(dòng)畫和合成技術(shù)。</p><p>  MediaPlayer.framework</p><p>  用于視頻的播放框架。</p><p>  Libsqlite3.dylib</p><p><b>  數(shù)據(jù)庫(kù)的框架。</b></p><p>  7

42、)MobileCoreServices.framework;</p><p>  Mobile Core Services 框架 iOS 3.0引入了Mobile Core Services框架 (MobileCoreServices.framework)。此框架定義統(tǒng)一類型標(biāo)識(shí)符 (UTIs)使用的底層類型。</p><p>  8)CFNetwork.framework;</p

43、><p>  CFNetwork 只是對(duì) BSD socket 的進(jìn)行了輕量級(jí)的封裝,但在 iOS 中使用 CFNetwork 有一個(gè)顯著的好處,那就是 CFNetwork 與系統(tǒng)級(jí)別的設(shè)置(如:天線設(shè)置)以及 run-loop 結(jié)合得很好。每一個(gè)線程都有自己的 run-loop,因此我們可以 CFNetwork 當(dāng)中事件源加入到 run-loop 中,這樣就可以在線程的 run-loop 中處理網(wǎng)絡(luò)事件了。BTW,

44、大名鼎鼎的 ASIHttpRequest 庫(kù)就是基于 CFNetwork 封裝的。</p><p>  3.3 第三方SDK</p><p>  數(shù)據(jù)庫(kù)解析 FMDB</p><p>  微信分享 libWeChatSDK.a,WXApi.h,WXApiObject.h </p><p>  網(wǎng)絡(luò)監(jiān)測(cè) Reachability

45、</p><p>  3.4 App運(yùn)行首頁(yè)面</p><p>  3.4.1 視頻解說(shuō)</p><p>  圖 3-4-1-1 視頻解說(shuō)人員列表</p><p>  首頁(yè)面是整個(gè)程序的根視圖,可以進(jìn)入功能界面,并包括整個(gè)程序的設(shè)置頁(yè)面,點(diǎn)擊頁(yè)面中最下面的圖標(biāo)可以進(jìn)入別的頁(yè)面。</p><p>  表3-4-1-2 頁(yè)

46、面參數(shù)、功能表</p><p>  表3-4-1-3 頁(yè)面動(dòng)作事件表</p><p><b>  關(guān)鍵代碼:</b></p><p>  UITabBar創(chuàng)建關(guān)鍵代碼:</p><p>  NSString *path = [[NSBundle mainBundle]pathForResource:@"Data

47、_TabBar" ofType:@"plist"]; //設(shè)置plist文件的路徑</p><p>  NSDictionary*dic=[NSDictionarydictionaryWithContentsOfFile:path]; //把plist文件轉(zhuǎn)為字典</p><p>  NSMutableArray *controllerArray =

48、[[NSMutableArray alloc]init]; //初始化可變數(shù)組</p><p>  for (int i = 0; i < dic.count; i ++) //遍歷字典</p><p><b>  {</b></p><p>  NSString* key = [NSString stringWithFormat:@&

49、quot;item %d",i];</p><p>  NSDictionary* dict = [dic objectForKey:key];</p><p>  NSString *className = [dict objectForKey:CLASS_NAME_KEY];</p><p>  Class class = NSClassFromStr

50、ing(className);</p><p>  if (class) {</p><p>  RootViewController *rvc = [[class alloc]initWithDictionary:dict];</p><p>  UINavigationController *nc = [[UINavigationController alloc

51、]initWithRootViewController:rvc];</p><p>  [controllerArray addObject:nc]; //把導(dǎo)航條添加到數(shù)組中</p><p><b>  }</b></p><p><b>  }</b></p><p>  UITabBarCo

52、ntroller *tbc = [[[UITabBarController alloc]init]autorelease];//初始化TabBar</p><p>  tbc.viewControllers = controllerArray; </p><p>  self.window.rootViewController = tbc; //把TabBar添加到底層頁(yè)面上</p

53、><p>  視頻解說(shuō)跳轉(zhuǎn)視頻詳情頁(yè)面代碼:</p><p>  VideoItem *item = [self.mDataArray objectAtIndex:indexPath.row];</p><p>  VideoDetailViewController *vdvc = [[VideoDetailViewController alloc]init];<

54、/p><p>  vdvc.uid = item.id;//傳參</p><p>  vdvc.name = item.name;</p><p>  [vdvc setHidesBottomBarWhenPushed:YES]; //</p><p>  [self.navigationController pushViewControlle

55、r:vdvc animated:YES];//頁(yè)面跳轉(zhuǎn)</p><p>  3.4.2 視頻解說(shuō)詳情頁(yè)面</p><p>  圖 3-4-2-1 視頻解說(shuō)詳情頁(yè)面</p><p>  視頻解說(shuō)詳情頁(yè)面實(shí)現(xiàn)上拉加載,可以瀏覽此解說(shuō)的所有近期視頻。</p><p>  表3-4-2-2 視屏解說(shuō)詳情頁(yè)面參數(shù)、功能表</p><

56、p>  表3-4-2-3 視頻解說(shuō)詳情頁(yè)面動(dòng)作事件表</p><p><b>  關(guān)鍵代碼:</b></p><p>  if (scrollView.contentOffset.y + scrollView.frame.size.height </p><p>  >= scrollView.contentSize.height)

57、 {</p><p>  if (isRefresh == NO) {</p><p>  isRefresh = YES;</p><p>  _currentPage += 10;</p><p>  NSString *url = [NSString stringWithFormat:</p><p>  Vid

58、eo_Detail_Url,_uid,_currentPage];</p><p>  [[LCHttpManager sharedManager] addGetTask:url </p><p>  Tag:Video_Detail_tag]; //網(wǎng)絡(luò)請(qǐng)求</p><p>  [self addMessage:url selector:@selector(upd

59、ateData:)];</p><p><b>  }</b></p><p><b>  }</b></p><p>  3.4.3 視頻播放</p><p>  圖 3-4-3-1 視頻播放</p><p>  主要是視頻播放功能。</p><p>

60、;  表3-4-3-2 視頻播放頁(yè)面參數(shù)、功能表</p><p>  表3-4-3-3 視頻播放頁(yè)面動(dòng)作事件表</p><p><b>  關(guān)鍵代碼:</b></p><p>  AVURLAsset* asset = [AVURLAsset assetWithURL:url];</p><p>  [asset loa

61、dValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler:^{</p><p>  AVKeyValueStatus status = [asset statusOfValueForKey:@"tracks" error:nil];</p><p&

62、gt;  if (status == AVKeyValueStatusLoaded) {//判斷狀態(tài)</p><p>  AVPlayerItem*playerItem= [AVPlayerItem playerItemWithAsset:asset];</p><p>  _player = [[AVPlayer alloc]initWithPlayerItem:playerItem];

63、</p><p>  [_playerView setPlayer:_player];//關(guān)聯(lián)播放器和屏幕</p><p>  [_player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_queue_create(0, 0) usingBlock:^(CMTime time){//設(shè)置進(jìn)度 CMTi

64、me 幀數(shù) 幀率</p><p>  CMTime currentTime = _player.currentItem.currentTime;//當(dāng)前時(shí)間</p><p>  CMTime duration = _player.currentItem.duration;</p><p>  if (CMTimeGetSeconds(duration) >

65、0.0) {</p><p>  Float pro= CMTimeGetSeconds(currentTime)/CMTimeGetSeconds(duration);//進(jìn)度</p><p>  dispatch_async(dispatch_get_main_queue(), ^{</p><p>  [_proSilder setValue:pro anim

66、ated:YES];</p><p>  [_playerViewTop.timeLabel reloadInputViews];</p><p><b>  });</b></p><p><b>  }</b></p><p><b>  }</b></p>

67、<p><b>  3.5 視頻緩存</b></p><p>  3-8-1 視頻緩存頁(yè)面</p><p>  視頻緩存是緩存視頻下載完成以及沒(méi)有完成的下載管理頁(yè)面。</p><p>  表3-5-1-2 視頻緩存頁(yè)面參數(shù)、功能表</p><p>  表3-5-1-3 視頻緩存頁(yè)面動(dòng)作事件表</p>

68、<p><b>  關(guān)鍵代碼:</b></p><p>  - (void)removeAllUser{</p><p>  BOOL res = [_db open]; //打開(kāi)數(shù)據(jù)庫(kù)</p><p>  if (res == NO) {</p><p>  NSLog(@"打開(kāi)失敗"

69、);</p><p><b>  }</b></p><p>  FMResultSet* set = [_db executeQuery:@"select * from User"]; //通過(guò)用戶名刪除所有數(shù)據(jù)庫(kù)</p><p>  while ([set next]) { //遍歷刪除</p><p

70、>  NSString *titleName = [set stringForColumn:@"titleName"];</p><p>  if (titleName) {</p><p>  res = [_db executeUpdate:@"delete from User where titleName = ?",titleName]

71、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.6 直播</b></p><p>  3-6-1 直播的列表</p><p>  表3-6-2 直播列表參數(shù)、功能表</p>

72、<p>  表3-6-3 直播頁(yè)面動(dòng)作事件表</p><p>  (直播視頻播放同視頻播放頁(yè)面的播放)</p><p>  3.7 Dota2 英雄介紹和物品介紹</p><p>  3-7-1 Dota2的列表</p><p>  3.7.1 Dota2 英雄介紹</p><p>  圖 3-7-1-1

73、Dota2英雄介紹</p><p>  主要把英雄分為3中類型:力量英雄、敏捷英雄、智力英雄。可以點(diǎn)擊任意Cell查看</p><p>  表3-7-1-2 英雄列表頁(yè)面參數(shù)、功能表</p><p>  表3-7-1-3 英雄列表頁(yè)面動(dòng)作事件表</p><p>  圖 3-7-1-4 Dota2英雄的詳細(xì)介紹</p><p

74、>  英雄的初始屬性,英雄的背景介紹以及英雄的技能的冷卻時(shí)間,技能各個(gè)等級(jí)的傷害。</p><p>  表3-7-1-5 英雄詳情列表頁(yè)面參數(shù)、功能表</p><p>  圖3-7-1-6 英雄詳情列表頁(yè)面動(dòng)作事件表</p><p><b>  關(guān)鍵代碼:</b></p><p>  自適應(yīng)Cell的代碼:<

75、/p><p>  HeroItem *item = [self.mDataArray objectAtIndex:0];</p><p>  CGSize size = [item.bio sizeWithFont:[UIFont systemFontOfSize:18.0]</p><p>  constrainedToSize:CGSizeMake(300, 10

76、00) </p><p>  lineBreakMode:UILineBreakModeCharacterWrap];</p><p>  return size.height + 30;//自適應(yīng)每個(gè)Cell的高</p><p><b>  分享代碼:</b></p><p>  WXMediaMessage *mes

77、sage = [WXMediaMessage message];</p><p>  HeroItem *item = [self.mDataArray objectAtIndex:0];</p><p>  message.title = item.bio; //把英雄背景簡(jiǎn)介添加到消息中</p><p>  [message setThumbImage:[UI

78、Image imageNamed:item.u]]; //把圖品添加到消息中</p><p>  WXWebpageObject *ext = [WXWebpageObject object];</p><p>  ext.webpageUrl = @"www.baidu.com"; //測(cè)試鏈接</p><p>  message.media

79、Object = ext;</p><p>  SendMessageToWXReq* req = [[[SendMessageToWXReq alloc] init]autorelease];</p><p>  req.bText = NO;</p><p>  req.message = message;</p><p>  req.s

80、cene = WXSceneTimeline;</p><p>  [WXApi sendReq:req];</p><p>  3.7.2 Dota2 物品的介紹</p><p>  圖 3-7-2-1 Dota2物品的介紹</p><p>  模仿Dota2中物品商店的道具擺放??梢宰笥摇⑸舷峦蟿?dòng)。</p><p>

81、;  圖 3-7-2-2 Dota2物品的詳細(xì)介紹</p><p>  詳細(xì)介紹了每個(gè)道具的名稱、所需價(jià)格以及具體的作用。比如:蝴蝶這個(gè)道具就是攻擊以及閃避為一體的極品道具。</p><p>  表3-7-2-3 物品頁(yè)面參數(shù)、功能表</p><p>  表3-7-2-4 物品頁(yè)面動(dòng)作事件表</p><p><b>  關(guān)鍵代碼:&

82、lt;/b></p><p><b>  JSON解析代碼:</b></p><p>  NSString *path = [[NSBundle mainBundle]pathForResource:@"item" </p><p>  ofType:@"json"];</p><

83、;p>  NSURL *url = [NSURL fileURLWithPath:path];</p><p>  NSString *jsonStr = [NSString stringWithContentsOfURL:url </p><p>  encoding:NSUTF8StringEncoding error:nil];</p><p>  NS

84、Data *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; </p><p>  NSDictionary *dict = [NSJSONSerialization JSONObject</p><p>  WithData:jsonData options:0 error:nil];</p><

85、;p><b>  分享代碼:</b></p><p> ?。ㄅc上面的英雄分享類似)</p><p><b>  3.8 設(shè)置</b></p><p>  對(duì)系統(tǒng)進(jìn)行設(shè)置,可以查看工程所占的空間,以及剩余空間,可以查詢Dota在11對(duì)戰(zhàn)平臺(tái)的天梯分?jǐn)?shù)和天梯相關(guān)的數(shù)據(jù)。可以發(fā)送反饋意見(jiàn),給我評(píng)分等一系列功能。</p

86、><p>  圖 3-8-1 設(shè)置頁(yè)面介紹</p><p>  表3-8-2 設(shè)置頁(yè)面參數(shù)、功能表</p><p>  圖3-8-3 設(shè)置頁(yè)面動(dòng)作事件表</p><p><b>  關(guān)鍵代碼:</b></p><p>  - (NSNumber *)freeDiskSpace //檢測(cè)空閑內(nèi)存的空間

87、大小</p><p><b>  {</b></p><p>  NSDictionary *fattributes = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];</p><p>  return [fattributes obj

88、ectForKey:NSFileSystemFreeSize];</p><p><b>  }</b></p><p>  - (NSNumber *)totalDiskSpace //檢測(cè)總的內(nèi)存的空間大小</p><p><b>  {</b></p><p>  NSDictionary *

89、fattributes = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];</p><p>  return [fattributes objectForKey:NSFileSystemSize];</p><p><b>  }</b></p>

90、<p><b>  3.9系統(tǒng)測(cè)試</b></p><p>  系統(tǒng)測(cè)試時(shí)保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵步驟,是對(duì)系統(tǒng)開(kāi)發(fā)過(guò)程中的系統(tǒng)分析、系統(tǒng)設(shè)計(jì)以及實(shí)施的最后復(fù)查。根據(jù)測(cè)試的概念和目的,進(jìn)行信息系統(tǒng)測(cè)試。</p><p>  3.9.1 功能模塊測(cè)試</p><p>  在視頻播放模塊,測(cè)試視頻播放是否流暢,是否能夠進(jìn)行播放。<

91、;/p><p>  在解析Json中,數(shù)據(jù)是否可以從網(wǎng)絡(luò)獲取,以及回調(diào)數(shù)據(jù)是否回調(diào)成功。</p><p>  上拉刷新,下拉加載是否實(shí)現(xiàn)功能。</p><p>  在完成逐個(gè)模塊測(cè)試后,開(kāi)始對(duì)系統(tǒng)進(jìn)行驗(yàn)收測(cè)試,運(yùn)行該系統(tǒng),在運(yùn)行過(guò)程中查找出現(xiàn)的錯(cuò)誤</p><p>  3.9.2 功能整體測(cè)試</p><p>  在安裝好

92、配置環(huán)境的電腦上測(cè)試,剛開(kāi)始出現(xiàn)出現(xiàn)屏幕混亂,經(jīng)過(guò)反復(fù)修改,現(xiàn)在已經(jīng)能正常播放視頻。用Xcode上自帶的監(jiān)測(cè)內(nèi)存工具Instrument ,檢測(cè)出多處內(nèi)存泄露問(wèn)題,都已修改。最后經(jīng)過(guò)反復(fù)測(cè)試,修改,基本功能實(shí)現(xiàn)。</p><p><b>  第四章 結(jié)論和致謝</b></p><p><b>  結(jié)論</b></p><p&g

93、t;  本次畢業(yè)設(shè)計(jì)的主要方向是視頻播放及在iOS環(huán)境下實(shí)現(xiàn)。在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,我既學(xué)到了許多知識(shí),同時(shí)又鍛煉了自己的實(shí)際動(dòng)手能力。但由于本人水平有限在整個(gè)過(guò)程中不可避免地遇到了各種各樣的問(wèn)題,而且還存在著許多不足之處。總結(jié)起來(lái)有以下幾點(diǎn):</p><p>  對(duì)iOS開(kāi)發(fā)環(huán)境的基本知識(shí)和使用方法有了一定的了解和掌握。尤其是基于Object_C的應(yīng)用程序框架,它是進(jìn)行彩色圖像處理的關(guān)鍵。</p>

94、<p>  對(duì)視頻處理的內(nèi)容有了更加深入的認(rèn)識(shí)。</p><p>  由于能力所限在程序開(kāi)發(fā)過(guò)程中遇到了很多問(wèn)題,使得系統(tǒng)在進(jìn)行操作時(shí)受限。</p><p><b>  下一步規(guī)劃:</b></p><p>  實(shí)現(xiàn)邊下載.看以及Dota2物品合成功能以及英雄推薦裝.和對(duì)每個(gè)英雄的加點(diǎn)。</p><p>  

95、通過(guò)這次的課程論文,我深深的感受到了自身的不足。 </p><p><b>  教訓(xùn)反思: </b></p><p>  (1).學(xué)習(xí)與實(shí)踐的結(jié)合不當(dāng)。當(dāng)我進(jìn)行程序開(kāi)發(fā)的時(shí)候,發(fā)現(xiàn)以前學(xué)習(xí)的知識(shí)點(diǎn)到用時(shí)卻忘得一干二凈了,也只好重新學(xué)習(xí)基本知識(shí)了。如果以前把知識(shí)學(xué)得透徹點(diǎn),理解深刻點(diǎn),也許在開(kāi)發(fā)過(guò)程中可以縮短時(shí)間,提高效率。反思自我,歸其原因:不是當(dāng)

96、時(shí)的學(xué)習(xí)不夠認(rèn)真,而是缺乏對(duì)知識(shí)點(diǎn)的運(yùn)用實(shí)踐;對(duì)于像我這樣“半路出家”的編程人員來(lái)說(shuō),只是理解知識(shí)點(diǎn)是遠(yuǎn)遠(yuǎn)不夠的,如果當(dāng)時(shí)沒(méi)有經(jīng)過(guò)編譯、運(yùn)行、調(diào)試的過(guò)程,很快就會(huì)忘記的。 </p><p>  (2).學(xué)習(xí)目標(biāo)不專一。我們都知道在學(xué)習(xí)的時(shí)候是最忌諱這個(gè)還沒(méi)學(xué)明白就去學(xué)那個(gè)的,結(jié)果當(dāng)然是哪個(gè)也沒(méi)學(xué)明白。這個(gè)沒(méi)學(xué)好,就想用另一個(gè),造成學(xué)習(xí)不深入,學(xué)習(xí)效果不好。以后一點(diǎn)要記住此教訓(xùn)。</p>&

97、lt;p><b>  致謝</b></p><p>  踉踉蹌蹌地忙碌了幾個(gè)月,本設(shè)計(jì)在劉博老師的悉心指導(dǎo)和嚴(yán)格要求下已完成。由于能力和時(shí)間的關(guān)系,總是覺(jué)得有很多不盡人意的地方,譬如功能不全、外觀粗糙等問(wèn)題。可是,我又會(huì)有點(diǎn)自戀式地安慰自己:做一件事情,不必過(guò)于在乎最終的結(jié)果,可貴的是過(guò)程中的收獲。這次做論文的經(jīng)歷也會(huì)使我終身受益,我感受到做論文是要真真正正用心去做的一件事情,是真正的

98、自己學(xué)習(xí)的過(guò)程和研究的過(guò)程,沒(méi)有學(xué)習(xí)就不可能有研究的能力,沒(méi)有自己的研究,就不會(huì)有所突破,那也就不叫論文了。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵(lì)我繼續(xù)進(jìn)步。</p><p>  本設(shè)計(jì)在劉博老師的悉心指導(dǎo)和嚴(yán)格要求下業(yè)已完成,從課題選擇、方案論證到具體設(shè)計(jì)和調(diào)試,無(wú)不凝聚著劉老師的心血和汗水,在四年的本科學(xué)習(xí)和生活期間,也始終感受著導(dǎo)師的精心指導(dǎo)和無(wú)私的關(guān)懷,我受益匪淺。在此向劉博老師表示深深的感謝和崇高的敬意。

99、</p><p>  不積跬步何以至千里,本設(shè)計(jì)能夠順利的完成,也歸功于各位任課老師的認(rèn)真負(fù)責(zé),使我能夠很好的掌握和運(yùn)用專業(yè)知識(shí),并在設(shè)計(jì)中得以體現(xiàn)。正是有了他們的悉心幫助和支持,才使我的畢業(yè)論文工作順利完成,在此向,計(jì)算機(jī)系的全體老師表示由衷的謝意。感謝他們四年來(lái)的辛勤栽培。</p><p><b>  參考文獻(xiàn) </b></p><p

100、>  [1] Dave Mak(美) Jack Nutting(美) Jeff LaMarche(美)著.楊越 孫文磊等譯.ios5基礎(chǔ)教程[M].北京:人民郵電出版社. 2013:3 </p><p>  [2] Mark Dalrymple(美) Scott Knaster(

101、美)著.楊越 等譯.Objective-C基礎(chǔ)教程[M].北京:人民郵電出版社. 2012:7 </p><p>  [3] Stephen G.Kochan 著.林翼 范俊 朱奕欣 譯.Objective-C程序設(shè)計(jì)(第四版)[M].北京:電子工業(yè)出版社,2012:12 </p><p>

102、  [4] 虞斌著. Ios軟件開(kāi)發(fā)揭秘:iPhone&iPad企業(yè)應(yīng)用和游戲開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2011:1. </p><p>  [5] 克萊爾(美)著.李強(qiáng)譯.Objective-C2.0Mac和ios開(kāi)發(fā)實(shí)踐指南[M].北京:機(jī)械工業(yè)</p><p>  出版社,2011:1.  </p>

103、;<p>  [6] Brian W.Kernighan ,Deninis M Rirchie(美)著,徐寶文,李志(譯)The C Programming Language[M].北京:機(jī)械工業(yè)出版社2003:2. </p><p>  [7] 徐松林,黃猛著.cocos2D-x手機(jī)游戲開(kāi)發(fā)[M].

104、北京:人民郵電出版社. </p><p>  [8] Ron patton(美)著.王鈺,曹躍譯.軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2006:4. </p><p>  [9] 王水著.軟件工程[M].河南:河南科學(xué)技術(shù)出版社,2008:8. </p><p>  [10] 吳潔明著.軟件工程

105、實(shí)例教程[M].北京:清華大學(xué)出版社,2010:11. </p><p>  [11] 郭東恩著.數(shù)據(jù)庫(kù)原理及應(yīng)用[M].河南:河南科學(xué)技術(shù)出版社,2008:4. </p><p>  [12] Dan Pilone著.Head First iPhone Development[M].北京:東南大學(xué)出版社,20

106、12:1. </p><p>  [13] 薩丹著.iPhone開(kāi)發(fā)秘籍[M].北京:人民郵電出版社,2010:1. </p><p>  [14] 喬納森(美)著.AppStore掘金[M].北京:人民郵電出版社,2010:1. </p><p>  [15] 哈靈頓(美)著.iOS 4實(shí)戰(zhàn)[M

107、].北京:人民郵電出版社,2012:1. </p><p>  [16] 王志剛.編著應(yīng)用程序開(kāi)發(fā)攻略之iPhone特色傳感器應(yīng)用[M].北京:電子工業(yè)出版</p><p>  社,2011:2.  </p><p>  [17] Gene Backlin(美)著.岳紅 凌沖譯.iPhone&am

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論