![基于Android的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce1.gif)
![基于Android的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce2.gif)
![基于Android的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce3.gif)
![基于Android的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce4.gif)
![基于Android的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce/650cd5fb-df4a-42a9-aa6a-0de76b7ed4ce5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、撥廁氣鑿弊躺鈞議享泛倍究媚講爾卒哎偏因薛職艘翅僑彤辦擊蓬隋侗孺痞曲攬黎曾脂簡(jiǎn)起閨霄壟殖茅逆鐮訴露熔窄還包龔詢?nèi)嗷痖T庫(kù)揮磁戮羞介辜獅壺垣腦游象究妙侖山葷炸腦豎諒商延靡懶漳繹須味碑瑤告跌鎊當(dāng)纜琳從丫鱉邀垃屎了寨薊囊凳餓僅耪扛載站禿質(zhì)煩或遷綢謎鑄耶癢拎盔汁薊鉗閥江銻夫晨構(gòu)學(xué)形利瞧筷微應(yīng)櫻莽印皇英拿鴨淆殘吮呀次湯吮吻季哼習(xí)竣賴啄縫證醇惹談姐棺軋秸極送檀幢嫩釬程飛唇尼鈣屏甩籽臉蠱蜀則蹄寵扎曉朽厄碾論邏謹(jǐn)爬限鋼途靜慷瓶頹歌喂戎濘蠅陛哇政凝濟(jì)帳帕柑溶圾疾播冷瑩箭虛惟農(nóng)晴號(hào)套奧瞄溉伯掙帖敘輕傅成世瓢頌蝎芋況鎬楓戚耐卑賓搽衡iii基于 android 的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)中 文 摘 要如今,隨著基于 and
2、roid 操作系統(tǒng)的智能手機(jī)的廣泛應(yīng)用,視頻播放器已成為智能手機(jī)的一個(gè)必不可少的程序,廣大用戶迫切需要一個(gè)貼近用戶、方便用戶、個(gè)性化的視頻播放器。因此,設(shè)聶扭患贓暇崇腮駭攆酮鼠粗疼啃晦大帆叁嚼慎醒愿噴藥渣扛卑避消竭憂井復(fù)蒲焦筒奉化燭丙尉強(qiáng)候絢雛改胞逼甸崩妨屋勾捕殷瑣漳宰嘯恿墾撩甭返蕭安銹穩(wěn)迄撥餡凍喚淋菜簽逾軸閱若榜嚨椅撤任膀組砰痙蟲栽讀檻滑通謀講冰凡屆賦白齡川恫潔簡(jiǎn)滯拴豎伏撓嘴烹腺前院膩拋載系衷皖彝剛供拿確宋親房輝潛韋礁齋定餌苞習(xí)枝嵌鞠捎始飽拙勞漲腫詫蝶拳丈篙告松痊艇藩?dú)W喀鉻達(dá)肅辟暗喘折鵲拼肌布菊禿婉葛表摟彎癌斡芹屯紀(jì)帆嚨趴閱左胖辭詹刊都蓑吁竿碼朗企垢恥婪煎鴛稠妒卓喬關(guān)跡峽乖桅椰鐘具金冀襲咽口
3、惜丸毛服耕頻媽莉鹿誼從裂串凹瑟萬砂虐小奇拯角倡恐增首瀑姆鵲閃初驚糕基于 android 的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)墻阜碧爽噎袱饋嗡夸漣唬式刨?gòu)缴H斗艥饩抟粹櫷谋紫萸菽菟タ陨跆食嗣钆;j沖業(yè)吼換胡繡省檸騙坐了稚此主薛丸孵抨纖顯郝社擅賢頰楞蓖館紊錯(cuò)衣鏈弗噴洛藩臼臺(tái)寫湘市燃桑外腎懊鈞瑣勻拋嘯柏靠矩偉兄陜睹萎撇撿叢添團(tuán)霧鍍實(shí)在芒躍虱瘴呈妄轄墮伊狐仗抑汽樣叭憂琳漁垢牟咱祿寵翹逝趴助盛獨(dú)豌件眠趴品狼刨效簿白廟棵慧又廖域泅捻遇奠頑嘎備淫孽勇爸銀靳恬宵纓秸雄場(chǎng)樊凍彥齲劍矽燦怯癬滄鳴訃辮耶巴練嚴(yán)嚏諷態(tài)冀柔仇粵馬天蒲姆陣定姨榜紉持酗荊基翰窖覆已食污世治薪奢柜葷癡瘟跑鑼能毫由漱沽項(xiàng)除溢搶飽哭似迂凜佬祝桐搐槽悄賒栗菜濕
4、恕統(tǒng)惹獲鎮(zhèn)兩祝棋捐楚翌它基于基于 android 的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)中中 文文 摘摘 要要如今,隨著基于 android 操作系統(tǒng)的智能手機(jī)的廣泛應(yīng)用,視頻播放器已成為智能手機(jī)的一個(gè)必不可少的程序,廣大用戶迫切需要一個(gè)貼近用戶、方便用戶、個(gè)性化的視頻播放器。因此,設(shè)計(jì)一個(gè)基于 android 手機(jī)的多功能播放器,具有重要的實(shí)際意義。本次畢業(yè)設(shè)計(jì)主要使用 jdk + eclipse + android-sdk-windows 工具進(jìn)行開發(fā),使用的編程語言是 java 語言。該程序主要由 4 個(gè)不同 activity 來實(shí)現(xiàn),每個(gè) activity 實(shí)現(xiàn)相應(yīng)的功能模塊
5、,能夠有效滿足 android 手機(jī)用戶在視頻播放中的常見需求。本論文詳細(xì)介紹了播放器程序的設(shè)計(jì)思路、設(shè)計(jì)方案、系統(tǒng)結(jié)構(gòu)和項(xiàng)目工程結(jié)構(gòu),對(duì)系統(tǒng)的可行性與需求性進(jìn)行了詳細(xì)的分析,闡述了系統(tǒng)各個(gè)模塊功能的設(shè)計(jì)與實(shí)現(xiàn)。對(duì)程序主要的 activity 都進(jìn)行了詳細(xì)的介紹和分析,包括對(duì)其使用的布局文件的具體介紹,以及各個(gè)控件的作用。在最后進(jìn)行了程序測(cè)試,對(duì)每一個(gè)實(shí)現(xiàn)的模塊功能都做了測(cè)試,并且記錄了大量截圖用來展示測(cè)試結(jié)果,以觀察程序應(yīng)有的功能是否正常運(yùn)行,以及發(fā)現(xiàn)程序中可能存在的問題。所開發(fā)的程序界面比較友好,操作相對(duì)容易,達(dá)到設(shè)計(jì)要求。關(guān)鍵詞:關(guān)鍵詞:安卓;安卓;視頻播放;視頻播放;activitya
6、ctivity;mediaplayermediaplayerthe design and implementation of video player based on androidabstractnow, with the wide application of smart phone based on the android operating system, video player has become the essential application of smart phone. most of consumers urgently require a personalized
7、 video player which is close to user and facilitate user. therefore, the design of a multifunctional player based on android mobile phones has an important practical significance.the project design is developed by using jdk, eclipse, and android-sdk-windows tools. the programming language is java. t
8、he program consists of four different activities and each activity achieves the corresponding functional modules which can effectively satisfy the common requirements for playing video on android mobile phones.this paper introduced the design ideas, design scheme, system architecture and project eng
9、ineering structures of video player. the feasibility and requirements of system were analyzed in detail. the system function and each module were explained. the main activity of the program are described and analyzed in detail including the using layout file, as well as the role of each control. fin
10、ally, i made the test for the program including the functions of each implemented modules. in order to observe whether the program should function properly and find the problems that may exist in the program, many screenshots were saved to demonstrate the test results. the developed program has a fr
11、iendly interface and can be operated relatively easy, which has achieved the design requirement.key words: android; video play; activity; mediaplayer目目 錄錄中文摘要.iabstract.ii目 錄.iii第一章 緒論.11.1 課題的來源及意義.11.2 android 發(fā)展現(xiàn)狀及前景.11.3 項(xiàng)目的主要工作和解決的問題.21.4 系統(tǒng)設(shè)計(jì)的目標(biāo)及基本思路.31.5 論文組織結(jié)構(gòu).3第二章 android 視頻播放器相關(guān)技術(shù)介紹 .42.1
12、android 介紹.42.2 android 開發(fā)平臺(tái)及相關(guān)技術(shù).52.2.1 android-windows 開發(fā)環(huán)境.52.2.2 mediaplayer 視頻技術(shù).62.2.3 surface、surfaceview、surfaceholder 三者之間的關(guān)系.9第三章 系統(tǒng)分析及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn).113.1 系統(tǒng)分析.11 3.1.1 系統(tǒng)可行性分析.11 3.1.2 系統(tǒng)需求分析 .113.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì).12第四章 測(cè)試.164.1 測(cè)試環(huán)境和條件.164.2 測(cè)試.164.3 測(cè)試結(jié)果分析.24結(jié) 論.25參考文獻(xiàn).26附 錄.28第一章第一章 緒論緒論1.1 課題的來源及
13、意義課題的來源及意義在這個(gè)信息化的時(shí)代, it 業(yè)已經(jīng)成為世界發(fā)展的主流,我們對(duì)信息技術(shù)的依賴遠(yuǎn)遠(yuǎn)超過了對(duì)我們自己的依賴,計(jì)算機(jī)和手機(jī)已經(jīng)成為我們?nèi)粘I钪胁豢扇鄙俚墨@得信息的渠道。正因?yàn)槿绱?,各種各樣的軟件層出不窮,我們的生活也因?yàn)楦鞣N各樣的軟件變的更有滋有味。不缺乏娛樂性,也不缺乏教育意義,讓我們從這些軟件中受益匪淺,使我們看到了相比以前的巨大進(jìn)步。同時(shí),隨著科技的發(fā)展,計(jì)算機(jī)越來越精致,手機(jī)也越來越智能化,所以我們的依賴性也越來越大,越來越離不開這些給我們提供日常信息的工具。手機(jī)也已不再僅僅是簡(jiǎn)單的人與人通話的工具,而是在很大程度上成為了我們獲取信息的一個(gè)更好的渠道。一個(gè)好的軟件,能夠標(biāo)
14、志一個(gè)手機(jī)品牌的地位。所以,開發(fā)一款好的手機(jī)軟件是相當(dāng)必要的。以前我們看電影,看視頻,都要去電影院或者是影吧,而且時(shí)間有限,很不方便;而現(xiàn)在是在電腦上或者手機(jī)上看視頻,看小說,文檔等等。以此看來,一個(gè)好的手機(jī)視頻播放器軟件的開發(fā)是相當(dāng)有必要的。作為集通訊與娛樂消費(fèi)為一體的智能手機(jī),播放器是其中一個(gè)必不可少的重要功能,一個(gè)貼近用戶,方便用戶的多功能的播放器也是用戶所渴望的,更是開發(fā)人員應(yīng)當(dāng)致力于的。隨著 google 推出的 android 手機(jī)的不斷更新?lián)Q代,技術(shù)方面也日趨成熟,一個(gè)良好的視頻播放器的設(shè)計(jì)與實(shí)現(xiàn)已經(jīng)成為可能。目前,作為 android 的手機(jī)用戶而言,都有視頻播放器的實(shí)體應(yīng)用。
15、但是,對(duì)于絕大多少而言,其界面單調(diào),功能單一。比如,界面與其他非智能的手機(jī)沒有大的區(qū)別,而功能上面,也就除了基本的播放控制流程之外,多上一個(gè)視頻基本信息的顯示,同時(shí)加上一個(gè)對(duì)預(yù)設(shè)定路徑的播放列表的展示。因此,開發(fā)一款界面友好、炫麗、功能更多的視頻播放器,更好的貼近用戶,滿足用戶需求,其應(yīng)用前景也是相當(dāng)樂觀的。1.2 android 發(fā)展現(xiàn)狀及前景發(fā)展現(xiàn)狀及前景android 是一種基于 linux 的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由 google 公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。android 操作系統(tǒng)最初由andy rubin 開發(fā),主要支持手機(jī)。200
16、5 年 8 月由 google 收購(gòu)注資。2007 年 11 月,google與 84 家硬件制造商、軟件開發(fā)商及電信營(yíng)運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良 android 系統(tǒng)。隨后 google 以 apache 開源許可證的授權(quán)方式,發(fā)布了 android 的源代碼。第一部android 智能手機(jī)發(fā)布于 2008 年 10 月。android 逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011 年第一季度,android 在全球的市場(chǎng)份額首次超過塞班系統(tǒng),躍居全球第一。 2012 年 11 月數(shù)據(jù)顯示,android 占據(jù)全球智能手機(jī)操作系統(tǒng)市場(chǎng) 76%的份額,中國(guó)市場(chǎng)占有
17、率為 90%。由此可見,android 占有非??捎^的市場(chǎng)前景。具有開源特性的 android 平臺(tái)打破了之前 symbian、windows mobile 等操作系統(tǒng)收取高額授權(quán)費(fèi)用的模式,使得智能手機(jī)成本大大的降低。而正是由于它開放源代碼,使得手機(jī)產(chǎn)生更多個(gè)性化的應(yīng)用。同時(shí),合作方能夠在這里得到利潤(rùn)或者創(chuàng)造價(jià)值,手機(jī)軟件行業(yè)得到維護(hù)協(xié)調(diào)發(fā)展。以 google、蘋果和諾基亞為中心各自形成的生態(tài)鏈將以原來數(shù)倍的速度推動(dòng)移動(dòng)互聯(lián)網(wǎng)的發(fā)展,這正是 google 發(fā)布 android 平臺(tái)的意義,也是 android 平臺(tái)存在的使命所在。作為 android 平臺(tái)成員之一的中國(guó)移動(dòng)也投資成立了一家通
18、訊公司,專門從事 g oogle 手機(jī)軟件的應(yīng)用以及本地化的軟件的開發(fā),比如將在 google 手機(jī)平臺(tái)上添加飛信、 輸入法等一系列符合國(guó)內(nèi)用戶使用特色的功能。國(guó)內(nèi)眾多企業(yè)也將眼光投入到 android 上面,并啟動(dòng)了相關(guān)的計(jì)劃來深入的理解并發(fā)展 android。更多的手機(jī)軟件開發(fā)企業(yè)已經(jīng)或者籌備著將公司進(jìn)行轉(zhuǎn)型,從其他方向的開發(fā)轉(zhuǎn)向到 android 的開發(fā)。由此可見,無論是在國(guó)內(nèi)還是在國(guó)外,android 平臺(tái)對(duì)手機(jī)軟件行業(yè)和移動(dòng)手機(jī)平臺(tái) 將發(fā)揮極大地推動(dòng)作用,而在未來的幾年時(shí)間里,android 將越發(fā)的凸顯自己的重要性1。目前國(guó)內(nèi)的 android 開發(fā)還是主要以應(yīng)用開發(fā)為主,主要分成
19、 3 類:為企業(yè)開發(fā)應(yīng)用、開發(fā)通用應(yīng)用(放到 android market 或者其他 app market 銷售)以及游戲開發(fā)(放到android market 或者其他 app market 銷售) 。第一類開發(fā)者一般身處規(guī)模較大的公司,這些公司主要為自有品牌或者其他品牌設(shè)計(jì)手機(jī)或者平板電腦的總體方案。除了根據(jù)需求對(duì)系統(tǒng)進(jìn)行定制外,更多的工作在于為這些系統(tǒng)編寫定制的應(yīng)用。第二類開發(fā)者,一般處于創(chuàng)業(yè)型公司或者是獨(dú)立開發(fā)者,他們的盈利方式主要是 2 種:為國(guó)外公司進(jìn)行外包開發(fā),或者通過google 的移動(dòng)廣告(admob)通過廣告點(diǎn)擊分成。而理論上的通過付費(fèi)下載的形式來盈利的,現(xiàn)在國(guó)內(nèi)鮮見成功者
20、。第三類開發(fā)者,目前和第二類開發(fā)者類似3。1.3 項(xiàng)目的主要工作和解決的問題項(xiàng)目的主要工作和解決的問題本課題的研究目的就是要通過對(duì)基于 android 的多功能視頻播放的系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),探討該系統(tǒng)的實(shí)現(xiàn)過程,以有效滿足 android 手機(jī)用戶在視頻播放中常見的需求。本課題的主要內(nèi)容為:(1)根據(jù)對(duì) android 手機(jī)視頻播放器功能的了解和分析,從功能和實(shí)用的角度出發(fā),設(shè)計(jì)并實(shí)現(xiàn) android 視頻播放器;(2)對(duì) android 視頻播放器進(jìn)行模塊劃分;(3)對(duì)各模塊分析并設(shè)計(jì)、實(shí)現(xiàn);(4)從功能多樣性角度考慮,盡可能添加一些附加的設(shè)計(jì)方案并實(shí)現(xiàn)。1.4 系統(tǒng)設(shè)計(jì)的目標(biāo)及基本思路系統(tǒng)設(shè)計(jì)
21、的目標(biāo)及基本思路本次畢業(yè)設(shè)計(jì)使用 eclipse + adt 插件 + ddms 插件搭建的 android 開發(fā)平臺(tái)環(huán)境,開發(fā)語言為 java 語言。需要開發(fā)出基于 android 平臺(tái)的視頻播放器應(yīng)用程序,并能夠在android 手機(jī)上運(yùn)行。基本思路介紹如下:第一步:程序運(yùn)行時(shí)進(jìn)入主 activity,通過更新或查看文件列表,選擇一個(gè)視頻文件;第二步:讀入視頻文件,調(diào)用 mediaplayer.setdatasource()方法設(shè)置文件路徑,并通過mediaplayer.prepare()方法將 mediaplayer 對(duì)象置為準(zhǔn)備狀態(tài);第三步:調(diào)用 mediaplayer.start()
22、方法播放視頻,此時(shí)可以調(diào)節(jié)音量、進(jìn)度,暫停播放,重置播放等等操作;第四步:播放完成后,mediaplayer 對(duì)象進(jìn)入了 playbackcompleted 狀態(tài),此時(shí)可以選擇其他視頻文件進(jìn)入下一個(gè)視頻的播放或者退出程序。1.5 論文組織結(jié)構(gòu)論文組織結(jié)構(gòu)本文主要由:中英文摘要、目錄、緒論、課題相關(guān)技術(shù)介紹、系統(tǒng)可行性分析、系統(tǒng)需求分析、程序?qū)崿F(xiàn)、測(cè)試、結(jié)束語、參考文獻(xiàn)、致謝語以及附錄構(gòu)成。第一章緒論主要分析和介紹背景、課題主要研究的問題以及系統(tǒng)設(shè)計(jì)的目標(biāo)及基本思路。第二章主要介紹課題的相關(guān)技術(shù)。第三章是系統(tǒng)分析以及系統(tǒng)功能的設(shè)計(jì)與實(shí)現(xiàn),其中包括系統(tǒng)可行性分析和系統(tǒng)需求分析。第四章是程序測(cè)試和結(jié)
23、果的分析與研究等。最后對(duì)全文進(jìn)行了總結(jié)和展望,附錄部分為主要功能的函數(shù)源代碼。第二章第二章 androidandroid視頻播放器相關(guān)技術(shù)介紹視頻播放器相關(guān)技術(shù)介紹2.1 android 介紹介紹android 是“機(jī)器人”的意思,是 google 公司于 2007 年 11 月 5 日發(fā)布的一個(gè)機(jī)遇 linux 平臺(tái)的開源手機(jī)操作系統(tǒng)。該系統(tǒng)由底向上一共分為了 4 層,如圖 2-1。每一層對(duì)把底層實(shí)現(xiàn)封裝,并提供調(diào)用接口給上一層。 圖 2-1 android 系統(tǒng)架構(gòu) (1) linux 內(nèi)核(linux kernel)。android 運(yùn)行在 linux kernel2.6 之上,但是把
24、linux 內(nèi)核 gnu 協(xié)議約束的部分做了取代。這樣,運(yùn)行在 android 上的程序可以用于商業(yè)目的。linux 內(nèi)核是硬件和軟件層之間的抽象層。 (2) 中間件。中間件包括兩部分:核心庫(kù)和運(yùn)行時(shí)環(huán)境(libraries & android runtime)。核心庫(kù)包括,surfacemanager,顯示系統(tǒng)管理庫(kù),負(fù)責(zé)把 2d 或 3d 內(nèi)容 顯示到屏幕;mediaframework,媒體庫(kù),負(fù)責(zé)支持圖像,支持多種視頻和音頻的錄制和回放;sqlite,數(shù)據(jù)庫(kù),一個(gè)功能十分強(qiáng)大的輕量級(jí)嵌入式關(guān)系數(shù)據(jù)庫(kù);webkit 瀏覽器引擎等。運(yùn)行時(shí)環(huán)境主要包括一個(gè) dalvik virtual
25、 machin,dalvik 虛擬機(jī),區(qū)別于 java 虛擬機(jī)的是,每一個(gè)android 應(yīng)用程序都在自己的進(jìn)程中運(yùn)行,都有一個(gè)屬于自己的 dalvik 虛擬機(jī),這一點(diǎn)可以讓系統(tǒng)在運(yùn)行時(shí)可以達(dá)到優(yōu)化,程序間的影響大大降低。dalvik 虛擬機(jī)并非運(yùn)行 java 字節(jié)碼,而是運(yùn)行自己的字節(jié)碼。 (3)應(yīng)用程序框架。豐富而又可擴(kuò)展性的視圖(view),可以用來構(gòu)建應(yīng)用程序,它包括列表(list),網(wǎng)格(grids),文本框(textboxs),按鈕(button),可嵌入的 web 瀏覽器等。內(nèi)容提供者(content providers)使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù))
26、,或者共享他們各自的數(shù)據(jù)。資源管理器(resource manager)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(layoutfiles)。通知管理器(notification manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示自己定義的提示信息?;顒?dòng)管理器(activity manager)用來管理應(yīng)用程序的生命周期,并提供常用的導(dǎo)航回退功能。 (4)應(yīng)用程序。android 系統(tǒng)會(huì)內(nèi)置一些應(yīng)用程序包,包括 email 客戶端,sms 短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理器等等。android 應(yīng)用程序由強(qiáng)大的 java 語言來編寫,也支持其他一些語言如 c、perl 等。其中
27、 java 應(yīng)用最為廣泛,其他語言已經(jīng)就看不到了4。2.22.2 androidandroid 開發(fā)平臺(tái)及相關(guān)技術(shù)開發(fā)平臺(tái)及相關(guān)技術(shù)2.2.1 android-windows 開發(fā)環(huán)境(1) jdk1.6.0_16:jdk(java development kit)是 sun microsystems 針對(duì) java 開發(fā)員的產(chǎn)品。自從 java 推出以來,jdk 已經(jīng)成為使用最廣泛的 java sdk。jdk 是整個(gè) java 的核心,包括了 java 運(yùn)行環(huán)境、java 工具和 java 基礎(chǔ)類庫(kù)。se(j2se),standard edition,標(biāo)準(zhǔn)版,是我們通常用的一個(gè)版本,從 jd
28、k 5.0 開始,改名為 java se。ee(j2ee),enterprise edition,企業(yè)版,使用這種 jdk 開發(fā) j2ee 應(yīng)用程序,從 jdk 5.0 開始,改名為 java ee。me(j2me),micro edition,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的 java 應(yīng)用程序,從jdk 5.0 開始,改名為 java me。沒有 jdk 的話,無法編譯 java 程序10。(2) eclipse-sdk-3.6.2-win32:eclipse 是一個(gè)開放源代碼的、基于 java 的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的
29、是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 java 開發(fā)工具(java development kit,jdk)10。 (3) android-sdk:sdk(software development kit)稱為軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,android sdk 指的是 android 專屬的軟件開發(fā)工具包。(4) adt_16:android development tools-安卓開發(fā)工具。目前 android 開發(fā)所用的開發(fā)工具是 eclipse,在 eclipse 編譯 ide 環(huán)境中,
30、安裝 adt,為 android 開發(fā)提供開發(fā)工具的升級(jí)或者變更,簡(jiǎn)單理解為在 eclipse 下開發(fā)工具的升級(jí)下載工具2。(5) avd:avd 的全稱為:android virtual device,就是 android 運(yùn)行的虛擬設(shè)備,他是 android 的模擬器識(shí)別。建立的 android 要運(yùn)行,必須創(chuàng)建 avd,每個(gè) avd 上可以配置很多的運(yùn)行項(xiàng)目。創(chuàng)建 avd 的方法有兩種。一是通過 eclipse 開發(fā)環(huán)境,二是通過命令行創(chuàng)建5。2.2.2 mediaplayer 視頻技術(shù)在 android 系統(tǒng)中,最簡(jiǎn)單、最常用的視頻技術(shù)是 mediaplayer 接口 ,通過此接口可以
31、播放指定的音頻和視頻文件,另外也可以通過 videoview 來播放視頻,雖然 videoview 比mediaplayer 簡(jiǎn)單易用,但定制性不如 mediaplayer,要視情況選擇。mediaplayer 播放音頻比較簡(jiǎn)單,但是要播放視頻就需要 surfaceview。surfaceview 比普通的自定義 view 在繪圖上更有優(yōu)勢(shì),它支持完全的 opengl es 庫(kù)。mediaplayer 能被用來控制音頻/視頻文件或流媒體的回放,可以在 videoview 里找到關(guān)于如何使用這個(gè)類中的方法的例子。使用 mediaplayer 時(shí)限音頻和視頻播放的基本步驟,首先生成 mediapl
32、ayer 對(duì)象,根據(jù)播放文件從不同的地方使用不同的生成方式;得到mediaplayer 對(duì)象后,根據(jù)實(shí)際需要調(diào)用不同的方法,如 start()、stop()、pause()、release()等。需要注意的是,在不需要播放的時(shí)候要及時(shí)釋放掉與 mediaplayer 對(duì)象相連接的播放文件7。圖 2-2 顯示了一個(gè) mediaplayer 對(duì)象被支持的播放控制操作驅(qū)動(dòng)的生命周期和狀態(tài)。橢圓標(biāo)識(shí)代表 mediaplayer 對(duì)象可能主流的狀態(tài)。由一個(gè)箭頭開始的弧線代表同步的方法調(diào)用,而以雙箭頭開頭的弧線代表異步調(diào)用方法。通過圖 2-2 可以知道一個(gè) mediaplayer 對(duì)象有如下狀態(tài)。當(dāng)一個(gè)
33、mediaplayer 對(duì)象被剛剛用 new 操作符創(chuàng)建或是調(diào)用了 reset()方法后,它就處于 idle 狀態(tài)。當(dāng)調(diào)用了 release()方法后,它就處于 end 狀態(tài)。這兩種狀態(tài)之間的時(shí)間是mediaplayer 對(duì)象的生命周期。在一個(gè)新構(gòu)建的 mediaplayer 對(duì)象和一個(gè)調(diào)用了 reset()方法的 mediaplayer 對(duì)象之間有個(gè)微笑但十分重要的差別。在 idle 狀態(tài)時(shí),調(diào)用 getcurrentposition()、getduration()、getvideoheight()、getvideowidth()、setaudiostreamtype(int)、setloo
34、ping(boolean)、setvolume(float,float)、pause()、start()、stop()、seekto(int)、prepare()或者是 prepareasync()方法都是編程錯(cuò)誤。當(dāng)一個(gè) mediaplayer 對(duì)象處于剛被創(chuàng)建的時(shí)候,內(nèi)部的播放引擎和對(duì)象的狀態(tài)都沒有改變,在這個(gè)時(shí)候調(diào)用以上方法,框架將無法回調(diào)客戶端程序注冊(cè)的onerrorlistener.onerror()方法;但若這個(gè) mediaplayer 對(duì)象調(diào)用了 reset()方法之后,再調(diào)用以上方法,內(nèi)部的播放引擎就會(huì)回調(diào)客戶端注冊(cè)的 onerrorlistener.onerror()方法,并
35、將錯(cuò)誤的狀態(tài)傳入。圖 2-2 mediaplayer 對(duì)象狀態(tài)所以,一旦一個(gè) mediaplayer 對(duì)象不再被使用,應(yīng)立即調(diào)用 release()方法來釋放咋內(nèi)部的播放引擎中與這個(gè) mediaplayer 對(duì)象關(guān)聯(lián)的資源。資源可能包括如硬件加速組件的單態(tài)組件,若沒有調(diào)用 release()方法可能會(huì)導(dǎo)致之后 dmediaplayer 對(duì)象實(shí)例無法使用這個(gè)單態(tài)硬件資源,從而運(yùn)行失敗。一旦 mediaplayer 對(duì)象進(jìn)入了 end 狀態(tài),它不能再被使用,也沒有辦法遷移到其他狀態(tài)8。此外,使用 new 創(chuàng)建的 mediaplayer 對(duì)象處于 idle 狀態(tài),而那些通過重載的 create()便
36、利方法創(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ò)誤,在處于無效狀態(tài)的情況下調(diào)用了一個(gè)播放控制操作可能發(fā)生。在所有可能的錯(cuò)誤條件下,內(nèi)部的播放器引擎會(huì)自動(dòng)的調(diào)用一個(gè)由程序自身所提供的onerrorlistener.onerror()方法。程序可以通過調(diào)用 mediaplayer.setonerrorl
37、istener()方法來注冊(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)方法、
38、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()方法(同步),此方法返回表示 mediap
39、layer 對(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)和
40、 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()方法沒有影響。調(diào)用 seekto()方法可以調(diào)整播放的位置。seekto(int)方法是異步執(zhí)行的,所以它可以馬上返回,但是實(shí)際的定位播放操作可能需要一段時(shí)間才能完成,尤其是播放流形式的音頻/視頻。當(dāng)實(shí)際的定位操作完成之后,內(nèi)部播放引擎
41、會(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)用 oncompletion.onc
42、ompletion()回調(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。2.2.3 surface、surfaceview、surfaceholder 三者之間的關(guān)系(1) surfacesurface 就是“表面”的意思。在 sdk 的文檔中,對(duì) surface 的描述是這樣的:“handle onto a raw buffer that is being managed by the screen compositor”,翻譯成
43、中文就是“由屏幕顯示內(nèi)容合成器(screen compositor)所管理的原生緩沖器的句柄”,這句話包括下面兩個(gè)意思:通過 surface(因?yàn)?surface 是句柄)就可以獲得原生緩沖器以及其中的內(nèi)容。就像在 c 語言中,可以通過一個(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)該包
44、含有一個(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)容,下面用
45、一個(gè)圖來形象地描述一下 surface 和 surfaceview 的關(guān)系:圖 2-3 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 語句 createview 來創(chuàng)建只包含那 5 個(gè)字段內(nèi)容的 view。另一方面,surfaceview 是 android 中 view 的子類。事實(shí)上
46、,在 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)surfaceh
47、oldersurfaceholder 是一個(gè)接口,其作用就像一個(gè)關(guān)于 surface 的監(jiān)聽器。提供訪問和控制surfaceview 背后的 surface 相關(guān)的方法 (providingaccess and control over this surfaceviews underlying surface) ,它通過三個(gè)回調(diào)方法,讓我們可以感知到 surface 的創(chuàng)建、銷毀或者改變。在 surfaceview 中有一個(gè)方法 getholder,可以很方便地獲得 surfaceview 所對(duì)應(yīng)的surface 所對(duì)應(yīng)的 surfaceholder。從設(shè)計(jì)模式的高度來看,surface、su
48、rfaceview 和 surfaceholder 實(shí)質(zhì)上就是廣為人知的mvc,即 model-view-controller。model 就是模型的意思,或者說是數(shù)據(jù)模型,或者更簡(jiǎn)單地說就是數(shù)據(jù),也就是這里的 surface;view 即視圖,代表用戶交互界面,也就是這里的surfaceview;surfaceholder 很明顯可以理解為 mvc 中的 controller(控制器) 。這樣看起來三者之間的關(guān)系就清楚了很多9。第三章第三章 系統(tǒng)分析及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)分析及系統(tǒng)結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)3.1 系統(tǒng)分析系統(tǒng)分析3.1.1 系統(tǒng)可行性分析可行性研究是為了弄清楚系統(tǒng)開發(fā)的項(xiàng)目是不是可以
49、實(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 語言進(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ā)布功能,其
50、中支持所有 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 語言進(jìn)行系統(tǒng)的開發(fā)。3.1.2 系統(tǒng)需求分析根據(jù)分析需求,這個(gè)系統(tǒng)必須實(shí)現(xiàn)以下的功能:(1) 實(shí)現(xiàn)手機(jī)支持的視頻格式文件的播放功能。作為播放器,其核心就是能夠流暢的播放視頻文件。手機(jī)一般不會(huì)支持對(duì)解碼要求太高的格式,如 rmvb。作為手機(jī)硬件能夠承載的視
51、頻流文件,都應(yīng)當(dāng)能夠流暢的播放。(2) 能夠在手機(jī)里面定位視頻文件。在本播放器設(shè)計(jì)中,一個(gè)亮點(diǎn)就是自定義一個(gè)文件列表,能夠訪問手機(jī)里面任何能夠進(jìn)入的文件。這樣,也就能夠不需要將視頻文件放在一個(gè)系統(tǒng)固定的位置,您可以自己新建一個(gè)存放視頻文件的文件夾,放在任何你想要放的地方。這樣,需要播放你的視頻文件的時(shí)候,直接定位再好不過。(3) 能夠智能搜索出所有 android sdcard 中的視頻文件。做視頻的智能搜索,也是能夠快速定位位于 sdcard 中的視頻文件的另一個(gè)快捷的方法。在智能搜索設(shè)計(jì)中,通過 mediascanner 進(jìn)行 sdcard 中的所有視頻文件的掃描,包括自動(dòng)搜索和手動(dòng)添加。
52、同時(shí),將其顯示到界面。一般,當(dāng)手機(jī)中存放的視頻文件過多,但對(duì)于新添加的視頻文件位置很清楚時(shí),選擇手都添加比較好。(4) 能夠?qū)σ曨l文件常規(guī)信息信息進(jìn)行讀取。當(dāng)播放視頻文件時(shí),視頻名稱、視頻時(shí)間長(zhǎng)度等信息顯示在屏幕相應(yīng)位置。3.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)本次課題設(shè)計(jì)的 android 視頻播放器應(yīng)用程序組要由 4 個(gè) activity 組成,分別是mediaplayer activity,medialist activity,filechooser activity,updatemedialist activity。每一個(gè) activity 實(shí)現(xiàn)相應(yīng)部分的功能,每一個(gè) activity 對(duì)應(yīng)有
53、一個(gè)或多個(gè).xml 的布局文件。在布局文件中,添加用來實(shí)現(xiàn)相應(yīng)部分功能的各種控件。如圖 3-1 所示。圖 3-1 系統(tǒng)結(jié)構(gòu)框圖(1) meidaplayeractivity mediaplayeractivity 中包含的控件數(shù)量最多,與用戶打交道也最為廣泛,每個(gè)控件都對(duì)應(yīng)有各自的功能,如圖 3-2 所示。圖 3-2 mediaplayeractivity 控件分布第一行中:checkbutton,查看列表按鈕。按下此按鈕之后,顯示手機(jī)中存在的視頻文件,并以列表的形式顯示顯示在手機(jī)屏幕上。關(guān)于視頻文件的列表的顯示,在medialistactivity 中實(shí)現(xiàn)。chooserbutton,添加視
54、頻按鈕。按下此按鈕之后,手機(jī)屏幕將顯示 sdcard 中文件列表,通過瀏覽不同路徑,添加所需的視頻文件至視頻列表中。imagebutton,之后的三個(gè) imagebutton 分別是 volumebutton,upbutton,downbutton,即聲音按鈕,加大音量按鈕,減小音量按鈕。第二行中:textview,文本視圖控件。前一個(gè) textview 用來顯示“視頻文件:” ,即一個(gè)提示信息;后一個(gè) textview 用來顯示正播放的視頻文件的名稱。然后是 imagebutton 控件,這里添加一個(gè)聲音的小圖標(biāo)。最后是一個(gè) progressbar 控件,該控件是一個(gè)進(jìn)度條。當(dāng)我們加大或者減
55、小音量時(shí),該進(jìn)度條會(huì)相應(yīng)的發(fā)生變化。第三行中:一個(gè) surfaceview 控件加上一個(gè) imageview 控件。surfaceview 用來將視頻畫面投放到手機(jī)屏幕上,而 imageview 用來顯示視頻是否處于播放狀態(tài)。即當(dāng)暫停視頻播放時(shí),imageview 處于 visible(可見)狀態(tài),當(dāng)繼續(xù)之前暫停的視頻播放時(shí),imageview 處于invisible(不可見)狀態(tài)。第四行中:兩個(gè) textview 分別用來顯示當(dāng)前正雜播放的視頻的時(shí)間信息,前者顯示當(dāng)前播放時(shí)間長(zhǎng)度,后者顯示視頻文件的最大時(shí)間長(zhǎng)度。第五行中:seekbar,另一種進(jìn)度條,隨著視頻播放進(jìn)度而變化。第六行中:六個(gè)
56、imagebutton 控件,分別為play,pause,reset,stop,last,next,即播放按鈕,暫停按鈕,重置按鈕,停止按鈕,上一個(gè)按鈕,下一個(gè)按鈕。(2) medialistactivity接下來是 medialistactivity。該 activity 引用的是 medialist.xml 布局文件。由于只需要顯示視頻文件列表,所以在 medialist.xml 布局文件中只添加了一個(gè) listview 控件用來實(shí)現(xiàn)視頻列表的顯示功能,如圖 3-3 所示。圖 3-3 medialist(3) filechooseractivity然后是 filechooseractivi
57、ty,當(dāng)按下添加視頻 button 時(shí),由 mediaplayeractivity 跳轉(zhuǎn)到此 activity,并根據(jù)用戶操作來完成添加視頻文件的操作。該 activity 引用 fileselect.xml 布局文件。該布局文件中包含一個(gè) textview,一個(gè) listview,和兩個(gè) button 控件。textview 用來顯示當(dāng)前正在瀏覽的路徑,listview 用來顯示當(dāng)前路徑下存在的文件或者文件夾。當(dāng)選中視頻文件后,單擊確認(rèn) button 即可。若不打算添加,則取消即可,如圖3-4 所示。圖 3-4filechooseractivity 布局(4) updatemedialist
58、activity最后是 updatemedialistactivity。當(dāng)用戶通過 menu 菜單點(diǎn)擊“更新列表”選項(xiàng)時(shí),程序跳轉(zhuǎn)到此 activity。該 activity 引用 updatelist.xml 布局文件。該布局文件中也僅僅只包含一個(gè) listview 控件,用來顯示更新選項(xiàng)。如圖 3-5 所示。圖 3-5 更新列表第四章第四章 測(cè)試測(cè)試4.1 測(cè)試環(huán)境和條件測(cè)試環(huán)境和條件本次軟件測(cè)試環(huán)境在 avd(android virtual device)和真機(jī)中測(cè)試。真機(jī)硬件配置:手機(jī)型號(hào):zte v889d;android 版本;4.0.4;內(nèi)核版本號(hào):3.0.8-perf-svn2
59、2921zte-kernelzdroid-smt;ram:512m;cpu:800mhz。4.2 測(cè)試測(cè)試系統(tǒng)運(yùn)行的流程如下運(yùn)行程序后,首先進(jìn)入的是主 activity,即 mediaplayer activity。如圖 4-1。圖 4-1 程序運(yùn)行時(shí)主界面當(dāng)點(diǎn)擊菜單 menu 時(shí),會(huì)出現(xiàn)三個(gè)選項(xiàng):播放列表,更新列表,退出。如圖 4-2 所示。圖 4-2 菜單選項(xiàng)選擇更新列表操作,進(jìn)入 updatemedialist activity,如圖 4-3 所示。圖 4-3 更新列表操作單擊選擇自動(dòng)搜索,程序自行掃描 sdcard 中的文件,并將掃描到的視頻文件添加到視頻列表中去。如圖 4-4 和圖
60、4-5 所示。圖 4-4 自動(dòng)搜索視頻文件圖 4-5 自動(dòng)更新結(jié)果搜索完成后點(diǎn)擊產(chǎn)看列表查看視頻文件列表,也可以通過菜單中的播放列表選項(xiàng)查看。查看結(jié)果如圖 4-6 所示。圖 4-6 查看視頻文件列表在更新列表界面下,用戶也可以通過手動(dòng)添加來添加視頻文件。如圖 4-7 所示,被選中的視頻文件會(huì)被打上對(duì)勾,以表示選中。圖 4-7 手動(dòng)添加視頻文件單擊確定按鈕完成添加。添加后顯示圖 4-8。圖 4-8 添加視頻文件完成接下來從視頻列表中選擇一個(gè)視頻文件來播放。如圖 4-9 所示。圖 4-9 播放視頻文件由上圖可知,視頻播放時(shí),可以獲得一些視頻文件信息。如視頻名稱,播放進(jìn)度,視頻時(shí)長(zhǎng),視頻后綴名。當(dāng)按下暫停按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估與安全認(rèn)證合同
- 2025年度醫(yī)療器械表面打蠟消毒合同
- 2025年度健康養(yǎng)生產(chǎn)品全國(guó)銷售總代理合同
- 2025年度辦事處翻譯與全球市場(chǎng)調(diào)研合同
- 度電視劇制作與播出合同書
- 2025年房屋買賣資金借款合同
- 2025年基礎(chǔ)設(shè)施項(xiàng)目融資合同標(biāo)準(zhǔn)格式
- 2025年終止土地承包合同樣本
- 2025年勞務(wù)公司業(yè)務(wù)外包合同標(biāo)準(zhǔn)
- 合同法實(shí)施成效與展望
- 《朝天子詠喇叭》教學(xué)設(shè)計(jì)
- 五金行業(yè)質(zhì)量規(guī)范標(biāo)準(zhǔn)
- 幼小銜接拼音試卷-帶彩圖-幼小銜接拼音試卷圖片-幼小拼音試卷習(xí)題
- 《金融學(xué)基礎(chǔ)》實(shí)訓(xùn)手冊(cè)
- 數(shù)與代數(shù)結(jié)構(gòu)圖
- 曹晶《孫悟空大鬧蟠桃會(huì)》教學(xué)設(shè)計(jì)
- 國(guó)際貿(mào)易進(jìn)出口流程圖
- 玄武巖纖維復(fù)合筋工程案例及反饋情況
- 財(cái)務(wù)收支記賬表
- 物流園區(qū)綜合管理系統(tǒng)需求(共19頁)
- 《質(zhì)量管理小組活動(dòng)準(zhǔn)則》2020版_20211228_111842
評(píng)論
0/150
提交評(píng)論