當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]介紹基于Android操作系統(tǒng)的一個多媒體播放器軟件解決方案。該多媒體播放器由啟動畫面、音頻播放、視頻播放等模塊組成,重點分析UI(用戶界面)設(shè)計、數(shù)據(jù)存儲(Preferences等)、多媒體應(yīng)用等技術(shù)難點。在此提出的軟件解決方案在Android 2.3版本的模擬器和HTC A3380上分別進行功能測試與驗證,能夠滿足用戶使用音視頻文件進行本地播放及相關(guān)需求,并提出總結(jié)與展望。

0 引言

Android本義為“機器人”,是目前最流行的移動終端開發(fā)平臺,依靠Google的強大開發(fā)和媒體資源,Android成為眾多移動終端廠商競相追逐的對象。當今全球信息時代,移動終端不再局限于通信業(yè)務(wù),多媒體業(yè)務(wù)的應(yīng)用才是終端廠商的發(fā)展方向。音視頻播放作為一項不可或缺的多媒體業(yè)務(wù),對于具有豐富的可編程擴展性的Android操作系統(tǒng),可以開發(fā)出個性化的音視頻播放應(yīng)用軟件。

1 Android平臺

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

Android是Google于2007年11月5日宣布的基于Linux平臺開源手機操作系統(tǒng)名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。從軟件分層的角度來看,Android平臺自上而下由應(yīng)用程序、應(yīng)用程序框架、Android運行時、庫及Linux內(nèi)核共5部分構(gòu)成。

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

Android系統(tǒng)的基本組件包括Activity(活動)、Service(服務(wù))、BroadcastReceiver(廣播接收者)和ContentProvider(內(nèi)容提供者)等,此外還包括專門負責在基本組件之間傳遞消息的Intent(意向)組件。

2 軟件解決方案

2.1 概述

基于Android平臺的多媒體播放器軟件主要由3個模塊組成:啟動畫面模塊、音頻播放模塊、視頻播放模塊。該播放器具有播放列表預覽、前進、后退、暫停、繼續(xù)、進度拖曳和停止等功能。

2.2 用戶界面設(shè)計

在Android應(yīng)用中,UI(用戶界面)是人與手機之間傳遞、交換信息的媒介和對話接口,是Android系統(tǒng)的重要組成部分。本文設(shè)計的多媒體播放器界面主要由主界面、音/視頻資源列表界面、音/視頻播放列表界面、音/視頻播放界面等組成。本文重點介紹前2種界面設(shè)計。

2.2.1 主界面設(shè)計

主界面采用標簽布局,使用TabHost(標簽頁視圖)并定義2個標簽,分別是音頻播放列表標簽頁和視頻播放列表標簽頁。

TabHost(標簽頁視圖)必須配合TabActivity(標簽Activity組件)使用。該播放器主界面的MainActivity繼承自TabActivity,初始化2個標簽頁,并為每個標簽分配不同的用戶Activity(活動),MusicActivitv(音頻播放)和VedioActivity(視頻播放),通過調(diào)用指定的Intent來打開合適的Activity(活動)。

2.2.2 資源列表界面設(shè)計

資源列表界面采用ListView(列表視圖)作為核心視圖。以視頻資源列表為例,SD卡中的視頻資源列表如圖1所示。

該列表的Activity組件(VideoLibrary)繼承自ListActivity。通過Android平臺為基礎(chǔ)數(shù)據(jù)類型(視頻信息)裝載ContentProvider(內(nèi)容提供器),來獲取位于SD卡設(shè)備目錄/data/data/com.a(chǎn)ndroid.providers.media/databases里的視頻數(shù)據(jù)庫信息,并使用Simple Curosr Adapter適配器作為列表適配器將視頻資源信息填充到列表視圖中。

2.3 數(shù)據(jù)存儲

Android平臺主要提供了4種數(shù)據(jù)存儲機制:Preferences(參數(shù)選項),Databases(數(shù)據(jù)庫),F(xiàn)iles(文件)和Network(網(wǎng)絡(luò))。

Preferences(參數(shù)選項)是一種輕量級的、用于存儲或獲取數(shù)據(jù)類型的“鍵-值”項的機制。它通常用來存放應(yīng)用程序的配置信息。本文設(shè)計的多媒體播放器采用Preferen ces機制來存儲或獲取音/視頻歷史播放信息等配置信息。

2.3.1 獲取數(shù)據(jù)

若要獲取Preferences文件的數(shù)據(jù),例如繼續(xù)播放動作需要讀取播放歷史信息。首先通過調(diào)用Context.getSharedPreferences(String name,int mode)方法傳入Preferences文件名和打開模式來獲得一個Shared Preferences對象sp,若該Preferences文件不存在,在提交數(shù)據(jù)后會創(chuàng)建該Preferences文件。利用該sp對象調(diào)用getter方法,傳入相應(yīng)的鍵來讀取數(shù)據(jù)。

在Android平臺中,所有音/視頻文件的相關(guān)信息都是以Content的形式提供給開發(fā)者的,所以歷史播放信息是content://樣式的URI,也就是前面提到的nowPlaying。

2.3.2 存儲數(shù)據(jù)

若要修改Preferences文件的數(shù)據(jù),例如暫停當前播放,或停止播放并退出該播放器軟件會引起播放歷史信息的變更。而產(chǎn)生該動作的原理是,每當播放新的音/視頻文件首先將其URI賦值到全局變量nowPlaying,然后在退出該播放軟件時處理變更工作:利用Shared Prefer ences對象sp調(diào)用edit()方法獲得一個內(nèi)部類Editor對象editor,利用該editor對象對Preferences文件進行編輯,即讀取nowPlaying的數(shù)據(jù),隨后必須調(diào)用commit()方法才可以完成修改該Preferences文件里鍵為URI_KEY的對應(yīng)數(shù)值。


2.4 多媒體應(yīng)用

2.4.1 多媒體宏觀結(jié)構(gòu)

Android的多媒體部分框架涉及應(yīng)用程序、Java框架層、C語言框架、硬件抽象層等環(huán)節(jié)。其中Android Java框架層提供標準多媒體API供上層相關(guān)應(yīng)用程序調(diào)用。而媒體的播放過程實際上是由下層的OpenCore和Stagefright等實現(xiàn)的。Android多媒體宏觀結(jié)構(gòu)如圖2所示。



2.4.2 多媒體處理過程

典型數(shù)據(jù)流在多媒體播放器中的運行過程主要經(jīng)過以下環(huán)節(jié):最上層的Java應(yīng)用程序?qū)⒚襟wURI(媒體文件或者流媒體)作為輸入設(shè)置到媒體播放器中(主要是通過Android平臺提供的標準接口API,如MediaPlayer(媒體播放器接口)等),經(jīng)過Java框架層,JNI和本地框架層,一直設(shè)置到PVPlayer(OpenCore)。該過程中只是傳遞媒體URI路徑,并無數(shù)據(jù)流傳遞。由PVPlayer進行解析后,將媒體分成音頻流(MP3,AMR,AAC等)和視頻流(H263,H264,MPEG4等),經(jīng)過編解碼器的處理和同步(AVSync)處理后轉(zhuǎn)換成原始數(shù)據(jù)(音頻通常是PCM,視頻通常是YUV或RGB格式)。隨后音視頻原始數(shù)據(jù)將被送入音頻和視頻的輸出環(huán)節(jié)(揚聲器或者顯示屏等硬件)。

2.4.3 多媒體播放接口

Android平臺提供android.media包來管理各種音頻和視頻的媒體接口,該包中的MediaPlayer(媒體播放器接口)用于控制音頻或視頻文件和流的回放。另外在android.widget包中還提供Video View(視頻視圖)組件用于播放視頻文件,以簡化相對于使用Media Player播放視頻的繁瑣控制過程。

(1)MediaPlayer

對播放音頻而言,通過MediaPlayer.crea te(Context context,Uri uri)方法來獲取播放器實例,無需播放準備,直接通過MediaPlay er.start()方法來啟動播放動作。其中nowPlaying就是用戶當前選中的待播放文件。
//開始播放
MediaPlayer mPlayer=MediaPlayer.create(context,nowPlaying);
mPlayer.start();

通過播放器實例mp調(diào)用MediaPlayer.pause()方法可以暫停當前播放行為,可以使用start()方法恢復播放。
首先調(diào)用MediaPlayer.stop()停止當前播放行為,再調(diào)用釋放與播放器相關(guān)資源的方法MediaPlayer.release()來完成停止播放動作。

對于播放視頻來說,通過MediaPlayer(媒體播放器接口)的“setDataSource”方法可以指定視頻文件路徑。與播放音頻數(shù)據(jù)不同的是,視頻播放還要設(shè)置顯示視頻內(nèi)容的承載體,使用MediaPlayer的“setDisplay”方法為當前播放器實例設(shè)置一個用于顯示視頻內(nèi)容、代表屏幕描繪的控制器。這樣用于播放視頻的播放承載體必須實現(xiàn)Surface Holder(表面視圖處理接口)的視圖組件。

(2)Video View

首先視頻播放布局資源中必須定義2個組件:“<VideoView>”標記定義視頻視圖組件,“<MediaController>”標記定義視頻播放控制器組件。在Acitity組件對布局資源填充完成后,獲取布局資源中定義的視頻視圖和播放控制器組件實例(mVideo和mController),視頻視圖實例mVideo指定要播放的視頻文件路徑或URI,用于承載待顯示視頻內(nèi)容,并為mVideo設(shè)置播放控制器用于控制該視頻文件的播放行為(如暫停、前進、后退和進度拖曳等),再調(diào)用VideoView.start()方法啟動播放行為。停止播放行為可以調(diào)用VideoView.stopPlayback()來停止回放行為。


3 測試

本文設(shè)計的多媒體播放器是在Android SDK 2.3平臺下開發(fā)完成的。該播放器以應(yīng)用程序apk的形式分別集成到在Android 2.3模擬器和HTC A3380手機上,通過測試能夠?qū)崿F(xiàn)音/視頻文件的本地播放功能,例如暫停、繼續(xù)、停止、進度拖曳等。以音頻播放為例,測試效果如圖3所示。


4 結(jié)語

本文重點介紹基于Android平臺的多媒體播放器解決方案。側(cè)重分析UI(用戶界面)設(shè)計、音/視頻數(shù)據(jù)信息讀寫,及音/視頻播放等過程;并在Android SDK2.3平臺上進行功能性測試,測試結(jié)果滿足預期,能夠正常播放本地多媒體文件。隨著用戶對移動終端的媒體播放功能的需求日益增加,提供支持更高分辨率的視頻播放,以及和網(wǎng)絡(luò)結(jié)合的流媒體方面的功能將是下一步的研究重點。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉