【正文】
指導(dǎo)教師: 系: 信息工程系 年級(jí)專業(yè): _08級(jí)計(jì)算機(jī)科學(xué)與技術(shù) 提交日期: 答辯日期: 答辯委員會(huì)主席(簽名): 評(píng)閱人(簽名): 年 月 日 摘 要 在這個(gè)經(jīng)濟(jì)飛速發(fā)展的時(shí)代,移動(dòng)設(shè)備也日益完善,我們大家都已經(jīng)有了在手機(jī)上聽(tīng)音樂(lè)看電影的習(xí)慣,在中國(guó)大陸,谷歌發(fā)布的 Android 手機(jī)因其手機(jī)系統(tǒng)的優(yōu)越性,得以迅速推廣,隨著 Android 智能手機(jī)的普及,各種基于 Android 的應(yīng)用軟件也如雨后春筍般出現(xiàn)了。該多媒體播放器集音頻、視頻播放于一體,音頻播放部分實(shí)現(xiàn)了播放、暫停、上一首、下一首、音量調(diào)節(jié)、歌詞同步顯示、播放模式選擇等功能。s Android mobile phones released because of its mobile phone system, the superiority of the rapid promotion, along with Android smartphone popularization, based on the application of various Android software as have sprung up. This paper is mainly to the Android system on a multimedia player application design and implementation in this paper. Android is an open source system, which is based on the bottom of the Linux operating system, this paper used the media player the Android open source system technology, use Java language and Eclipse development tool to achieve this type of player. And presents the detailed design of the system design process, part of the interface screenshots and main function operation flow diagram, the paper also to development in the process of problems and solutions are discussed. The multimedia player set audio, video broadcast at an anic whole, audio part realize the play, pause, up, down, the sound volume, lyrics synchronous display and play mode selection etc. Function. Performance is good, the user interaction friendly, in the Android system can operate independently。 application 設(shè)計(jì)說(shuō)明 1 項(xiàng)目概況 我們小組選擇這個(gè)項(xiàng)目 —— “ 基于 Android 系統(tǒng)的多媒體播放器的開(kāi)發(fā) ” 為我們的畢業(yè)設(shè)計(jì)課題。 利用手機(jī) 上安裝的播放器來(lái) 播放視頻、音樂(lè) 已成為人們?nèi)粘I畹闹饕顒?dòng)之一。 2 設(shè)計(jì)理念 Android 系統(tǒng) UI 設(shè)計(jì)理念: ?干凈而不過(guò)簡(jiǎn)單 ?關(guān)注內(nèi)容而非修飾 ?保存一致,讓用戶容易投入其中,可附加少許變化 ?使用云端服務(wù)(存儲(chǔ)和同步用戶資料)來(lái)加強(qiáng)用戶體驗(yàn) 播放器界面簡(jiǎn)約大方,時(shí)尚而不缺乏美感,用最簡(jiǎn)單的布局方式呈現(xiàn)出最好的效果;播放器的功能設(shè)計(jì)簡(jiǎn)單,但又不缺乏實(shí)用性,而且容易操作,易于上手。 3 設(shè)計(jì)規(guī)劃及設(shè)計(jì)方法 我們將分為兩部分設(shè)計(jì)該款播放器,第一部分為音頻播放器,第二部分為視頻播放器。 播放器的功能編碼主要基于 Eclipse +SDK 平臺(tái),采用 java 面向?qū)ο笳Z(yǔ)言來(lái)實(shí)現(xiàn) 。主要功能是調(diào)度、監(jiān)控和維護(hù) 計(jì)算機(jī)系統(tǒng) ,負(fù)責(zé)管理計(jì)算機(jī)系統(tǒng)中各種獨(dú)立的硬件,使得它們可以協(xié)調(diào)工作。軟件可靠性和硬件可靠性本質(zhì)區(qū)別在于:后者為物理機(jī)理的衰變和老化所致,而前者是由于設(shè)計(jì)和實(shí)現(xiàn)的錯(cuò)誤所致。軟件設(shè)計(jì)的健壯與否直接反應(yīng)了分析設(shè)計(jì)和編碼人員的水平。這在很大程度上取決于設(shè)計(jì)者的洞察力和 創(chuàng)造性,以及對(duì)設(shè)計(jì)對(duì)象掌握得透徹程度,當(dāng)然它還依賴于設(shè)計(jì)工具和方法的適當(dāng)運(yùn)用。 ( 8)標(biāo)準(zhǔn)化原則 在結(jié)構(gòu)上實(shí)現(xiàn)開(kāi)放,基于業(yè)界開(kāi)放式標(biāo)準(zhǔn),符合國(guó)家和信息產(chǎn)業(yè)部的規(guī)范。 關(guān)鍵詞 : Android。 Android 操作系統(tǒng)是谷歌于 2020 年公布的開(kāi)放式源代碼手機(jī)系統(tǒng),它的開(kāi)放性相對(duì)有其它封閉式手機(jī)系統(tǒng)擁有明顯的優(yōu)勢(shì),任何人都可以根據(jù)自己的喜好和需求將 Android 系統(tǒng)的功能進(jìn)行改進(jìn),在 Android 平臺(tái)上開(kāi)發(fā)屬于自己的應(yīng)用軟件。于是各種手機(jī)播放器相繼被開(kāi)發(fā)出 來(lái),但是很多播放器一味追求外觀花俏,功能過(guò)于龐大,導(dǎo)致用戶手機(jī)資源被過(guò)度占用,造成資源浪費(fèi)。 我們研究了市場(chǎng)上主流的播放器,了解它們各自的插件及編碼方式,分析了各種開(kāi)發(fā)方式的優(yōu)缺點(diǎn),從可行性分析出發(fā),找出一條適合自己的開(kāi)發(fā)之路,編寫(xiě) 出功能實(shí)用,使用方便,占用資源小的播放器。本項(xiàng)目的研究目的是開(kāi)發(fā)一款可以播放主流音頻和視 頻文件的多媒體播放器,并且能夠控制播放,暫停,停止,上一首,下一首,音量調(diào)節(jié),歌詞顯示,界面清新友好,操作簡(jiǎn)單。要求軟件界面設(shè)計(jì)應(yīng)簡(jiǎn)潔、易于上手,交互設(shè)計(jì)友好、人性化、個(gè)性化,能匯聚用戶的忠誠(chéng)度。目前尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用 “ 安卓 ” 或 “ 安致 ” 。 2020 年第一季度, Android 在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。 (2) Application FrameWork 開(kāi)發(fā)者完全可以訪問(wèn)核心應(yīng)用程序所使用的 API 框架。 可擴(kuò)展的視圖( Views )可以用來(lái)建應(yīng)用程序,包括列表( lists), 網(wǎng)格( grids),文本框( text boxes),按鈕( buttons),甚至包括一個(gè)可嵌入的 web 瀏覽器 。 資源管理器( Resource Manager)提供非代碼資源的訪問(wèn),如本地字符串,圖形,和分層文件( layout files )。 活動(dòng)類管理器( Activity Manager)用來(lái)管理應(yīng)用程序生命周期并提 供常用的導(dǎo)航回退功能。 媒體庫(kù) 基于 PacketVideo OpenCORE;該庫(kù)支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括 MPEG4, , MP3, AAC, AMR, JPG, PNG。 FreeType 位圖( bitmap)和向量( vector)字體顯示。 Dalvik 是針對(duì)于同時(shí)高效地運(yùn)行多個(gè) VMs 來(lái)實(shí)現(xiàn)的。 (5) Linux 內(nèi)核 Android 是運(yùn) 行于 Linux kernel 之上,但并不是 GNU/Linux。 bionic/libc/kernel/ 并非標(biāo)準(zhǔn)的 kernel header files。 Repo 是 Android 用來(lái)輔助Git 工作的一個(gè)工具。 Activity 有自己的生命周期,由 Android 系統(tǒng)來(lái)控制。到目前為止我們可以使用 Intent 來(lái) 啟動(dòng)一個(gè)程序組件,我們還可以通過(guò)使用 sendBroadcast()方法來(lái)發(fā)起一個(gè)系統(tǒng)級(jí)別的事件廣播來(lái)傳遞消息。 Android 為常用的數(shù)據(jù)類型(如:音視頻、圖片和聯(lián)系方式等)提供了大量的 Content Provider。我們也可以自己來(lái)定 ContentProvider 共享我們的數(shù)據(jù),方便用戶的訪問(wèn)。 再 新 建 一 個(gè) classpath 變 量 , 值 設(shè) 置 為“ .。 ② 安裝 Eclipse 進(jìn)入 Eclipse 下載頁(yè)面 Eclipse IDE for Java Developers,下載完成后解壓縮即可使用。 ④ 安裝 ADT 這里我們不建議聯(lián)網(wǎng)安裝,因?yàn)橥ǔ6紩?huì)失敗,被屏蔽了。 ⑤ 開(kāi)發(fā)環(huán)境驗(yàn)證及安卓模擬器( AVD)的創(chuàng)建 基本軟件安裝完畢以后,打開(kāi) Eclipse 依次選擇 File→ New→ Project 會(huì)看見(jiàn)Android 項(xiàng)目,創(chuàng)建一個(gè)新的項(xiàng)目。以下分別描述: 播放器的基本控制需求 我們把多媒體播放器的功能細(xì)分成音頻播放器和視頻播放器兩部分, 音樂(lè)播放器主要有播放、暫停、上一首、下一首、第一首、最后一首、音量控制等功能;視頻播放器主要有播放、暫停、上一個(gè)、下一 個(gè)、音量控制、全屏切換等等。 數(shù)據(jù)源分析 播放器應(yīng)用程序自行調(diào)用 Android 庫(kù)函數(shù), SDCard 里所有媒體信息都存儲(chǔ)在這個(gè)類里 ——,從而可以輕松獲取 SD 里面的多媒體文件的詳細(xì)信息,當(dāng)然前提是 SDCard 存在。 系統(tǒng)功能時(shí)序圖 ( 圖 ) 主要描述了系統(tǒng)在運(yùn)行過(guò)程中各個(gè)功能類之間的調(diào)用情況,當(dāng)用戶的操作滿足觸發(fā)條件時(shí),系統(tǒng)將調(diào)用相應(yīng)的方法實(shí)現(xiàn)用戶的需求。 系統(tǒng)功能時(shí)序圖 圖 系統(tǒng)功能時(shí)序圖 多媒體播放器的系統(tǒng)流程圖 程 序 啟 動(dòng) ?是主 界 面否音 樂(lè) 播 放 器 視 頻 播 放 器音 樂(lè) 播 放 列 表 視 頻 播 放 列 表音樂(lè)藝術(shù)家專輯最 近播 放選 擇 歌曲 ?是音 樂(lè) 播 放 界 面否視頻音樂(lè)音樂(lè)庫(kù)視頻庫(kù)關(guān)于退出點(diǎn) 擊M e n u ?是是是是是播 放 器 介 紹 界 面是返 回 ?是是視 頻 播 放 列 表程 序 結(jié) 束選 擇 視頻 ?是視 頻 播 放 界 面否 圖 系統(tǒng)流程圖 系統(tǒng)功能表和系統(tǒng)功能結(jié)構(gòu)圖 我們對(duì)整個(gè)播放器項(xiàng)目進(jìn)行了一個(gè)比較系統(tǒng)的分析,下面通過(guò)系統(tǒng) 功能表和功能結(jié)構(gòu)圖來(lái)理清整個(gè)播放器的功能實(shí)現(xiàn)。 圖 音樂(lè)播放器主界面 播放器一般功能的實(shí)現(xiàn) 圖 功能按鍵截圖 如圖所示,音頻播放器主要實(shí)現(xiàn)的一般播放控制功能有:播放、暫停、上一首、下一首、第一首、最后一首。 第二步:傳入歌曲數(shù)據(jù)源,這里也是一個(gè)數(shù)據(jù)流 ()。播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序 有關(guān),需要用 ()方法讓其停止或 ()。 我們建了一個(gè)適配器包,用來(lái)存放不同的功能列表功能。這個(gè) MediaStore 包括了多媒體數(shù)據(jù)庫(kù)的所有信息,包括音頻,視頻和圖像 ,android 把所有的多媒體數(shù)據(jù)庫(kù)接口進(jìn)行了封裝,所有的數(shù)據(jù)庫(kù)不用自己進(jìn)行創(chuàng)建,直接調(diào)用利用 ContentResolver 去調(diào) 用那些封裝好的接口就可以進(jìn)行數(shù)據(jù)庫(kù)的操作了。得到這個(gè) Context 后就可以調(diào)用getContentResolver 接口獲取 ContentResolver 實(shí)例了。 .table 命令可以列出所有多媒體數(shù)據(jù)庫(kù)的表, .scheme 加上表名可以查詢表中的所有列名。 ContentResolver 的 query 方法接受幾個(gè)參數(shù),參數(shù)意義如下 : Uri:這個(gè) Uri 代表要查詢的數(shù)據(jù)庫(kù)名稱加上表的名稱。 Selections:相當(dāng)于 SQL 語(yǔ)句中的 where 子句,就是代表你的查詢條件。 上面就是各個(gè)參數(shù)的意義,它返回 的查詢結(jié)果一個(gè) Cursor,這個(gè) Cursor 就相當(dāng)于數(shù)據(jù)庫(kù)查詢的中 Result,用法和它差不多。 if (null == cursor) { return null。 if (unknown.equals(singer)) { singer = 未知藝術(shù)家 。 String url = (cursor .getColumnIndex())。 if ((mp3)) { (title)。 (time)。 } else if ((wma)) { (title)。 (time)。 } } while (())。在線更新功能需要解析 url地址。 將 [ ]歌詞時(shí)間標(biāo)記替換成空字符和 字符,然后分離 字符, 處理歌詞取得歌詞時(shí)間節(jié)點(diǎn),將時(shí)間串添加進(jìn)列表數(shù)組;如果不存在歌詞文件,捕捉異常 catch (FileNotFoundException e)并輸出相應(yīng)提示信息。 public String toTime(int time) { time /= 1000。 minute %= 60。 圖