《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 設(shè)計應(yīng)用 > 基于Android系統(tǒng)的影音播放器開發(fā)設(shè)計
基于Android系統(tǒng)的影音播放器開發(fā)設(shè)計
摘要: 基于開源移動終端操作系統(tǒng)Android開發(fā)了一個影音播放器 影音播放器由文件測覽器,、視頻播放,、音頻播放、播放列表管理及歌詞同步顯示等模塊組成,,界面采用XML腳本配置生成。軟件基于文件瀏覽器的方式實現(xiàn)了媒體庫的管理,,大大方便了用戶的操作 軟件每次啟動時都會對儲存設(shè)備進行掃描,,將掃描到的歌詞文件信息保存到歌詞數(shù)據(jù)庫中。對正在播放的歌曲,,根據(jù)歌曲名字檢索歌詞文件,,并同步顯示歌詞。在Android模擬器和0MAP 3530開發(fā)板上對播放器進行了功能測試與驗證,。
Abstract:
Key words :

  0 引 言

 

  Android一詞的本義指“機器人”,,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源移動終端操作系統(tǒng)的名稱,該平臺由操作系統(tǒng),、中間件,、用戶界面和應(yīng)用軟件組成,,是首個為移動終端打造的真正開放和完整的移動軟件。

  隨著科技的不斷發(fā)展,,手機不再只是人們?nèi)粘I畹囊苿油ㄐ殴ぞ?,而是一個多媒體平臺,可提供強大的多媒體功能,,越來越多的人喜歡用手機聽音樂,、看電影。

  Android系統(tǒng)內(nèi)置的音樂播放器基于媒體庫對歌曲進行管理,,并且不支持歌詞的同步顯示,。對于部分已經(jīng)習(xí)慣的基于文件瀏覽器形式播放器的用戶,操作起來會有所不便,。對于Android手機操作系統(tǒng),,可以充分利用它豐富的可編程擴展性,開發(fā)出新的播放器應(yīng)用軟件,。

 

  1 Android平臺

 

  Android軟件開發(fā)主要涉及到的相關(guān)技術(shù)包括Android SDK(開發(fā)插件,、調(diào)試工具包等)、Android系統(tǒng)架構(gòu)和Android應(yīng)用程序組件,。

  1.1 Android SDK

  Android SDK(Software Development Kit)提供了Android平臺上使用Java語言進行Android應(yīng)用開發(fā)的API接口和工具,。其中,最重要的工具是Android模擬器和Eclipsel2 的Android開發(fā)工具插件,,同時SDK也包含了各種在模擬器上用于調(diào)試,、打包和安裝的工具。

  Eclipse IDE的Android開發(fā)工具插件(AndroidDevelopment Tools Plugin for the Eclipse IDE,,ADT)大大擴展了Eclipse集成環(huán)境功能,,使得生成和調(diào)試Android應(yīng)用程序既容易又迅速。使用Eclipse,,ADT插件可以加快開發(fā)Android應(yīng)用程序的速度,。

  Android模擬器是在計算機上運行的一個虛擬移動設(shè)備,可以使用模擬器來模擬一個實際的Android運行環(huán)境,,來設(shè)計,、調(diào)試和測試應(yīng)用程序。

  Dalvik調(diào)試監(jiān)視器服務(wù)(Dalvik Debug MONitorService,,DDMS)集成了Dalvik(為Android平臺定制的虛擬機(VM)),,能夠在模擬器或者設(shè)備上管理進程并協(xié)助調(diào)試。DDMS提供進程管理,,產(chǎn)生跟蹤數(shù)據(jù),,觀察堆和線程信息,截取模擬器屏幕畫面,模擬來電或短信等功能,。

  1.2 Android系統(tǒng)架構(gòu)

  Android是一個專門針對移動設(shè)備的軟件集,,它包括一個操作系統(tǒng),中間件和一些重要的應(yīng)用程序 ],。

  Android的系統(tǒng)架構(gòu)從上往下依次是應(yīng)用程序,、應(yīng)用程序框架和組件、Android運行時庫和其他庫,、優(yōu)化的Linux內(nèi)核[ ,。

  1.3 Android應(yīng)用程序的組件

  手機的運行環(huán)境比較復(fù)雜,一個程序運行時經(jīng)常會出現(xiàn)很多的突發(fā)情況,,例如,,來電或者短信及電量不足等。這些問題在Android中都有解決方案,,在Android的應(yīng)用程序中,,以下幾個組件特別重要:

  (1) AcTIvity顧名思義,,Activity就是活動,。應(yīng)用程序必須至少包含一個Activity。Activity提供了一個虛擬的用戶接口,,每一個Activity都有一個默認(rèn)的窗口可以用來顯示用戶界面,,一般情況下,它是全屏的窗口,。例如,影音播放軟件的每個用戶界面就是Activity,。

 ?。?)ServiceService與Activity的主要區(qū)別在于,Service是在后臺活動的,,它沒有用戶界面 ],。典型的應(yīng)用場景是,用戶選擇了一個播放列表開始播放后,,離開了該用戶界面(Activity),,如果仍然希望歌曲不會暫停,就可以用Service去調(diào)用播放器,,而不是在Activity中調(diào)用播放器,。

  (3)Intent在Android中,,每一個行為都可以抽象為一個Intent,。可以簡單地把Intent理解為一個包含了數(shù)據(jù)的消息,。Intent可以用于啟動一個Activity或者Service,,可以用于進程間的通信,。事實上,應(yīng)用程序的啟動也是通過Intent實現(xiàn)的,。

 ?。?)Content providersAndroid平臺內(nèi)置了一套SQLite數(shù)據(jù)儲存機制,并包含一系列管理SQLite Database的相關(guān)方法_7],。

  在應(yīng)用程序中,,可以通過Content providers訪問數(shù)據(jù)庫。每個Content provider都定義了一系列的方法用于訪問它對應(yīng)的數(shù)據(jù)庫,。應(yīng)用程序在新建數(shù)據(jù)庫時也可以定義相應(yīng)的Content provider用于向其他應(yīng)用程序共享數(shù)據(jù),。一般情況下,應(yīng)用程序不直接調(diào)用Con—tent provider定義的函數(shù),,而是通過ContentResolve間接調(diào)用,。這樣設(shè)計的好處是一個ContentResolver可以訪問任何的Content provider,統(tǒng)一了接口,。

 

  2 硬件平臺

 

  系統(tǒng)的硬件平臺采用基于OMAP3530的開發(fā)板DevKit8000,。美國TI公司的OMAP3530應(yīng)用處理器_8 集成了600 MHz的ARM Cortex-A8 CPU 內(nèi)核和430 MHz的C64x+ DSP內(nèi)核,并提供了USB 2.0OTG,,SD/MMC和LCD等豐富的外設(shè)接口,,適用于各種無線手持終端應(yīng)用。DevKit8000開發(fā)板外接了一個4.3寸的LCD屏,、電阻式觸摸屏和音頻輸入/輸出接口,,可以用于對基于Android系統(tǒng)的影音播放器的開發(fā)。

  通過打補丁包和開發(fā)LCD驅(qū)動,、觸摸屏驅(qū)動,、按鍵驅(qū)動等外設(shè)驅(qū)動,在DevKit8000開發(fā)板上移植了版本為6.2.29的Linux內(nèi)核和版本為1.6的Android系統(tǒng),。

 

  3 Android影音播放器軟件開發(fā)

 

  3.1 軟件功能

  Android的影音播放軟件主要包括以下功能:

 ?。?)播放視頻支持快進、快退,、暫停,、繼續(xù)和進度拖拽。

 ?。?)播放音頻支持快進,、快退、上一首,、下一首,、暫停、繼續(xù)、停止和進度拖拽,;支持隨機播放,、循環(huán)播放兩種模式;支持歌詞同步顯示,。

  3.2 各模塊之間的關(guān)系

  影音播放軟件工程文件主要包括src文件夾(Java源碼),、res文件夾(資源文件)和AndroidManifeST.xml(程序清單)。軟件主要由8個Activities組成,,每個Activity對應(yīng)于一個模塊,。不同的Activities通過In—tent進行通信和相互調(diào)用。

  各個模塊之間的關(guān)系如圖1所示,。

 

  各個模塊之間關(guān)系

 

  視頻播放調(diào)用順序依次是<啟動畫面>,、< 主菜單>、<文件瀏覽器>,、<視頻播放器>,;音頻播放調(diào)用順序依次是<啟動畫面>、< 主菜單>,、<播放列表管理> ,、<播放列表內(nèi)容管理> 、<正在播放> ,。在<正在播放>的界面上,,點擊相應(yīng)的按鈕就可以執(zhí)行歌詞同步顯示功能。

  在工程目錄的AndroidManifest:.xml(清單文件)里面,,添加各Activity的說明,。下面為對應(yīng)啟動畫面的描述:

 

  

 

  3.3 軟件模塊

  根據(jù)影音播放軟件功能,可以將軟件劃分為以下幾個模塊:

 ?。?)<啟動畫面>模塊,。主要功能是顯示軟件啟動畫面。利用定時器線程去控制啟動畫面顯示時間,,并且當(dāng)用戶按下按鍵的時候,會立即中斷啟動畫面的顯示并跳轉(zhuǎn)到<主菜單>模塊,。

 ?。?)<主菜單>模塊。主要功能是提供播放軟件的用戶界面,。用戶界面由Android的XML配置生成,。

  主菜單提供三個選項,分別是視頻播放,、音頻播放和退出程序,;視頻播放時,調(diào)用<文件瀏覽器>模塊,讓用戶選擇需要播放的視頻文件,。音頻播放時,,調(diào)用<播放列表管理>模塊,讓用戶選擇需要播放的列表,。

 ?。?)<文件瀏覽器>模塊。用于瀏覽內(nèi)存卡上的文件,。如果路徑是文件夾,,則列出該文件夾下的所有文件;如果路徑是文件,,則先檢查文件擴展名是否為支持的視頻格式,,如果是,則調(diào)用系統(tǒng)內(nèi)置的播放器播放,。

 ?。?)<音頻播放>模塊。它包括以下幾個模塊:

 ?、?<播放列表管理>模塊,。主要功能是添加、刪除,、重命名列表,。通過Content providers訪問系統(tǒng)的播放列表數(shù)據(jù)庫,并利用修改的結(jié)果更新數(shù)據(jù)庫,。因為采用的是系統(tǒng)的數(shù)據(jù)庫,,所以與系統(tǒng)內(nèi)置的音樂播放器列表共用。同時,,它還提供添加列表內(nèi)容的接口,。通過播放列表管理模塊進入到<播放列表內(nèi)容管理>模塊。

 ?、?<播放列表內(nèi)容管理>模塊,。主要功能是添加、刪除,、多選播放列表中的歌曲,。在Android中,每個列表都會有一個相應(yīng)的列表內(nèi)容庫,,保存了該列表里面所包含的歌曲ID,。通過Content Providers可以訪問并修改。其中,,添加功能是基于文件瀏覽器實現(xiàn)的,,在文件瀏覽器中可以對音樂文件的進行標(biāo)記和添加,。

  ③ <正在播放>模塊,。主要功能是顯示歌曲的相關(guān)信息(專輯封面,、專輯名稱、歌手,、長度等)和顯示正在播放歌曲的時間進度,,控制歌曲的播放。

  <正在播放>模塊的界面用XML配置生成,。

  

  在Android的音樂庫已經(jīng)將歌曲的Idv2或Idv3標(biāo)簽 進行解析,,并將歌曲的相關(guān)信息(包括演唱者、流派,、時長等)保存在媒體數(shù)據(jù)庫中,。只需要通過Con—tent providers對該數(shù)據(jù)庫進行訪問,就可以得到相關(guān)的信息并送顯示,。獲取歌曲相關(guān)信息的程序源碼如下:

  

  

  通過創(chuàng)建MediaPlayer播放器類對象,,調(diào)用An—droid提供的API就可以實現(xiàn)文件的解碼和播放。

 ?、?<歌詞同步顯示>模塊,。程序啟動時,對內(nèi)存卡進行掃描,,將掃描到的歌詞文件名字和路徑保存到歌詞數(shù)據(jù)庫中,。對正在播放的歌曲,根據(jù)歌曲名字自動檢索歌詞文件,,并同步顯示歌詞,。第一次啟動該程序時,需要新建歌詞數(shù)據(jù)庫,,用于保存歌詞文件信息,。An—droid提供了類SQLiteOpenHelper用于新建數(shù)據(jù)庫。

  DATABASE— CREATE是一個SQL原語的字符串宏,,其內(nèi)容是“create table lyric—meta(一id integerprimary key autoincrement,,一display— nam e text notnull,一data text not nul1),;”表示創(chuàng)建一個歌詞文件的表,,包含一id,一display_name,,一data三列。其中jd是自增的且惟一的整數(shù),,一display—nAME是歌詞文件名稱,,一data是歌詞文件路徑,。

 

  4 系統(tǒng)測試

 

  首先在Android SDK 1.6的模擬器上對影音播放器的各項功能進行調(diào)試和測試。調(diào)試結(jié)束后,,將編譯生成的安裝文件(.APK)拷貝到SD卡,,利用Android文件管理器將播放器軟件安裝到OMAP3530開發(fā)板的系統(tǒng)上,然后將測試用的視頻文件,、MP3音樂文件及對應(yīng)的歌詞文件(.1rc)拷貝到SD卡,,0MAP3530開發(fā)板上的影音播放器可以通過文件瀏覽器選擇音視頻文件并正常播放,在播放音頻文件時可以正常顯示匹配的歌詞,,支持快進,、快退、暫停等控制功能,。

 

  5 結(jié) 語

 

  本文以Android上影音播放器的開發(fā)為范例,,詳細(xì)給出了Android上應(yīng)用的開發(fā)方法。開發(fā)的影音播放器在Android手機模擬器和OMAP3530開發(fā)板上測試通過,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。