【正文】
的平臺(tái)也將很快走向成熟。我們也可以自己來定ContentProvider共享我們的數(shù)據(jù),方便用戶的訪問。我們可以方便的進(jìn)行數(shù)據(jù)操作。Provider。Android用來保存和檢索數(shù)據(jù),并且使應(yīng)用程序之間相互訪問數(shù)據(jù)成為可能。Content我們可以在你的應(yīng)用程序中實(shí)現(xiàn)Broadcast顧名思義廣播接收器,它和事件處理機(jī)制類似,只不過事件處理機(jī)制是程序組件級(jí)別的(例如,某個(gè)按鈕的單擊事件),而廣播事件處理機(jī)制是系統(tǒng)級(jí)別的。BroadcastReceiver顧名思義Service就是運(yùn)行在后臺(tái)的一種服務(wù)程序,一般很少和用戶交互,因此沒有可視化界面定義一個(gè)Service類比較簡(jiǎn)單,只要繼承Service類,實(shí)現(xiàn)其生命周期中的方法就可以了。(2) ServiceActivity有自己的生命周期,由Android系統(tǒng)來控制。在Android系統(tǒng)中Activity提供可視化的用戶界面,一個(gè)Android應(yīng)用通常由多個(gè)Activity組成。下面分別介紹四大組件:(1) Activity用來輔助Git工作的一個(gè)工具。Repo來初始化源碼。目前Android的Linuxkernel控制包括安全(Security),存儲(chǔ)器管理(MemoryManagement),程序管理(ProcessManagement),網(wǎng)絡(luò)堆棧(NetworkStack),驅(qū)動(dòng)程序模型(DriverModel)等。Android的kernelheader是利用工具由Linuxkernelheader所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。Android為了達(dá)到商業(yè)應(yīng)用,必須移除被GNUGPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到userspace,使得Linuxdriver與Linuxkernel徹底分開。因?yàn)樵谝话鉍NU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X1Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Dalvik虛擬機(jī)依賴于linux的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。該虛擬機(jī)是基于寄存器的,所有的類都經(jīng)由JAVA匯編器編譯。Dalvik是針對(duì)于同時(shí)高效地運(yùn)行多個(gè)DVMs來實(shí)現(xiàn)的。RuntimeAndroid一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫引擎。l FreeType:位圖(bitmap)和向量(vector)字體顯示。l 3Dl SGL:一個(gè)內(nèi)置的2D圖形引擎。l LibWebCore:一個(gè)最新的web瀏覽器引擎用來支持Android瀏覽器和一個(gè)可嵌入的web視圖。l Surfacel 媒體庫:基于PacketVideo以下是一些主要的核心庫: Libraries庫Android包括一個(gè)被Android系統(tǒng)中各種不同組件所使用的C/C++庫集。l 通知管理器(NotificationManager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息;l 資源管理器(Resource所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:l 可擴(kuò)展的視圖(Views)可以用來建應(yīng)用程序,包括列表(lists)、網(wǎng)格(grids)、文本框(textboxes)、按鈕(buttons),甚至包括一個(gè)可嵌入的web瀏覽器;該應(yīng)用程序架構(gòu)用來簡(jiǎn)化組件軟件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。所有的應(yīng)用程序都是用JAVA編寫的 Application Android系統(tǒng)有如下的幾大特性 l 應(yīng)用程序框架:支持組件的重用與替換;l Dalvik虛擬機(jī):專門為移動(dòng)設(shè)備做了優(yōu)化;l 內(nèi)部集成瀏覽器:該瀏覽器基于開源的WebKit引擎;l 優(yōu)化的圖形庫:包括2D和3D圖形庫、3D圖形庫基于OpenGL、ES;l SQLite:用作結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ);l 多媒體支持:包括常見的音頻、視頻和靜態(tài)印象文件格式(如MPEGMPAAC、AMR、JPG、PNG、GIF)l GSM電話(依賴于硬件);l 藍(lán)牙Bluetooth、EDGE、3GandWiFi(依賴于硬件);l 照相機(jī)、GPS、指南針和加速度計(jì)(依賴于硬件);l 豐富的開發(fā)環(huán)境:包括設(shè)備模擬器、調(diào)試工具、內(nèi)存及性能分析圖表和Eclipse集成開發(fā)環(huán)境插件 Android基本框架(Android滿足人們多元化的音頻數(shù)據(jù)需求。本課題主要研究的內(nèi)容是Android原生多媒體框架對(duì)音頻文件的編碼和解碼操作。 Android系統(tǒng)是Google及其開發(fā)聯(lián)盟推出基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)。AudioSystem的實(shí)現(xiàn)類是AudioFlinger。 Android是基于Linux內(nèi)的的,不過僅僅在Linux下實(shí)現(xiàn)音頻播放功能是不夠的。本文將重點(diǎn)介紹Android系統(tǒng)原生多媒體框架。但是原生Android系統(tǒng)因?yàn)榘鏅?quán)法律原因,對(duì)一些音頻編碼格式不支持。這也讓更多的人對(duì)這一操作系統(tǒng)有了更濃厚的興趣。關(guān)鍵字:Android多媒體 OpenCore音頻編碼 音頻解碼 聲音數(shù)據(jù)處理Audio codec technology research and application based on the Android platformLeiChao(Longdong UniversitySchool of Information Engineering, GansuQingyang745000)ABSTRACT: In this era of rapid econmic development,but also increasingly sophisticated mobile devices,we already have the habit of listening to music,watching movies on the phone,in china,Google releaed its Android mobile phone system superiority,rapid promotion with the popularity of Android smartphones,a variety of Androidbased applications have sprung ,with the largescale construction of 3G networks and the rapidly growing popularity of smart phones,mobile internet era has quietly.KEYWORDS:Android MultimediaOpenCore Audio CodingAudio decoding Audio data processing 1 緒論當(dāng)今社會(huì)的生活節(jié)奏越來越快,人們對(duì)手機(jī)的要求也越來越高,由于手機(jī)市場(chǎng)發(fā)展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在市場(chǎng)上主流的手機(jī)操作系統(tǒng)有Windows編號(hào) 畢 業(yè) 論 文 ( 屆本科)論文題目: 基于Android平臺(tái)的音頻編解碼技術(shù)研究與應(yīng)用學(xué) 院: 信息工程學(xué)院 專 業(yè): 計(jì)算機(jī)信息與科學(xué)技術(shù) 班 級(jí): 作者姓名: 指導(dǎo)教師: 完成時(shí)間: 基于Android平臺(tái)的音頻編解碼技術(shù)研究與應(yīng)用摘要:在這個(gè)經(jīng)濟(jì)飛速發(fā)展的時(shí)代,移動(dòng)設(shè)備也日益完善,我們大家都已經(jīng)有了在手機(jī)上聽音樂看電影的習(xí)慣,在中國(guó)大陸,谷歌發(fā)布的Android手機(jī)因其手機(jī)系統(tǒng)的優(yōu)越性,得以迅速推廣,隨著Android智能手機(jī)的普及,各種基于Android的應(yīng)用軟件也如雨后春筍般出現(xiàn)了。同時(shí),隨著3G網(wǎng)絡(luò)大規(guī)模建設(shè)和智能手機(jī)迅速普及,移動(dòng)互聯(lián)網(wǎng)時(shí)代已經(jīng)悄然而至。mobile(微軟),SysBian(諾基亞),IOS(蘋果)以及谷歌的Android操作系統(tǒng),其中Android系統(tǒng)因?yàn)殚_發(fā)源代碼而具有廣闊的發(fā)展前景,已經(jīng)和國(guó)內(nèi)外諸多手機(jī)廠家開展了合作。Android操作系統(tǒng)是谷歌于2007年公布的開放式源代碼手機(jī)系統(tǒng),它的開放性相對(duì)有其它封閉式手機(jī)系統(tǒng)擁有明顯的優(yōu)勢(shì),任何人都可以根據(jù)自己的喜好和需求將Android系統(tǒng)的功能進(jìn)行改進(jìn),在Android平臺(tái)上開發(fā)屬于自己的應(yīng)用軟件。隨著計(jì)算機(jī)的廣泛應(yīng)用,手機(jī)市場(chǎng)的迅速發(fā)展,各種音頻視頻資源也在網(wǎng)上廣為流傳,這些資源看似平常,但已逐漸成為了人們生活中必不可少的一部分了。這就限制了手機(jī)的使用范圍。通過NDK方式擴(kuò)展其支持范圍,方便用戶使用。它的音頻播放功能是依附于Android下的音頻系統(tǒng)的,Android下的音頻系統(tǒng)的對(duì)外接口是AudioSystem接口類,應(yīng)用程序可以通過此接口訪問到音頻資源。本文研究的主要內(nèi)容就是如何實(shí)現(xiàn)特定格式的音頻文件的生成和播放。Android平臺(tái)為開發(fā)者不僅提供了完整的多媒體解決方案,而且提供了統(tǒng)一、簡(jiǎn)單、易用的開發(fā)接口。并通用使用系統(tǒng)自帶的多媒體功能完成實(shí)際開發(fā)工作。2 Android開發(fā)平臺(tái)介紹Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)軟件。Architecture) 圖22 Android系統(tǒng)框架圖 ApplicationsAndroid會(huì)同一個(gè)核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。FrameWork開發(fā)者完全可以訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序重用機(jī)制使得組建可以被用戶替換。l 內(nèi)容管理器(ContentProviders)使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù);Manager)提供非代碼資源的訪問,如本地字符串,圖形,和分層文件(layoutfiles);l 活動(dòng)類管理器(ActivityManager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。該庫通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。l 系統(tǒng)C庫:一個(gè)從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(libc),專門為基于embeddedlinux的設(shè)備定制。OpenCORE;該庫支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)印像文件包括MPEGMPAAC、AMR、JPG、PNG。Manager:對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無縫融合。libraries:;該庫可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。SQLite Android包括了一個(gè)核心庫,該核心庫提供了JAVA編程語言核心庫的大多數(shù)功能。每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。該格式文件針對(duì)最小內(nèi)存使用做了優(yōu)化。 Linux內(nèi)核Android是運(yùn)行于Linuxkernel之上,但并不是GNU/Linux。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。bionic/libc/kernel并非標(biāo)準(zhǔn)的kernelheaderfiles。下載Android源碼之前,先要安裝其構(gòu)建工具Repo是Android Android系統(tǒng)的四大組件 在Android系統(tǒng)中,為我們提供了四大基本組件,每個(gè)組件是一個(gè)視圖,但是有些是可見的,有些是不可見的視圖,像Activity,ContentProvider是可見的視圖,Service和BroadcastReceiver是不可見的,它們只在系統(tǒng)的后臺(tái)運(yùn)行。簡(jiǎn)介多個(gè)Activity組成了Activity棧(Stack),當(dāng)前活動(dòng)的Activity處于棧頂。簡(jiǎn)介通過service,我們可以調(diào)用startService()啟動(dòng)一個(gè)Service或者bindService()方法來綁定一個(gè)存在的Service。(3) Broadcast簡(jiǎn)介Receiver到目前為止我們可以使用Intent來啟動(dòng)一個(gè)程序組件,我們還可以通過使用sendBroadcast()方法來發(fā)起一個(gè)系統(tǒng)級(jí)別的事件廣播來傳遞消息。Receiver來監(jiān)聽和響應(yīng)這些廣播的Intent。(4) ContentProvider簡(jiǎn)介Provider它是跨應(yīng)用程序共享數(shù)據(jù)的唯一方法。為常用的數(shù)據(jù)類型(如:音視頻、圖片和聯(lián)系方式等)提供了大量的Content通過這樣定義好的ContentProvider當(dāng)然我們必須擁有適當(dāng)?shù)臋?quán)限。 :(1)開放性在優(yōu)勢(shì)方面,Android平臺(tái)首先就是其開放性,開發(fā)的平臺(tái)允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來。開放性對(duì)于Android的發(fā)展而言,有利于積累人氣,這里的人氣包括消費(fèi)者和廠商,而對(duì)于消費(fèi)者來講,最大的受益正是豐富的軟件資源。[5](2)掙脫運(yùn)營(yíng)商的束縛在過去很長(zhǎng)的一段時(shí)間,特別是在歐美地區(qū),手機(jī)應(yīng)用往往受到運(yùn)營(yíng)商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運(yùn)營(yíng)商的控制。隨著EDGE、HSDPA這些2G至3G移動(dòng)網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不是運(yùn)營(yíng)商口中的笑談。功能上的差異和特色,卻不會(huì)影響到數(shù)據(jù)同步、甚至軟件的兼容。(4)不受任何限制的開發(fā)商Android平臺(tái)提供給第三方開發(fā)商一個(gè)十分寬泛、自由的環(huán)境。但也有其兩面性,血腥、暴