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

正文內(nèi)容

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

2024-07-25 00:41 本頁面
 

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