基于Android系統(tǒng)的影音播放器開發(fā)
摘要:基于開源移動終端操作系統(tǒng)Android開發(fā)了一個影音播放器。影音播放器由文件瀏覽器、視頻播放、音頻播放、播放列表管理及歌詞同步顯示等模塊組成,界面采用XML,腳本配置生成。軟件基于文件測覽器的方式實現(xiàn)了媒體庫的管理,大大方便了用戶的操作。軟件每次啟動時都會對儲存設備進行掃描,將掃描到的歌詞文件信惠保存到歌詞數(shù)據(jù)庫中。對正在播放的歌曲,根據(jù)歌曲名字檢索歌詞文件,并同步顯示歌詞。在Android模擬器和OMAP 3530開發(fā)板上對播放器進行了功能測試與驗證。
關(guān)鍵詞:Android;影音播放器;歌詞顯示;OMAP3530
0 引言
Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源移動終端操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,是首個為移動終端打造的真正開放和完整的移動軟件。
隨著科技的不斷發(fā)展,手機不再只是人們?nèi)粘I畹囊苿油ㄐ殴ぞ?,而是一個多媒體平臺,可提供強大的多媒體功能,越來越多的人喜歡用手機聽音樂、看電影。Android系統(tǒng)內(nèi)置的音樂播放器基于媒體庫對歌曲進行管理,并且不支持歌詞的同步顯示。對于部分已經(jīng)習慣的基于文件瀏覽器形式播放器的用戶,操作起來會有所不便。對于Android手機操作系統(tǒng),可以充分利用它豐富的可編程擴展性,開發(fā)出新的播放器應用軟件。
1 Android平臺
Android軟件開發(fā)主要涉及到的相關(guān)技術(shù)包括Android SDK(開發(fā)插件、調(diào)試工具包等)、Android系統(tǒng)架構(gòu)和Android應用程序組件。
1.1 Android SDK
Android SDK(Software Development Kit)提供了Android平臺上使用Java語言進行Android應用開發(fā)的API接口和工具。其中,最重要的工具是Android模擬器和Eclipse的Android開發(fā)工其插件,同時SDK也包含了各種在模擬器上用于調(diào)試、打包和安裝的工具。
Eclipse IDE的Android開發(fā)工具插件(AndroidDevelopment Tools Plugin for the Eclipse IDE,ADT)大大擴展了Eclipse集成環(huán)境功能,使得生成和調(diào)試Android應用程序既容易又迅速。使用Eclipse,ADT插件可以加快開發(fā)Android應用程序的速度。
Android模擬器是在計算機上運行的一個虛擬移動設備,可以使用模擬器來模擬一個實際的Android運行環(huán)境,來設計、調(diào)試和測試應用程序。
Dalvik調(diào)試監(jiān)視器服務(Dalvik Debug MonitorService,DDMS)集成了Dalvik(為Android平臺定制的虛擬機(VM)),能夠在模擬器或者設備上管理進程并協(xié)助調(diào)試。DDMS提供進程管理,產(chǎn)生跟蹤數(shù)據(jù),觀察堆和線程信息,截取模擬器屏幕畫面,模擬來電或短信等功能。
1.2 Android系統(tǒng)架構(gòu)
Android是一個專門針對移動設備的軟件集,它包括一個操作系統(tǒng),中間件和一些重要的應用程序。Android的系統(tǒng)架構(gòu)從上往下依次是應用程序、應用程序框架和組件、Android運行時庫和其他庫、優(yōu)化的Linux內(nèi)核。
1.3 Android應用程序的組件
手機的運行環(huán)境比較復雜,一個程序運行時經(jīng)常會出現(xiàn)很多的突發(fā)情況,例如,來電或者短信及電量不足等。這些問題在Android中都有解決方案,在Android的應用程序中,以下幾個組件特別重要:
(1)Activity
顧名思義,Activity就是活動。應用程序必須至少包含一個Activity。Activity提供了一個虛擬的用戶接口,每一個Activity都有一個默認的窗口可以用來顯示用戶界面,一般情況下,它是全屏的窗口。例如,影音播放軟件的每個用戶界面就是Activity。
(2)Service
Service與Activity的主要區(qū)別在于,Service是在后臺活動的,它沒有用戶界面。典型的應用場景是,用戶選擇了一個播放列表開始播放后,離開了該用戶界面(Activity),如果仍然希望歌曲不會暫停,就可以用Service去調(diào)用播放器,而不是在Activity中調(diào)用播放器。
(3)Intent
在Android中,每一個行為都可以抽象為一個Intent??梢院唵蔚匕袸ntent理解為一個包含了數(shù)據(jù)的消息。Intent可以用于啟動一個Act-ivity或者Service,可以用于進程間的通信。事實上,應用程序的啟動也是通過Intent實現(xiàn)的。
(4)Content providers
Android平臺內(nèi)置了一套SQLite數(shù)據(jù)儲存機制,并包含一系列管理SQLite Database的相關(guān)方法。在應用程序中,可以通過Content prov-iders訪問數(shù)據(jù)庫。每個Content provider都定義了一系列的方法用于訪問它對應的數(shù)據(jù)庫。應用程序在新建數(shù)據(jù)庫時也可以定義相應的Con-tent provider用于向其他應用程序共享數(shù)據(jù)。一般情況下,應用程序不直接調(diào)用Content provider定義的函數(shù),而是通過ContentResolver間接調(diào)用。這樣設計的好處是一個ContentResolver可以訪問任何的Content provider,統(tǒng)一了接口。
2 硬件平臺
系統(tǒng)的硬件平臺采用基于OMAP3530的開發(fā)板DevKit8000。美國TI公司的OMAP3530應用處理器集成了600 MHz的ARM Cortex-A8 CPU內(nèi)核和430 MHz的C64x+DSP內(nèi)核,并提供了USB 2.OOTG,SD/MMC和LCD等豐富的外設接口,適用于各種無線手持終端應用。DevKit8000開發(fā)板外接了一個4.3寸的LCD屏、電阻式觸摸屏和音頻輸入/輸出接口,可以用于對基于Android系統(tǒng)的影音播放器的開發(fā)。
通過打補丁包和開發(fā)LCD驅(qū)動、觸摸屏驅(qū)動、按鍵驅(qū)動等外設驅(qū)動,在DevKit8000開發(fā)板上移植了版本為6.2.29的Linux內(nèi)核和版本為1.6的Android系統(tǒng)。
評論