版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PAGE 河北農(nóng)業(yè)大學(xué)本科畢業(yè)論文(設(shè)計(jì))題 目 : iOS下視頻點(diǎn)播App設(shè)計(jì)與實(shí)現(xiàn) 學(xué) 院 : 信息科學(xué)與技術(shù)學(xué)院 專 業(yè) 班 級(jí) : 軟件工程1001班 學(xué) 號(hào) : 學(xué) 生 姓 名 : 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 講師 二一四 年 六 月 一 日摘 要蘋果iOS是蘋果開發(fā)的手持設(shè)備操作系統(tǒng)。蘋果公司最早于2007年1月9日的Macworld大會(huì)上發(fā)布這個(gè)系統(tǒng),最初設(shè)計(jì)給iPhone使用,后來陸續(xù)套用到iPod touch、iPad以及Apple TV等蘋果產(chǎn)品上。近年來,隨著iphone和廣泛應(yīng)用,使許多企業(yè)發(fā)現(xiàn),手機(jī)業(yè)務(wù)價(jià)值,促使越來越多的人開始學(xué)習(xí)開發(fā)手機(jī)。蘋果手機(jī)軟件基于Obj
2、ect_C編程語言編程Xcode的環(huán)境下發(fā)展。手機(jī)軟件分為許多類型,包括視頻類手機(jī)軟件有很高的地位在手機(jī)軟件的發(fā)展。本文基于iOS開發(fā)平臺(tái)設(shè)計(jì)并且實(shí)現(xiàn)了一款手機(jī)視頻App,展示如何通過利用Object_C 的工具函數(shù)實(shí)現(xiàn)對(duì)視頻的各種處理。論述了視頻的播放,異步下載以及斷點(diǎn)播放。關(guān)鍵字:視頻播放 Dota Object_C AbstractApple iOS is the development of handheld devices operating system.Apple as early as January 9,2007 the Macworld conference this sy
3、stem,originally designed for use in iPhone,subsequently applied to the iPod touch,Apple,and Apple products such as Apple TV.In recent years, with the iphone and it is widely used, make many businesses found that mobile phone on business value, prompting more and more people begin to learn the develo
4、pment on mobile phones. Apple mobile phone software based on Object_C programming language under the environment of Xcode development programming. Mobile phone software is divided into many types, including video class mobile phone software have the very high status in the development of mobile phon
5、e software.This article is based on the iOS(Internetworking 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.KeywordsVideo Display Dota Object_C目錄TOC o 1-3
6、 h u HYPERLINK l _Toc26874 第一章 緒論 PAGEREF _Toc26874 5 HYPERLINK l _Toc28464 1.1 iOS系統(tǒng)概述 PAGEREF _Toc28464 5 HYPERLINK l _Toc25834 1.2 iOS系統(tǒng)的構(gòu)架 PAGEREF _Toc25834 5 HYPERLINK l _Toc19865 1.2.1 Cocoa Touch層 PAGEREF _Toc19865 5 HYPERLINK l _Toc19753 1.2.2 Media 層 PAGEREF _Toc19753 6 HYPERLINK l _Toc7189
7、 1.2.3 Core Services層 PAGEREF _Toc7189 6 HYPERLINK l _Toc5931 1.2.4 Core OS層 PAGEREF _Toc5931 6 HYPERLINK l _Toc15434 1.3 Object_C的介紹 PAGEREF _Toc15434 6 HYPERLINK l _Toc24573 第二章 總體設(shè)計(jì) PAGEREF _Toc24573 8 HYPERLINK l _Toc31008 2.1 系統(tǒng)各個(gè)功能模塊總體設(shè)計(jì) PAGEREF _Toc31008 8 HYPERLINK l _Toc10413 2.2 iOS的View的生
8、命周期 PAGEREF _Toc10413 9 HYPERLINK l _Toc21014 第三章 詳細(xì)設(shè)計(jì) PAGEREF _Toc21014 11 HYPERLINK l _Toc29404 3.1 基礎(chǔ)類設(shè)計(jì) PAGEREF _Toc29404 11 HYPERLINK l _Toc10743 3.2 項(xiàng)目所需系統(tǒng)類庫 PAGEREF _Toc10743 13 HYPERLINK l _Toc10003 3.3 第三方SDK PAGEREF _Toc10003 13 HYPERLINK l _Toc15467 3.4 App運(yùn)行首頁面 PAGEREF _Toc15467 14 HYPER
9、LINK l _Toc14992 3.4.1 視頻解說 PAGEREF _Toc14992 14 HYPERLINK l _Toc6405 3.4.2 視頻解說詳情頁面 PAGEREF _Toc6405 16 HYPERLINK l _Toc30887 3.4.3 視頻播放 PAGEREF _Toc30887 17 HYPERLINK l _Toc6068 3.5 視頻緩存 PAGEREF _Toc6068 18 HYPERLINK l _Toc13283 3.6 直播 PAGEREF _Toc13283 20 HYPERLINK l _Toc6594 3.7 Dota2 英雄介紹和物品介紹
10、PAGEREF _Toc6594 21 HYPERLINK l _Toc1427 3.7.1 Dota2 英雄介紹 PAGEREF _Toc1427 21 HYPERLINK l _Toc17349 3.7.2 Dota2 物品的介紹 PAGEREF _Toc17349 24 HYPERLINK l _Toc13932 3.8 設(shè)置 PAGEREF _Toc13932 26 HYPERLINK l _Toc52 3.9系統(tǒng)測試 PAGEREF _Toc52 28 HYPERLINK l _Toc341 3.9.1 功能模塊測試 PAGEREF _Toc341 28 HYPERLINK l _T
11、oc22393 3.9.2 功能整體測試 PAGEREF _Toc22393 28 HYPERLINK l _Toc10664 第四章 結(jié)論和致謝 PAGEREF _Toc10664 29 緒論1.1 iOS系統(tǒng)概述iOS操作系統(tǒng)是iPhont、ipod touch以及iPad設(shè)備的核心。構(gòu)架iOS平臺(tái)的知識(shí)與Mac OS X系統(tǒng)同出一轍,iOS平臺(tái)的許多開發(fā)工具和開發(fā)技術(shù)也源自Mac OS X,都是以UNIX為基礎(chǔ)。但開發(fā)者無需具備Mac OS X的開發(fā)經(jīng)驗(yàn)就可以編寫iOS的應(yīng)用程序。iPhone軟件開發(fā)包(SDK)為著手創(chuàng)建iOS應(yīng)用程序提供所需要的一切。1.2 iOS系統(tǒng)的構(gòu)架iOS架構(gòu)
12、和Mac OS的基礎(chǔ)架構(gòu)相似。站在高級(jí)層次來看,iOS扮演底層硬件和應(yīng)用程序的中介。創(chuàng)建的應(yīng)用程序不能直接訪問硬件,而需要和系統(tǒng)接口進(jìn)行交互。系統(tǒng)接口轉(zhuǎn)而又去和適當(dāng)?shù)尿?qū)動(dòng)打交道。這樣的抽象可以防止應(yīng)用程序改變底層硬件。iOS實(shí)現(xiàn)可以看作是多個(gè)層的集合,底層為所有應(yīng)用程序提供基礎(chǔ)服務(wù),高層則包含一些復(fù)雜巧妙的服務(wù)和技術(shù)。 圖1-1 iOS的層1.2.1 Cocoa Touch層Cocoa Touch層提供了基本的系統(tǒng)行為支持,而且將你的工作量降到最低,當(dāng)你想要實(shí)現(xiàn)更為復(fù)雜的行為和界面時(shí),才考慮向下層探尋技術(shù)支持。UIKit框架:UIKit提供了一些程序運(yùn)行所必須的關(guān)鍵對(duì)象,使得App能夠捕捉用戶
13、輸入和在屏幕上顯示內(nèi)容MapKit框架:iOS3.0引入該框架,該框架提供一個(gè)可被嵌入到應(yīng)用程序的地圖界面,該界面包含一個(gè)可以滾動(dòng)的地圖視圖Address Book UI框架:iOS3.0引入該框架,可以利用該框架撰寫電子郵件,并將其放入到用戶的發(fā)件箱排隊(duì)等候發(fā)送Message UI框架:顯示創(chuàng)建或者編輯聯(lián)系人的標(biāo)準(zhǔn)系統(tǒng)界面1.2.2 Media 層包含圖形、音頻、視頻等技術(shù)。Quartz Core框架:包含Core Animation 是高級(jí)動(dòng)畫制作和混合技術(shù),它使用經(jīng)過優(yōu)化的渲染路徑實(shí)現(xiàn)復(fù)雜的動(dòng)畫和視覺效果Media Player框架:應(yīng)用程序播放視頻和音頻內(nèi)容AV Foundation框
14、架:該框架包含的Object_C類可用于播放音頻內(nèi)容Core Graphics框架:(CoreGraphics.framework)包含Quartz 2D繪圖API接口。該框架基于C接口,提供繪圖功能1.2.3 Core Services層應(yīng)用程序提供基礎(chǔ)系統(tǒng)服務(wù)??赡軕?yīng)用程序并不直接使用這些服務(wù)。但它們是系統(tǒng)很多部分懶以建構(gòu)的基礎(chǔ)。Foundation框架:為Core Foundation框架的許多功能提供Object_C封裝Core Foundation框架:是一組C語言接口,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能Core Location框架:可用于定位某個(gè)設(shè)備經(jīng)緯度其他框架:C
15、FNetWork框架、Core Data框架、Core Media框架、Core Telephony框架、Event Kit框架、Mobile Core Services框架、Quick Look框架、Store Kit框架、System Configuration框架1.2.4 Core OS層Core層的底層功能是很多其他技術(shù)的構(gòu)建基礎(chǔ)。通常情況下,這些功能不會(huì)直接應(yīng)用與應(yīng)用程序,而是應(yīng)用與其他框架。但是,在直接處理安全事務(wù)或和某個(gè)外設(shè)通訊的時(shí)候,則必須要應(yīng)用到該層框架Accelerate框架:iOS4.0引入了Accelerate框架,該框架的接口可用于執(zhí)行數(shù)字、大數(shù)字以及DSP算法Ex
16、ternal Accessory框架:iOS3.0引入了External Accessory框架,通過它來支持iOS設(shè)備與綁定附件通信。附件可以通過一個(gè)30針的基座接口和設(shè)備連接,也可以通過藍(lán)牙連接Security框架:iOS系統(tǒng)不但提供內(nèi)建的安全功能,還提供Security框架用于保證應(yīng)用程序所管理之?dāng)?shù)據(jù)的安全。該框架提供的接口可用于管理證書、公鑰、私鑰以及信任策略。它支持生成加密的安全偽隨機(jī)數(shù)。同時(shí),它也支持對(duì)證書和Keychain迷藥進(jìn)行保存,是用戶敏感數(shù)據(jù)的安全倉庫1.3 Object_C的介紹Objective-C是非?!皩?shí)際”的語言。它使用一個(gè)用C寫成、很小的HYPERLINK /
17、view/1032404.htm運(yùn)行庫,只會(huì)令HYPERLINK /view/330120.htm應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反,ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和HYPERLINK /view/76337.htmSmalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個(gè)窗口的情況相反。擴(kuò)展的關(guān)鍵字:interface,類型聲明,類似于c+中的class,區(qū)別在于Object c中的聲明與實(shí)現(xiàn)是強(qiáng)制分開的,interface關(guān)鍵字用于類型的聲明,包括數(shù)據(jù)成員、方法聲明、屬性等。方法的參數(shù)傳遞采用中綴
18、符的形式,利用“:”分割參數(shù)名和被傳遞參數(shù),類型的聲明以interface開頭,以end結(jié)束。implementation,對(duì)應(yīng)于interface的類型聲明,implementation表示一個(gè)類型的實(shí)現(xiàn)過程,同樣以end結(jié)束。class,是一個(gè)前向引用聲明,類似于C+中的friend友元聲明,其作用是告訴編譯器其后面的字段代表一個(gè)類型名稱,盡管不知道類型的具體實(shí)現(xiàn),但是只需要將其作為一個(gè)類型名稱處理即可。通常在使用復(fù)合的結(jié)構(gòu)時(shí)可以采用class來減少頭文件的相互引用,如果出現(xiàn)循環(huán)依賴,則需要依靠class來避免引用的死循環(huán)。property,提供了外界對(duì)成員變量的訪問接口,其本質(zhì)是為某一個(gè)
19、屬性提供set和get操作。synthesize,與property對(duì)應(yīng),將一個(gè)外在屬性與成員變量相關(guān)聯(lián),定義在 implementation中,如果屬性名與變量名一致則可以省略變量名。Object_C采用引用計(jì)數(shù)的方法進(jìn)行內(nèi)存管理,由于所有的對(duì)象都集成與NSObject,因此所有的對(duì)象都可以接受NSObject的三個(gè)方法: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ù)需要,通過調(diào)用retain和re
20、lease方法來保證該對(duì)象在不需要的時(shí)候被清除。當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)被置為0后,系統(tǒng)會(huì)自動(dòng)向?qū)ο蟀l(fā)送一個(gè)dealloc消息,將其占有的資源釋放。通常情況下,如果一個(gè)對(duì)象的初始化過程調(diào)用了其他資源,則應(yīng)該重寫改對(duì)象的dealloc過程,保證在對(duì)象的銷毀期正確釋放這些資源。類別是為現(xiàn)有的類提供一個(gè)新的方法的方法,即使沒有一個(gè)類的源代碼,仍然可以向類中添加一個(gè)方法以方便使用。類別的主要目的有3個(gè):將類的實(shí)現(xiàn)分散到多個(gè)不同的文件或框架中,創(chuàng)建對(duì)私有方法的前向引用,向?qū)ο筇砑臃钦絽f(xié)議。Object C中的協(xié)議類似于java中的接口,通過protocol關(guān)鍵字定義一個(gè)或多個(gè)需要遵從協(xié)議的對(duì)象實(shí)現(xiàn)的方法。
21、總體設(shè)計(jì)2.1 系統(tǒng)各個(gè)功能模塊總體設(shè)計(jì)iOS開發(fā)是基于Object_C語言,使用iOS SDK在Xcode開發(fā)環(huán)境下進(jìn)行開發(fā),其應(yīng)用與iOS系統(tǒng)的移動(dòng)設(shè)備上,本課題主要是本地應(yīng)用,加入少量網(wǎng)絡(luò)解析和分享功能。2.1.1 功能總體設(shè)計(jì)根據(jù)系統(tǒng)功能分析,可以分為五大模塊:視頻解說、視頻緩存、直播、Dota2、設(shè)置。 圖2-1 功能總體設(shè)計(jì)圖2.1.2 主要頁面設(shè)計(jì)頁面一覽表顯示出了本程序的主要頁面以及設(shè)計(jì)的類名,概要的描述了頁面的主要功能。表 2-1-2 頁面一覽表NO頁面名稱設(shè)計(jì)類名頁面概要1程序啟動(dòng)頁面RootViewController程序運(yùn)行后,最開始進(jìn)入的界面2視頻解說頁面VideoV
22、iewController可查看各個(gè)解說的視頻3視頻緩存頁面VideoCacheViewController下載存儲(chǔ)4直播頁面TvViewController觀看當(dāng)前能看到的視頻5Dota2頁面DotaViewControllerDota2的英雄簡介和物品簡介6設(shè)置頁面SettingViewController2.1.3功能一覽表功能一覽表顯示出了項(xiàng)目的主要功能的實(shí)現(xiàn),以及所需技術(shù)或所需添加的第三方SDK,簡要的描述了功能概要。表 2-1-3 功能一覽表NO功能名稱功能概要公共方法涉及頁面1視頻播放調(diào)用網(wǎng)上的視頻文件播放,使用自定義的AVPlayer否直播頁面和視頻解說頁面2網(wǎng)絡(luò)平臺(tái)分享使用微
23、信的第三方接口否Dota2頁面2.2 iOS的View的生命周期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é)任。理解ViewController的生命周期,能夠有效的管理應(yīng)用資源,ViewController的生命周期圖:圖2-2 UIView生命周期圖第三章 詳細(xì)設(shè)計(jì)3.1 基礎(chǔ)類設(shè)計(jì)基礎(chǔ)類中設(shè)計(jì)了一些公用方法功能,以及一些界面的實(shí)例化,主要有網(wǎng)絡(luò),網(wǎng)絡(luò)監(jiān)測,頁面坐標(biāo)大小設(shè)置。微信分享
24、微信分享,存在Dota2模塊中的英雄詳情頁面和物品詳情頁面,英雄詳情頁面,主要分享英雄的圖片以及英雄的簡介,而物品詳情頁面分享的是物品的圖片以及物品的簡介,分享到微信朋友圈,沒有設(shè)置鏈接。微信分享的AppKey: WXApi registerApp:wxd930ea5d5a258f4f;微信分享的驗(yàn)證: -(void) onResp:(BaseResp*)resp if(resp isKindOfClass:SendMessageToWXResp class) NSString *strMsg; if (resp.errCode = 0) strMsg = 分享到微信朋友圈成功; else s
25、trMsg = 分享到微信朋友圈失敗; UIAlertView *alert = UIAlertView alloc initWithTitle:strMsg message:nil delegate:nil cancelButtonTitle: 確定 otherButtonTitles:nil,nil; alert show; 微信分享: WXMediaMessage *message = WXMediaMessage message; message.title = myLab.text; /把myLabel的內(nèi)容添加到消息中message setThumbImage:UIImage im
26、ageNamed:icon2x.png;/設(shè)置發(fā)送的圖片樣式 WXWebpageObject *ext = WXWebpageObject object; ext.webpageUrl = ;/測試鏈接 message.mediaObject = ext; SendMessageToWXReq* req = SendMessageToWXReq alloc init; req.bText = NO; req.message = message; req.scene = WXSceneTimeline; /分享場景為朋友圈 WXApi sendReq:req;網(wǎng)絡(luò)監(jiān)測網(wǎng)絡(luò)監(jiān)測,監(jiān)測有沒有網(wǎng)絡(luò),如
27、果沒有網(wǎng)絡(luò)則網(wǎng)絡(luò)不請求數(shù)據(jù),只要有網(wǎng)絡(luò)不管是3G還是Wifi都進(jìn)行網(wǎng)絡(luò)請求。+ (BOOL) connectedToNetwork Reachability *r = Reachability reachabilityWithHostName:; /通過百度測試網(wǎng)絡(luò) BOOL isReachable=YES; switch (r currentReachabilityStatus) /當(dāng)前的鏈接狀態(tài) case NotReachable: / 沒有網(wǎng)絡(luò)連接 NSLog(沒有網(wǎng)絡(luò)); isReachable=NO; NSUserDefaults standardUserDefaults setOb
28、ject:NSNumber numberWithBool:isReachable forKey:isConnected; NSUserDefaults standardUserDefaults synchronize; break; case ReachableViaWWAN: / 使用3G網(wǎng)絡(luò) NSLog(正在使用3G網(wǎng)絡(luò)); break; case ReachableViaWiFi: / 使用WiFi網(wǎng)絡(luò) NSLog(正在使用wifi網(wǎng)絡(luò)); break; return isReachable; return YES;3.2 項(xiàng)目所需系統(tǒng)類庫CoreGraphicss.framework(
29、CoreGraphics.framework)包含Quartz 2D繪圖API接口。該框架基于C接口,提供繪圖功能。所有Xcode創(chuàng)建的工程都自帶的一個(gè)類庫。Foundation.framework 和 UIKit.frameworkios中,Cocoa的框架中最重要最基本的兩個(gè)框架是Foundation和UIkit,和界面無關(guān)的基本類的屬于Foundation框架,UIKit框架是和界面相關(guān)的。 3)AVFoundation.framework該框架包含的Object_C類可用于播放音頻內(nèi)容。4)QuartzCore.frameworkQuartz核心框架(QuartzCore.framew
30、ork)包含CoreAnimation接口,Core Animation是一種高級(jí)動(dòng)畫和合成技術(shù)。MediaPlayer.framework用于視頻的播放框架。Libsqlite3.dylib數(shù)據(jù)庫的框架。7)MobileCoreServices.framework;Mobile Core Services 框架 iOS 3.0引入了Mobile Core Services框架 (MobileCoreServices.framework)。此框架定義統(tǒng)一類型標(biāo)識(shí)符 (UTIs)使用的底層類型。8)CFNetwork.framework;CFNetwork 只是對(duì) BSD socket 的進(jìn)行了
31、輕量級(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,大名鼎鼎的 ASIHttpRequest 庫就是基于 CFNetwork 封裝的。3.3 第三方SDK數(shù)據(jù)庫解析 FMDB微信分享 libWeChatSDK.a,WXApi.h,WXApiObject.h 網(wǎng)絡(luò)監(jiān)測 Reachability 3.4 A
32、pp運(yùn)行首頁面3.4.1 視頻解說圖 3-4-1-1 視頻解說人員列表首頁面是整個(gè)程序的根視圖,可以進(jìn)入功能界面,并包括整個(gè)程序的設(shè)置頁面,點(diǎn)擊頁面中最下面的圖標(biāo)可以進(jìn)入別的頁面。表3-4-1-2 頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1VideoViewController 視頻解說員的名字列表 UIViewController 是2VideoCachViewController 下載視頻的詳情UIViewController 是3TvViewController 直播的介紹列表 UIViewController 是4DotaViewController Dot
33、a2英雄和物品綜合頁面UIViewController 是5SettingVIewController 用戶設(shè)置頁面UIViewController 是表3-4-1-3 頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2ViewWillAppearViewWillAppearViewWillAppear設(shè)置UITabBar分為5個(gè)大模塊 3AppDelegate系統(tǒng)自帶 頁面跳轉(zhuǎn)分別跳轉(zhuǎn)到各個(gè)模塊關(guān)鍵代碼:UITabBar創(chuàng)建關(guān)鍵代碼:NSString *path = NSBundle mainBundlepathForR
34、esource:Data_TabBar ofType:plist; /設(shè)置plist文件的路徑NSDictionary*dic=NSDictionarydictionaryWithContentsOfFile:path; /把plist文件轉(zhuǎn)為字典NSMutableArray *controllerArray = NSMutableArray allocinit; /初始化可變數(shù)組 for (int i = 0; i = scrollView.contentSize.height) if (isRefresh = NO) isRefresh = YES; _currentPage += 10;
35、 NSString *url = NSString stringWithFormat: Video_Detail_Url,_uid,_currentPage; LCHttpManager sharedManager addGetTask:url Tag:Video_Detail_tag; /網(wǎng)絡(luò)請求 self addMessage:url selector:selector(updateData:); 3.4.3 視頻播放圖 3-4-3-1 視頻播放主要是視頻播放功能。表3-4-3-2 視頻播放頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1PlayView視頻播放界面上
36、面的ViewUIView 是2PlayViewBottom視頻播放界面底部的ViewUIView 是3PlayMediaViewController播放界面UIViewController 是表3-4-3-3 視頻播放頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2playStarttouch播放按鈕開始播放視頻 3clickButtontouch返回按鈕返回視頻解說詳情頁面關(guān)鍵代碼:AVURLAsset* asset = AVURLAsset assetWithURL:url;asset loadValuesAsync
37、hronouslyForKeys:NSArray arrayWithObject:tracks completionHandler: AVKeyValueStatus status = asset statusOfValueForKey:tracks error:nil; if (status = AVKeyValueStatusLoaded) /判斷狀態(tài) AVPlayerItem*playerItem= AVPlayerItem playerItemWithAsset:asset; _player = AVPlayer allocinitWithPlayerItem:playerItem;
38、_playerView setPlayer:_player;/關(guān)聯(lián)播放器和屏幕 _player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_queue_create(0, 0) usingBlock:(CMTime time)/設(shè)置進(jìn)度 CMTime 幀數(shù) 幀率 CMTime currentTime = _player.currentItem.currentTime;/當(dāng)前時(shí)間 CMTime duration = _player.currentItem.duration; if (CMTimeGetSec
39、onds(duration) 0.0) Float pro= CMTimeGetSeconds(currentTime)/CMTimeGetSeconds(duration);/進(jìn)度 dispatch_async(dispatch_get_main_queue(), _proSilder setValue:pro animated:YES; _playerViewTop.timeLabel reloadInputViews;);3.5 視頻緩存3-8-1 視頻緩存頁面視頻緩存是緩存視頻下載完成以及沒有完成的下載管理頁面。表3-5-1-2 視頻緩存頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類
40、)項(xiàng)目名摘要類型必須1MediaItem視頻緩存模型NSObject 是2CacheCell視頻緩存CellUITableViewCell 是3VideoCacheViewController視頻緩存頁面UIViewController 是表3-5-1-3 視頻緩存頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2didselecttouch刪除按鈕刪除下載的所有關(guān)鍵代碼:- (void)removeAllUser BOOL res = _db open; /打開數(shù)據(jù)庫 if (res = NO) NSLog(打開失敗);
41、 FMResultSet* set = _db executeQuery:select * from User; /通過用戶名刪除所有數(shù)據(jù)庫 while (set next) /遍歷刪除 NSString *titleName = set stringForColumn:titleName; if (titleName) res = _db executeUpdate:delete from User where titleName = ?,titleName; 3.6 直播3-6-1 直播的列表表3-6-2 直播列表參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1TvIte
42、m直播模型NSObject 是2TvCell直播列表CellUITableViewCell 是3TvViewController直播頁面UIViewController 是表3-6-3 直播頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2didselecttouch頁面跳轉(zhuǎn)跳轉(zhuǎn)到直播播放頁面(直播視頻播放同視頻播放頁面的播放)3.7 Dota2 英雄介紹和物品介紹3-7-1 Dota2的列表3.7.1 Dota2 英雄介紹圖 3-7-1-1 Dota2英雄介紹主要把英雄分為3中類型:力量英雄、敏捷英雄、智力英雄??梢渣c(diǎn)擊
43、任意Cell查看表3-7-1-2 英雄列表頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1HeroDetailViewController英雄列表UIViewController 是表3-7-1-3 英雄列表頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2buttonClicktouch切換英雄類型按鈕切換英雄類型 3didselecttouch跳轉(zhuǎn)頁面跳轉(zhuǎn)到英雄詳情頁面圖 3-7-1-4 Dota2英雄的詳細(xì)介紹英雄的初始屬性,英雄的背景介紹以及英雄的技能的冷卻時(shí)間,技能各個(gè)等級(jí)的傷害。表3-7-
44、1-5 英雄詳情列表頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1BaseAttributeCell英雄基礎(chǔ)屬性所在Cell UITableViewCell 是2HeroItem英雄簡介模型NSObject 是3BaseAttribsItem英雄基礎(chǔ)屬性模型 NSObject 是4HeroIntroductionCell英雄背景介紹所在CellUITableViewCell 是5SkillItem英雄技能模型NSObject 是6SkillDetailCell英雄技能所在的CellUITableViewCell是7HeroDetailViewController英雄詳情
45、介紹頁面UIVIewController是8WXApi微信分享第三方NSObject是圖3-7-1-6 英雄詳情列表頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件2sharedtouch分享按鈕微信分享英雄圖片和背景介紹關(guān)鍵代碼:自適應(yīng)Cell的代碼:HeroItem *item = self.mDataArray objectAtIndex:0;CGSize size = item.bio sizeWithFont:UIFont systemFontOfSize:18.0 constrainedToSize:CGSiz
46、eMake(300, 1000) lineBreakMode:UILineBreakModeCharacterWrap;return size.height + 30;/自適應(yīng)每個(gè)Cell的高分享代碼: WXMediaMessage *message = WXMediaMessage message; HeroItem *item = self.mDataArray objectAtIndex:0; message.title = item.bio; /把英雄背景簡介添加到消息中 message setThumbImage:UIImage imageNamed:item.u; /把圖品添加到消
47、息中 WXWebpageObject *ext = WXWebpageObject object; ext.webpageUrl = ; /測試鏈接 message.mediaObject = ext; SendMessageToWXReq* req = SendMessageToWXReq alloc initautorelease; req.bText = NO; req.message = message; req.scene = WXSceneTimeline; WXApi sendReq:req;3.7.2 Dota2 物品的介紹圖 3-7-2-1 Dota2物品的介紹模仿Dota2
48、中物品商店的道具擺放??梢宰笥?、上下拖動(dòng)。圖 3-7-2-2 Dota2物品的詳細(xì)介紹詳細(xì)介紹了每個(gè)道具的名稱、所需價(jià)格以及具體的作用。比如:蝴蝶這個(gè)道具就是攻擊以及閃避為一體的極品道具。表3-7-2-3 物品頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1Items物品簡介模型NSObject 是2ItemsView物品詳情介紹所在的ViewUIView 是3RelicListViewController物品列表頁面UIViewController 是表3-7-2-4 物品頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁
49、面初始化初始化頁面控件2sharedtouch分享按鈕微信分享物品圖片和物品介紹關(guān)鍵代碼:JSON解析代碼:NSString *path = NSBundle mainBundlepathForResource:item ofType:json;NSURL *url = NSURL fileURLWithPath:path;NSString *jsonStr = NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil;NSData *jsonData = jsonStr dataUsingEnco
50、ding:NSUTF8StringEncoding; NSDictionary *dict = NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil;分享代碼:(與上面的英雄分享類似)3.8 設(shè)置對(duì)系統(tǒng)進(jìn)行設(shè)置,可以查看工程所占的空間,以及剩余空間,可以查詢Dota在11對(duì)戰(zhàn)平臺(tái)的天梯分?jǐn)?shù)和天梯相關(guān)的數(shù)據(jù)??梢园l(fā)送反饋意見,給我評(píng)分等一系列功能。圖 3-8-1 設(shè)置頁面介紹表3-8-2 設(shè)置頁面參數(shù)、功能表項(xiàng)目NO.頁面項(xiàng)目類型(繼承的類)項(xiàng)目名摘要類型必須1SettingViewController設(shè)置界面 U
51、ITableViewCell 是2SettingCell設(shè)置CellUITableViewCell 是3AddCell設(shè)置Cell列表 UITableViewCell 是4SettingContentCell設(shè)置CellUITableViewCell 是5SettingReturnCell設(shè)置CellUITableViewCell 是圖3-8-3 設(shè)置頁面動(dòng)作事件表項(xiàng)目NO.動(dòng)作處理名處理內(nèi)容項(xiàng)目動(dòng)作1ViewDidLoadViewDidLoad頁面初始化初始化頁面控件3didselecttouch跳轉(zhuǎn)頁面跳轉(zhuǎn)到下一級(jí)頁面關(guān)鍵代碼:- (NSNumber *)freeDiskSpace /檢測
52、空閑內(nèi)存的空間大小 NSDictionary *fattributes = NSFileManager defaultManager fileSystemAttributesAtPath:NSHomeDirectory(); return fattributes objectForKey:NSFileSystemFreeSize;- (NSNumber *)totalDiskSpace /檢測總的內(nèi)存的空間大小 NSDictionary *fattributes = NSFileManager defaultManager fileSystemAttributesAtPath:NSHomeDi
53、rectory(); return fattributes objectForKey:NSFileSystemSize;3.9系統(tǒng)測試系統(tǒng)測試時(shí)保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵步驟,是對(duì)系統(tǒng)開發(fā)過程中的系統(tǒng)分析、系統(tǒng)設(shè)計(jì)以及實(shí)施的最后復(fù)查。根據(jù)測試的概念和目的,進(jìn)行信息系統(tǒng)測試。3.9.1 功能模塊測試在視頻播放模塊,測試視頻播放是否流暢,是否能夠進(jìn)行播放。在解析Json中,數(shù)據(jù)是否可以從網(wǎng)絡(luò)獲取,以及回調(diào)數(shù)據(jù)是否回調(diào)成功。上拉刷新,下拉加載是否實(shí)現(xiàn)功能。在完成逐個(gè)模塊測試后,開始對(duì)系統(tǒng)進(jìn)行驗(yàn)收測試,運(yùn)行該系統(tǒng),在運(yùn)行過程中查找出現(xiàn)的錯(cuò)誤3.9.2 功能整體測試在安裝好配置環(huán)境的電腦上測試,剛開始出
54、現(xiàn)出現(xiàn)屏幕混亂,經(jīng)過反復(fù)修改,現(xiàn)在已經(jīng)能正常播放視頻。用Xcode上自帶的監(jiān)測內(nèi)存工具Instrument ,檢測出多處內(nèi)存泄露問題,都已修改。最后經(jīng)過反復(fù)測試,修改,基本功能實(shí)現(xiàn)。第四章 結(jié)論和致謝結(jié)論本次畢業(yè)設(shè)計(jì)的主要方向是視頻播放及在iOS環(huán)境下實(shí)現(xiàn)。在整個(gè)畢業(yè)設(shè)計(jì)過程中,我既學(xué)到了許多知識(shí),同時(shí)又鍛煉了自己的實(shí)際動(dòng)手能力。但由于本人水平有限在整個(gè)過程中不可避免地遇到了各種各樣的問題,而且還存在著許多不足之處。總結(jié)起來有以下幾點(diǎn):對(duì)iOS開發(fā)環(huán)境的基本知識(shí)和使用方法有了一定的了解和掌握。尤其是基于Object_C的應(yīng)用程序框架,它是進(jìn)行彩色圖像處理的關(guān)鍵。對(duì)視頻處理的內(nèi)容有了更加深入的認(rèn)識(shí)。由于能力所限在程序開發(fā)過程中遇到了很多問題,使得系統(tǒng)在進(jìn)行操作時(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防安全責(zé)任協(xié)議書編寫規(guī)范
- 2024年緊急消火栓施工及安裝服務(wù)協(xié)議版B版
- 2024新能源充電樁充電站設(shè)計(jì)與運(yùn)營管理合同3篇
- 2025年貨運(yùn)從業(yè)資格考試題庫
- 2024年高端技術(shù)研發(fā)與轉(zhuǎn)讓合同具體條款
- 2025-2031年中國爽膚水行業(yè)市場調(diào)查研究及發(fā)展趨勢預(yù)測報(bào)告
- 中國城市規(guī)劃建設(shè)行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與投資分析研究報(bào)告(2024-2030版)
- 2024年運(yùn)動(dòng)會(huì)場地租借合同
- 2024版二手住宅買賣合同(簡約版)3篇
- 2025年度小額貸款合同書(資產(chǎn)保全)2篇
- 浙江省杭州市西湖區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期期末考試語文試卷+
- 兼職客服簽約合同范例
- 【初中地理】《世界的聚落》課件-2024-2025學(xué)年湘教版地理七年級(jí)上冊
- 2鍋爐爐膛內(nèi)腳手架搭設(shè)及拆除施工方案
- 注冊安全工程師管理制度
- 2023年黑龍江民族職業(yè)學(xué)院招聘工作人員筆試真題
- 以諾書-中英對(duì)照
- 卵巢黃體破裂的護(hù)理
- 供應(yīng)鏈管理師(三級(jí))認(rèn)證備考試題及答案
- 廣東高中學(xué)業(yè)水平測試考綱考點(diǎn)必背化學(xué)
- 2023年新高考北京卷化學(xué)高考真題(含解析)
評(píng)論
0/150
提交評(píng)論