www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Android的多媒體應(yīng)用開(kāi)發(fā)與研究

摘要: 首先介紹并分析Android 系統(tǒng)的層次架構(gòu),并在此基礎(chǔ)上介紹Android 應(yīng)用程序開(kāi)發(fā)的相關(guān)技術(shù)和基本的開(kāi)發(fā)流程。接下來(lái)介紹Android 提供的多媒體開(kāi)發(fā)組件。最后用具體的應(yīng)用程序---播放器簡(jiǎn)要說(shuō)明Android 多媒體應(yīng)用程序的開(kāi)發(fā)方法。

0 引言

2007 年11 月由Google 牽頭,有30 多家移動(dòng)技術(shù)和無(wú)線(xiàn)應(yīng)用領(lǐng)域領(lǐng)先企業(yè)組成的開(kāi)放手機(jī)聯(lián)盟( Open Handset Alliance) 發(fā)布了其智能手機(jī)平臺(tái)---Android.Android 是一個(gè)開(kāi)放、自由的移動(dòng)終端平臺(tái),它是由操作系統(tǒng)、中間件、用戶(hù)界面、應(yīng)用軟件組成,同時(shí)其開(kāi)放性保證該平臺(tái)不存在任何阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專(zhuān)有權(quán)障礙。開(kāi)發(fā)人員在該平臺(tái)開(kāi)發(fā)的應(yīng)用程序是使用Java 語(yǔ)言編寫(xiě)的,在Dalvik 虛擬機(jī)上運(yùn)行的。Android 的底層是以開(kāi)放性的Linux Kernel為其架構(gòu),也可以理解為Google 推出的手機(jī)操作系統(tǒng)和相關(guān)軟件的總稱(chēng)[1].

Android 是一套真正意義上的開(kāi)放性移動(dòng)設(shè)備綜合平臺(tái),它包括操作系統(tǒng)、中間件和一些關(guān)鍵的平臺(tái)應(yīng)用。Android 最大特點(diǎn)在于它是一個(gè)開(kāi)放的體系架構(gòu),具有非常好的開(kāi)發(fā)和調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶(hù)體驗(yàn),Android 里面具有非常豐富的圖形系統(tǒng)、對(duì)多媒體的支持功能和非常強(qiáng)大的瀏覽器[2].

Android 平臺(tái)的開(kāi)放性等特點(diǎn)既能促進(jìn)技術(shù)( 包括平臺(tái)自身) 的創(chuàng)新,又有助于降低開(kāi)發(fā)成本,還可以使運(yùn)營(yíng)商能非常方便地制定特色化的產(chǎn)品,因此,它具有很大的市場(chǎng)發(fā)展?jié)摿Α?/p>

1 Android 軟件平臺(tái)的構(gòu)成

Android 軟件平臺(tái)主要由5 部分構(gòu)成,它們分別是: 關(guān)鍵應(yīng)用程序、應(yīng)用程序框架和組件、C /C ++ 函數(shù)庫(kù)、Java 程序運(yùn)行環(huán)境、優(yōu)化了的Linux 內(nèi)核。

(1) 關(guān)鍵應(yīng)用程序。

Android 本身會(huì)附帶一些核心的應(yīng)用程序,包括E-mail 客戶(hù)端、短信程序、日歷、地圖、瀏覽器、通訊錄等,目前所有的應(yīng)用程序都是用Java 語(yǔ)言開(kāi)發(fā)的。

更多有特色的Android 應(yīng)用程序還有待于廣大開(kāi)發(fā)者共同參與開(kāi)發(fā)。

(2) 應(yīng)用程序框架及組件。

Android 應(yīng)用程序開(kāi)發(fā)基于框架和組件。Android 本身已在其框架中提供了許多組件供應(yīng)用程序調(diào)用,開(kāi)發(fā)者也可在開(kāi)發(fā)應(yīng)用程序時(shí)順帶開(kāi)發(fā)新的組件,并將該組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。

(3) Android 運(yùn)行時(shí)庫(kù)和其它庫(kù)層。

Android 應(yīng)用程序框架之下是一套C /C ++ 函數(shù)庫(kù),它們服務(wù)于Android 應(yīng)用程序組件,其功能通過(guò)組件間接提供給開(kāi)發(fā)者。這些函數(shù)庫(kù)包括: 標(biāo)準(zhǔn)C函數(shù)庫(kù)、多媒體庫(kù)、瀏覽器引擎( 集成了Web 瀏覽器和Internet 安全的SSL 和WebKit) 、2D、3D 圖形庫(kù)及SQLite 引擎和外觀管理器等。這一層也提供了程序運(yùn)行的環(huán)境。Android 的Java 程序運(yùn)行環(huán)境包含一組Java 核心函數(shù)庫(kù)及Dalvik 虛擬機(jī),它們有效地優(yōu)化了Java 程序的運(yùn)行過(guò)程。

(4) Linux 內(nèi)核。

Android 系統(tǒng)平臺(tái)基于優(yōu)化了的Linux 內(nèi)核,它提供諸如硬件驅(qū)動(dòng)程序( USB、藍(lán)牙、顯示屏等) 、內(nèi)存管理、進(jìn)程管理、電源管理等服務(wù),同時(shí)也是手機(jī)軟、硬件的連接層。

2 Android 程序開(kāi)發(fā)的基本組件

Android 有如下幾大基本組件: Activity、Service、CONtent Provider 和BroadcaST Receiver。

Activity 是Android 最基本的應(yīng)用程序組件。任何一個(gè)Android 應(yīng)用程序都可以看作一組任務(wù),這里每一個(gè)任務(wù)就可以稱(chēng)作一個(gè)Activity.在應(yīng)用程序中,一個(gè)Activity 通常就是一個(gè)單獨(dú)的屏幕,用于呈現(xiàn)數(shù)據(jù)和與用戶(hù)進(jìn)行交互,每個(gè)屏幕可以有一個(gè)或多個(gè)組件布局。

而每一個(gè)活動(dòng)又是一個(gè)單獨(dú)的類(lèi),每一個(gè)這樣的類(lèi)都要將Activity 作為父類(lèi)。一個(gè)Activity 可以切換到新的Activity,也可以返回前一個(gè)Activity.Android 通過(guò)使用Intent 類(lèi)來(lái)實(shí)現(xiàn)Activity 的切換。例如,一個(gè)簡(jiǎn)單的游戲程序可以分為5 個(gè)Activity: 啟動(dòng)畫(huà)面、主菜單界面、游戲主界面、高分辨和幫助界面。

Service,即"服務(wù)"的意思,相當(dāng)于沒(méi)有界面的Activity.應(yīng)用程序的Service 可以不需要用戶(hù)直接參與而長(zhǎng)時(shí)間運(yùn)行。典型的例子就是音樂(lè)播放器。在一個(gè)音樂(lè)播放器程序中有多個(gè)Activity,它們分別實(shí)現(xiàn)了歌曲的選擇和播放等功能。然而,音樂(lè)重放這個(gè)功能并沒(méi)有對(duì)應(yīng)的Activity,它通過(guò)Service 來(lái)實(shí)現(xiàn)。

音樂(lè)播放器程序啟動(dòng)一個(gè)Service,它可以在后臺(tái)保持音樂(lè)的不斷播放。應(yīng)用程序還可以連接到一個(gè)Service.當(dāng)Service 啟動(dòng)后,還可以借助Service 提供的接口與它進(jìn)行通信。

Android 應(yīng)用程序可以使用文件、SQL 數(shù)據(jù)庫(kù)等各種存儲(chǔ)系統(tǒng)來(lái)保存數(shù)據(jù)。但是,如果想實(shí)現(xiàn)不同應(yīng)用之間的數(shù)據(jù)共享,就需要用到Content Provider.

Content Provider 提供了一套標(biāo)準(zhǔn)的訪問(wèn)接口,以方便其他應(yīng)用程序?qū)?shù)據(jù)進(jìn)行訪問(wèn)、操作。

在實(shí)際應(yīng)用中,常常需要等待系統(tǒng)或者其它應(yīng)用發(fā)出一道指令。在Android 中,充分考慮了這類(lèi)需求,于是就有了Broadcast Receiver 這樣的一個(gè)組件。

每個(gè)Broadcast Receiver 都可以接收一種或若干種Intent作為觸發(fā)事件,當(dāng)一個(gè)Broadcast Receiver 被觸發(fā)后,系統(tǒng)就會(huì)通知相應(yīng)的程序。

3 Android 多媒體API 及開(kāi)發(fā)方法

多媒體---無(wú)論是圖像、視頻還是聲音,都早已成為了移動(dòng)設(shè)備受到廣泛歡迎的主要原因。而今,手機(jī)設(shè)備很少會(huì)沒(méi)有攝像頭的,而且隨著技術(shù)的日益更新,越來(lái)越多的設(shè)備會(huì)擁有更為專(zhuān)業(yè)的視頻性能。用戶(hù)經(jīng)常使用手機(jī)來(lái)拍攝和瀏覽照片,錄制聲音和觀看視頻。

3. 1 Android 提供的多媒體開(kāi)發(fā)框架

Android 軟件開(kāi)發(fā)包提供了一系列的方法來(lái)處理音視頻媒體,包括對(duì)于多種媒體類(lèi)型和格式的支持。

單獨(dú)的Android 設(shè)備和開(kāi)發(fā)人員可以擴(kuò)展其支持的媒體格式列表。

Open Core 是Android 多媒體開(kāi)發(fā)的核心,所有Android 平臺(tái)的音頻、視頻的采集以及播放等操作都是通過(guò)它來(lái)實(shí)現(xiàn)的。程序員可以通過(guò)Open Core 方便快速地開(kāi)發(fā)出想要的多媒體應(yīng)用程序,例如: 錄音、播放、回放、視頻會(huì)議等。Open Core 和框架圖如圖1 所示。

圖1 Open Core 框架圖

由圖1 可以看出,Open Core 支持的格式有MPEG4、H. 263、MP3、AAC、JPG 等。Open Core 多媒體框架有一套通用可擴(kuò)展的接口,針對(duì)第三方的多媒體編解碼器,輸入、輸出設(shè)備等。

[!--empirenews.page--]

3. 2 Open Core 的主要多媒體類(lèi)與接口

Open Core 主要提供了如下幾個(gè)多媒體類(lèi):

( 1) MediaPlayer 類(lèi)可以用于播放音頻、視頻和流媒體,它包含了Audio 和Video 的播放功能,在Android的界面上,音頻和視頻的播放都是調(diào)用Media-Player 實(shí)現(xiàn)的。它可以獲得媒體文件和各種屬性和當(dāng)前的播放狀態(tài),并可以開(kāi)始和停止文件的播放。

( 2) MediaRecorder 類(lèi)用來(lái)進(jìn)行媒體采樣,包括音頻和視頻。MediaRecorder 作為狀態(tài)機(jī)運(yùn)行,需要設(shè)置不同的參數(shù),如源格式和源設(shè)備。設(shè)置后可執(zhí)行任意長(zhǎng)度的錄制,直到用戶(hù)停止。

( 3) VideoView 類(lèi)主要用來(lái)顯示一個(gè)視頻文件,它是SurfaceView 類(lèi)的一個(gè)子類(lèi),且實(shí)現(xiàn)了MediaPlayerControl接口。

( 4) Camera 類(lèi)用來(lái)處理系統(tǒng)中與相機(jī)相關(guān)的事件,Camera 是一個(gè)專(zhuān)門(mén)用來(lái)連接和斷開(kāi)相機(jī)服務(wù)的類(lèi)。

Open Core 在使用過(guò)程中的調(diào)用關(guān)系如圖2所示。

 

圖2 使用Open Core 的調(diào)用關(guān)系圖

4 示例程序: 播放器

4. 1 布局設(shè)計(jì)

Android 是通過(guò)布局( Layout) 來(lái)定義UI( 用戶(hù)界面) 的。一般視圖( View) 可以直接在布局的XML 里聲明。XML 文件如下所示:

  < ? xml version = ″1. 0″encoding = ″utf-8?″ >

  -< AbsoluteLayout

  xmlns: android = ″http: / /schemas. android. com/apk /res /android″

  android: orientation = ″vertical″

  android: layout_width = ″fill_parent″

  android: layout_height = ″fill_parent″ >

  < ListView

  android: id = ″@ id /android: list″

  android: layout_width = ″fill_parent″

  android: layout_height = ″fill_parent″

  android: layout_weight = ″1″

  android: drawSelectorOnTop = ″false″ / >

  < ImageButton

  android: id = ″@ + id /LastImageButton″

  android: layout_width = ″wrap_content″

  android: layout_height = ″wrap_content″

  android: layout_x = ″10px″

  android: layout_y = ″170px″

  android: src = ″@ drawable /last″ / >

 ?。?以下4 個(gè)BUTTON 同上,橫坐標(biāo)有變化。)

  < /AbsoluteLayout >

這個(gè)簡(jiǎn)單的播放器只有一個(gè)界面,可以顯示播放列表和對(duì)音樂(lè)的播放進(jìn)行各種操作。

4. 2 程序框架設(shè)計(jì)

在這唯一的Activity 類(lèi)的界面生成消息響應(yīng)方法中,先定義幾個(gè)操作按鈕,然后就要?jiǎng)?chuàng)建整個(gè)程序的主對(duì)象---mMediaPlayer 了。語(yǔ)句如下:

  public MediaPlayer mMediaPlayer = null;

這是一個(gè)MediaPlayer 類(lèi)型的對(duì)象,它的功能前面已經(jīng)介紹過(guò)了,這里不再贅述。之后要?jiǎng)?chuàng)建的就是其它的組件,包括播放列表、歌曲的路徑以及索引了。

  private List < String > mMusicList = new ArrayList < String >( ) ; / /播放列表

  private int currentListItme = 0; / /索引

  private static final String MUSIC_PATH = new String( ″ /sdcard/″) ; / /歌曲的路徑

4. 3 程序核心代碼

接下來(lái)設(shè)置這些ImageButton 的事件監(jiān)聽(tīng)。

  mStartImageButton. setOnClickListener(

  new ImageButton. OnClickListener( )

  {

  @ Override public void onClick( View v)

  {

  playMusic( MUSIC_PATH + mMusi-cList. get( currentListItme)

 ?。?;

  }

  } ) ;

這是"開(kāi)始播放"按鈕的事件監(jiān)聽(tīng)。這里是調(diào)用了一個(gè)playMusic( ) 方法來(lái)實(shí)現(xiàn)音樂(lè)文件的播放的。

在playMusic( ) 方法中,先調(diào)用mMediaPlayer 的reset( ) 方法,重置MediaPlayer 到它的正常狀態(tài)。然后調(diào)用setDataSource( string) 方法設(shè)置好音樂(lè)文件的數(shù)據(jù)源,再連續(xù)調(diào)用prepare( ) 和start( ) 方法,MediaPlayer將開(kāi)始播放音樂(lè)文件。

接下來(lái),要設(shè)置一個(gè)OnCompletionListener ( setOnCompletionListener( new OnCompletionListener ) ) ,在歌曲結(jié)束的時(shí)候,onCompletion( MediaPlayer) 會(huì)被調(diào)用,這樣就可以設(shè)置為自動(dòng)播放下一曲目。代碼如下。

  mMediaPlayer. setOnCompletionListener(

  new OnCompletionListener( )

  {

  public void onCompletion( MediaPlayer arg0)

  {

  nextMusic( ) ; / /播放下一曲

  }

  } ) ;

其它方法與上面方法類(lèi)似,在"停止"按鈕的事件響應(yīng)方法里,要調(diào)用mMediaPlayer 的isPlaying( ) 方法來(lái)判斷播放器是否正在播放,如果正在播放則調(diào)用reset( ) 方法直接重置播放器即可。暫停則可以調(diào)用mMediaPlayer 的pause( ) 方法,再次開(kāi)始播放則調(diào)用start( )。

5 結(jié)束語(yǔ)

Android 手機(jī)應(yīng)用程序開(kāi)發(fā)需要著眼于它的整個(gè)體系構(gòu)架,這是一項(xiàng)復(fù)雜的工程。本文先是介紹并分析了Android 系統(tǒng)的層次架構(gòu),并在此基礎(chǔ)上介紹了Android 應(yīng)用程序開(kāi)發(fā)的相關(guān)技術(shù)和基本的開(kāi)發(fā)流程。接下來(lái)介紹了Android 為開(kāi)發(fā)人員提供的簡(jiǎn)單、易用的多媒體開(kāi)發(fā)組件MediaPlayer、MediaRecorder等類(lèi)。最后用具體的應(yīng)用程序簡(jiǎn)要說(shuō)明了Android多媒體應(yīng)用程序的開(kāi)發(fā)方法。Android 具有極大的開(kāi)放性和兼容性,相信廣大開(kāi)發(fā)者可以借助AndroidSDK 提供的強(qiáng)大技術(shù)支持,開(kāi)發(fā)出豐富多彩、極具個(gè)性的移動(dòng)應(yīng)用。

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

多數(shù)受訪粉絲認(rèn)為,AI驅(qū)動(dòng)的功能會(huì)對(duì)他們觀看體育賽事的方式產(chǎn)生重大影響 超過(guò)半數(shù)的受訪者希望通過(guò)AI技術(shù)獲得對(duì)過(guò)去、現(xiàn)在和未來(lái)體育賽事的評(píng)論和分析 移動(dòng)體育應(yīng)用...

關(guān)鍵字: IBM AI 應(yīng)用程序 移動(dòng)

其他電腦(比如安卓手機(jī)/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問(wèn)一些東西。你可以使用android的USB OTG功能(是的,幾乎每個(gè)android都支持這個(gè)功能,你可以將鼠標(biāo)和鍵盤(pán)連接到它)。

關(guān)鍵字: USB 鼠標(biāo) Android 樹(shù)莓派

北京 2025年6月11日 /美通社/ -- 近日,首屆"凌海御空?舟山新篇"清華未來(lái)立體通行挑戰(zhàn)賽總決賽在舟山群島圓滿(mǎn)落幕。智能算力服務(wù)商北京積算科技有限公司(以下簡(jiǎn)稱(chēng)"積算科技&quo...

關(guān)鍵字: 大賽 無(wú)人機(jī) 模型 應(yīng)用開(kāi)發(fā)

青島 2025年5月23日 /美通社/ -- 全球領(lǐng)先的消費(fèi)電子和家電品牌海信今天宣布將谷歌全新Home API集成至其ConnectLife應(yīng)用程序。今年秋季前,用戶(hù)可通過(guò)該應(yīng)用程序?qū)⒌谌街悄芗揖釉O(shè)備接入Conne...

關(guān)鍵字: API NEC 海信 應(yīng)用程序

Google 宣布與中國(guó) AR 科技公司 XREAL 達(dá)成深度戰(zhàn)略合作,聯(lián)合推出全球首款專(zhuān)為 Android XR 平臺(tái)打造的旗艦級(jí) AR 眼鏡 Project Aura。

關(guān)鍵字: Google XREAL Android XR眼鏡 AR

-Arya.ai推出MCP應(yīng)用程序,將通用LLM轉(zhuǎn)化為特定領(lǐng)域?qū)<? 印度孟買(mǎi)和紐約 2025年5月13日 /美通社/ -- Arya.ai今天宣布推出APEX MCP(模...

關(guān)鍵字: MCP 應(yīng)用程序 AI 人工智能

電力鴻蒙操作系統(tǒng)(OpenHarmony for Power)作為面向能源領(lǐng)域的專(zhuān)用物聯(lián)操作系統(tǒng),憑借其分布式架構(gòu)、統(tǒng)一物聯(lián)標(biāo)準(zhǔn)與安全可控特性,為電力行業(yè)智能化轉(zhuǎn)型提供了底層支撐。本文從開(kāi)發(fā)環(huán)境搭建、基礎(chǔ)語(yǔ)法掌握到復(fù)雜應(yīng)...

關(guān)鍵字: 電力鴻蒙 應(yīng)用開(kāi)發(fā)

繼停止維護(hù)AOSP開(kāi)源項(xiàng)目后,谷歌母公司Alphabet近日被曝在其安卓系統(tǒng)(Android)、Pixel手機(jī)以及Chrome瀏覽器等部門(mén)裁員數(shù)百人。這一舉措引發(fā)了業(yè)界的廣泛關(guān)注,也引發(fā)了對(duì)谷歌未來(lái)業(yè)務(wù)布局的諸多猜測(cè)。

關(guān)鍵字: 谷歌 AOSP Android 裁員

在本教程中,我們將使用Capacitor 6、Angular和TypeScript構(gòu)建一個(gè)Android應(yīng)用程序,該應(yīng)用程序通過(guò)串行端口連接到BleuIO USB加密狗。該應(yīng)用程序允許用戶(hù)直接從Android設(shè)備發(fā)送和接...

關(guān)鍵字: Android USB 電容器 BLE設(shè)備
關(guān)閉