freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-25 00:41 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 移到其他狀態(tài) [8]。此外,使用 new 創(chuàng)建的 MediaPlayer 對(duì)象處于 Idle 狀態(tài),而那些通過重載的 create()便利方法創(chuàng)建 的 MediaPlayer 對(duì)象卻不是處于 Idle 狀態(tài)。事實(shí)上,如果成功調(diào)用了重載的 create()方法,那么這些對(duì)象已經(jīng)是處于 Prepare 狀態(tài)了。在一般情況下,由于種種原因,一些播放控制操作可能會(huì)失敗,如不支持視頻格式,缺少隔行掃描,分辨率過高,流超時(shí)等等。因此,錯(cuò)誤報(bào)告和回復(fù)在這種情況下是非常重要的。有時(shí),由于編程的錯(cuò)誤,在處于無(wú)效狀態(tài)的情況下調(diào)用了一個(gè)播放控制操作可能發(fā)生。在所有可能的錯(cuò)誤條件下,內(nèi)部的播放器引擎會(huì)自動(dòng)的調(diào)用一個(gè)由程序自身所提供的()方法。程序可以通過調(diào)用 ()方法來注冊(cè) OnErrorListener。如一旦發(fā)生錯(cuò)誤,MediaPlayer 對(duì)象會(huì)進(jìn)入到 Error 狀態(tài)。為了重用一個(gè)處于 Error 狀態(tài)的 MediaPlayer 對(duì)象,可以調(diào)用 reset()方法把這個(gè)對(duì)象恢復(fù)成 Idle 狀態(tài)。注冊(cè)一個(gè) OnErrorListener 獲知內(nèi)部播放心情發(fā)生的錯(cuò)誤時(shí)良好的編程習(xí)慣。在不合法的狀態(tài)下調(diào)用一些方法,如 prepare()、prepareAsync()和 setDataSource()方法等會(huì)拋出IllegalStateException 異常。調(diào)用 setDataSource(FileDescription)方法、setDataSource(String)方法、或者是setDataSource(Uri)方法、setDataSource(FileDescriptor,long,long)方法,便可以使 MediaPlayer對(duì)象從 Idle 狀態(tài)遷移到 Initialized 狀態(tài)。若此時(shí) MediaPlayer 對(duì)象處于其他狀態(tài)下,調(diào)用setDataSource()方法會(huì)拋出 IllegalStateException 異常。在開始播放前,MediaPlayer 對(duì)象必須進(jìn)入 Prepared 狀態(tài)。在此有兩種方法(同步和異步)可以實(shí)現(xiàn)。調(diào)用 Prepare()方法(同步),此方法返回表示 MediaPlayer 對(duì)象已經(jīng)進(jìn)入 Prepared狀態(tài)。調(diào)用 prepareAsync()方法(異步) ,此方法返回表示 MediaPlayer 對(duì)象進(jìn)入 Preparing 狀態(tài)并返回,而內(nèi)部的播放引擎繼續(xù)未完成的準(zhǔn)備工作。在開始播放時(shí),必須調(diào)用 start()方法。當(dāng)方法返回成功時(shí), MediaPlayer 對(duì)象應(yīng)當(dāng)處于Started 狀態(tài)。 isPlaying()方法可以被調(diào)用來測(cè)試某個(gè) MediaPlayer 對(duì)象是否處于 Started 狀態(tài)。播放可以被暫停、停止,以及調(diào)整當(dāng)前的播放位置。Pause()方法可以是 MediaPlayer 對(duì)象進(jìn)入 Paused 狀態(tài)。注意 Started 狀態(tài)和 Paused 狀態(tài)的相互轉(zhuǎn)換在內(nèi)部播放引擎中是異步的。所以可能需要一點(diǎn)時(shí)間在 isPlaying()方法中更新狀態(tài)。調(diào)用 stop()方法會(huì)停止播放,并且還會(huì)讓一個(gè)處于 Started、Paused、Prepared 狀態(tài)的MediaPlayer 對(duì)象進(jìn)入 Stopped 狀態(tài)。對(duì)一個(gè)已經(jīng)處于 Stopped 狀態(tài)的 MediaPlayer 對(duì)象的stop()方法沒有影響。合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系畢業(yè)論文8調(diào)用 seekTo()方法可以調(diào)整播放的位置。 seekTo(int)方法是異步執(zhí)行的,所以它可以馬上返回,但是實(shí)際的定位播放操作可能需要一段時(shí)間才能完成,尤其是播放流形式的音頻/視頻。當(dāng)實(shí)際的定位操作完成之后,內(nèi)部播放引擎會(huì)調(diào)用程序提供的 OnSeekComplete()回調(diào)方法。在此需要注意的是,seekTo(int)方法也可以在其他狀態(tài)下調(diào)用,比如Prepared、Paused 和 PlaybackCompleted 狀態(tài)。此外,當(dāng)前的音頻/ 視頻播放位置,實(shí)際上可以調(diào)用 getCurrentPosition()方法來得到,它可以幫助播發(fā)器的應(yīng)用程序不斷更新播放進(jìn)度。當(dāng)播放到流的末尾時(shí)完成播放。如果調(diào)用 setlooping(boolean)方法開啟了循環(huán)模式,那么這個(gè) MediaPlayer 對(duì)象會(huì)重新進(jìn)入 Started 狀態(tài)。如果沒有開啟循環(huán)模式,那么內(nèi)部播放引擎會(huì)調(diào)用 ()回調(diào)方法。一旦調(diào)用了該方法,說明這個(gè)MediaPlayer 對(duì)象進(jìn)入了 PlaybackCompleted 狀態(tài)。此時(shí)可以再調(diào)用 start()方法來讓這個(gè)MediaPlayer 對(duì)象進(jìn)入 Started 狀態(tài) [6]。 Surface、 SurfaceView、SurfaceHolder 三者之間的關(guān)系(1) SurfaceSurface 就是“表面”的意思。在 SDK 的文檔中,對(duì) Surface 的描述是這樣的:“Handle onto a raw buffer that is being managed by the screen positor”,翻譯成中文就是“由屏幕顯示內(nèi)容合成器(screen positor)所管理的原生緩沖器的句柄”,這句話包括下面兩個(gè)意思:通過 Surface(因?yàn)?Surface 是句柄)就可以獲得原生緩沖器以及其中的內(nèi)容。就像在 C 語(yǔ)言中,可以通過一個(gè)文件的句柄,就可以獲得文件的內(nèi)容一樣;原生緩沖器(rawbuffer)是用于保存當(dāng)前窗口的像素?cái)?shù)據(jù)的。引伸地,可以認(rèn)為 Android 中的 Surface 就是一個(gè)用來畫圖形(graphics)或圖像(image)的地方。根據(jù) Java 方面的常規(guī)知識(shí),我們知道通常畫圖是在一個(gè) Canvas 對(duì)象上面進(jìn)行的,由此,可以推知一個(gè) Surface 對(duì)象中應(yīng)該包含有一個(gè) Canvas 對(duì)象,事實(shí)上的確如此,而且這一點(diǎn)可以很容易通過 debug 運(yùn)行程序的方式得到證明。Surface中有一個(gè) Canvas 成員,專門用于畫圖的。所以,Surface 中的 Canvas 成員,是專門用于供程序員畫圖的場(chǎng)所,就像黑板一樣;其中的原生緩沖器是用來保存數(shù)據(jù)的地方;Surface 本身的作用類似一個(gè)句柄,得到了這個(gè)句柄就可以得到其中的 Canvas、原生緩沖器以及其它方面的內(nèi)容 [3]。(2) SurfaceViewSurfaceView,顧名思義就是 Surface 的 View,通過 SurfaceView 就可以看到 Surface 的部分或者全部的內(nèi)容,下面用一個(gè)圖來形象地描述一下 Surface 和 SurfaceView 的關(guān)系:合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系畢業(yè)論文9圖 23 Surface 與 SurfaceView也就是說,Surface 是用通過 SurfaceView 才能展示其中的內(nèi)容。由此來說,SurfaceView 中的 View 之確切的含義應(yīng)該是 viewport 即“視口”的意思,類似數(shù)據(jù)庫(kù)的設(shè)計(jì),假定一個(gè)數(shù)據(jù)表有 20 個(gè)字段,但我們常常只用到其中的 5 個(gè)字段,那么就可以在原數(shù)據(jù)表的基礎(chǔ)上,通過 SQL 語(yǔ)句 CREATEVIEW 來創(chuàng)建只包含那 5 個(gè)字段內(nèi)容的 view。另一方面,SurfaceView 是 Android 中 View 的子類。事實(shí)上,在 Android 中所有用于界面展示的類皆為 View 的子類,包括那些不可見的、各種各樣的 Layout。所以說,SurfaceView 中的View 有兩個(gè)含義:視口(viewport )的意思和 SurfaceView 是 View 的派生類在 Android 中Surface 是從 Object 派生而來,且實(shí)現(xiàn)了 Parcelable 接口。看到 Parcelable 就讓人能很自然地想到數(shù)據(jù)容器,SurfaceView 就是用來展示 Surface 中的數(shù)據(jù)的。在這個(gè)層面上而言,Surface就是管理數(shù)據(jù)的地方,SurfaceView 就是展示數(shù)據(jù)的地方 [3]。(3)SurfaceHolderSurfaceHolder 是一個(gè)接口,其作用就像一個(gè)關(guān)于 Surface 的監(jiān)聽器。提供訪問和控制SurfaceView 背后的 Surface 相關(guān)的方法 (providingaccess and control over this SurfaceView39。s underlying surface) ,它通過三個(gè)回調(diào)方法,讓我們可以感知到 Surface 的創(chuàng)建、銷毀或者改變。在 SurfaceView 中有一個(gè)方法 getHolder,可以很方便地獲得 SurfaceView 所對(duì)應(yīng)的Surface 所對(duì)應(yīng)的 SurfaceHolder。從設(shè)計(jì)模式的高度來看,Surface、SurfaceView 和 SurfaceHolder 實(shí)質(zhì)上就是廣為人知的MVC,即 ModelViewController。Model 就是模型的意思,或者說是數(shù)據(jù)模型,或者更簡(jiǎn)單地說就是數(shù)據(jù),也就是這里的 Surface;View 即視圖,代表用戶交互界面,也就是這里的SurfaceView;SurfaceHolder 很明顯可以理解為 MVC 中的 Controller(控制器) 。這樣看起來三者之間的關(guān)系就清楚了很多 [9]。合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系畢業(yè)論文10第三章 系統(tǒng)分析及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn) 系統(tǒng)分析 系統(tǒng)可行性分析可行性研究是為了弄清楚系統(tǒng)開發(fā)的項(xiàng)目是不是可以實(shí)現(xiàn)和值得進(jìn)行研究的過程,實(shí)際上是一次大大簡(jiǎn)化系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的過程,所以,進(jìn)行可執(zhí)行性的分析是非常必要的,也是很重要的,經(jīng)過最初的設(shè)計(jì)目標(biāo)和進(jìn)行的實(shí)時(shí)調(diào)查得出以下四點(diǎn)的可行性分析:(1)技術(shù)可行性:Eclipse + Android ADT 的技術(shù)已經(jīng)較為成熟,通過 SUN 公司(現(xiàn)被ORCEL 公司收購(gòu))推出的跨平臺(tái)、動(dòng)態(tài)的 JAVA 語(yǔ)言進(jìn)行開發(fā)。(2)運(yùn)行可行性:該系統(tǒng)需要 Android 虛擬機(jī)環(huán)境,Eclipse 中安裝 ADT,DDMS 等Google Android 相關(guān)插件。其運(yùn)行環(huán)境已經(jīng)相當(dāng)穩(wěn)定,它功能豐富,包括了完備的 Android程序的編碼、調(diào)試、測(cè)試和發(fā)布功能,其中支持所有 Android 應(yīng)用開發(fā)相關(guān)技術(shù),包括SQLite,Skia,3D 制作,Android XML,能夠很好的發(fā)布 Android 的應(yīng)用程序 APK 包。(3)法律可行性:因?yàn)槭亲灾鏖_發(fā)設(shè)計(jì),所以不會(huì)構(gòu)成侵權(quán),在法律上是可行的。通過以上的可行性分析,將采用 Eclipse+Android ADT + DDMS 技術(shù),運(yùn)用 JAVA 語(yǔ)言進(jìn)行系統(tǒng)的開發(fā)。 系統(tǒng)需求分析根據(jù)分析需求,這個(gè)系統(tǒng)必須實(shí)現(xiàn)以下的功能:(1) 實(shí)現(xiàn)手機(jī)支持的視頻格式文件的播放功能。作為播放器,其核心就是能夠流暢的播放視頻文件。手機(jī)一般不會(huì)支持對(duì)解碼要求太高的格式,如 rmvb。作為手機(jī)硬件能夠承載的視頻流文件,都應(yīng)當(dāng)能夠流暢的播放。(2) 能夠在手機(jī)里面定位視頻文件。在本播放器設(shè)計(jì)中,一個(gè)亮點(diǎn)就是自定義一個(gè)文件列表,能夠訪問手機(jī)里面任何能夠進(jìn)入的文件。這樣,也就能夠不需要將視頻文件放在一個(gè)系統(tǒng)固定的位置,您可以自己新建一個(gè)存放視頻文件的文件夾,放在任何你想要放的地方。這樣,需要播放你的視頻文件的時(shí)候,直接定位再好不過。(3) 能夠智能搜索出所有 android sdcard 中的視頻文件。合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系畢業(yè)論文11做視頻的智能搜索,也是能夠快速定位位于 sdcard 中的視頻文件的另一個(gè)快捷的方法。在智能搜索設(shè)計(jì)中,通過 mediascanner 進(jìn)行 sdcard 中的所有視頻文件的掃描,包括自動(dòng)搜索和手動(dòng)添加。同時(shí),將其顯示到界面。一般,當(dāng)手機(jī)中存放的視頻文件過多,但對(duì)于新添加的視頻文件位置很清楚時(shí),選擇手都添加比較好。(4) 能夠?qū)σ曨l文件常規(guī)信息信息進(jìn)行讀取。當(dāng)播放視頻文件時(shí),視頻名稱、視頻時(shí)間長(zhǎng)度等信息顯示在屏幕相應(yīng)位置。 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)本次課題設(shè)計(jì)的 Android 視頻播放器應(yīng)用程序組要由 4 個(gè) Activity 組成,分別是Mediaplayer Activity,MediaList Activity,F(xiàn)ileChooser Activity,UpdateMediaList Activity。每一個(gè) Activity 實(shí)現(xiàn)相應(yīng)部分的功能,每一個(gè) Activity 的布局文件。在布局文件中,添加用來實(shí)現(xiàn)相應(yīng)部分功能的各種控件。如圖 31 所示。圖 31 系統(tǒng)結(jié)構(gòu)框圖(1) MeidaPlayerActivity MediaplayerActivity 中包含的控件數(shù)量最多,與用戶打交道也最為廣泛,每個(gè)控件都對(duì)應(yīng)有各自的功能,如圖 32 所示。合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系畢業(yè)論文12圖 32 MediaplayerActivity 控件分布第一行中:CheckButton,查看列表按鈕。按下此按鈕之后,顯示手機(jī)中存在的視頻文件,并以列表的形式顯示顯示在手機(jī)屏幕上。關(guān)于視頻文件的列表的顯示,在MediaListActivity 中實(shí)現(xiàn)。ChooserButton,添加視
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1