999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android的多媒體應(yīng)用開(kāi)發(fā)

2015-04-12 00:00:00李養(yǎng)勝李俊
現(xiàn)代電子技術(shù) 2015年2期

摘 "要: 為了開(kāi)發(fā)出豐富多彩的移動(dòng)多媒體應(yīng)用程序,借助Android平臺(tái)提供的良好API接口,通過(guò)程序設(shè)計(jì)開(kāi)發(fā)實(shí)現(xiàn)了多媒體應(yīng)用程序——音樂(lè)播放器。首先對(duì)Android的系統(tǒng)架構(gòu)進(jìn)行了簡(jiǎn)要的概述,隨后在此基礎(chǔ)上對(duì)Android應(yīng)用程序的特點(diǎn)及開(kāi)發(fā)組件分別進(jìn)行了介紹,最后通過(guò)設(shè)計(jì)實(shí)現(xiàn)一個(gè)音樂(lè)播放器對(duì)Android多媒體應(yīng)用程序開(kāi)發(fā)方法進(jìn)行了說(shuō)明演示。該設(shè)計(jì)實(shí)現(xiàn)的音樂(lè)播放器既可以播放資源文件中的音樂(lè)文件,也可以選擇手機(jī)SD卡中的本地音樂(lè)文件進(jìn)行播放。

關(guān)鍵詞: Android; 多媒體; 音樂(lè)播放器; 程序設(shè)計(jì)

中圖分類號(hào): TN919?34; TP311 " " " " " " " " " 文獻(xiàn)標(biāo)識(shí)碼: A " " " " " " " " " "文章編號(hào): 1004?373X(2015)02?0032?03

Development on multimedia application based on Android

LI Yang?sheng, LI Jun

(Shaanxi Polytechnic Institute, Xianyang 712000, China)

Abstract: In order to develop a variety of mobile multimedia application program, with a good API interface provided by the Android platform, the multimedia application program (music player) was designed and developed by program design. The Android system architecture is described briefly. on the basis of the characteristics and development components of Android application program are introduced. A music player was realized. The development methods of Android multimedia application program are illustrated. The music player can play both music files in resource files and local music files in SD card in mobile phone.

Keywords: Android; multimedia; music player; program design

Android是Google開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序,號(hào)稱是首個(gè)為移動(dòng)終端打造的真正開(kāi)發(fā)和完整的移動(dòng)軟件。隨著3G技術(shù)的發(fā)展,移動(dòng)電話正向著智能化的方向邁進(jìn),移動(dòng)電話已經(jīng)逐漸成為多種工具的功能載體,可以作為通信工具、網(wǎng)絡(luò)工具、媒體播放器、媒體獲取設(shè)備、信息感知終端、可以個(gè)性化定制的平臺(tái)等[1]。

Android系統(tǒng)誕生在時(shí)代的背景下,其全開(kāi)放的智能移動(dòng)平臺(tái)、多硬件平臺(tái)的支持、使用眾多標(biāo)準(zhǔn)化的技術(shù)、核心技術(shù)完整、完善的輔助開(kāi)發(fā)工具等特點(diǎn)正與智能手機(jī)發(fā)展方向緊密相連,它將代表并引領(lǐng)新時(shí)代的技術(shù)潮流。

1 "Android的系統(tǒng)架構(gòu)

Android平臺(tái)的系統(tǒng)架構(gòu)如圖1所示,自底向上可以分為4層,分別是Linux內(nèi)核層、Android運(yùn)行庫(kù)層、應(yīng)用框架層、應(yīng)用程序?qū)覽2]。

lt;E:\王芳\現(xiàn)代電子技術(shù)201502\Image\01T1.tifgt;

圖1 Android的系統(tǒng)架構(gòu)圖

(1) Linux內(nèi)核層:Android基于Linux 2.6內(nèi)核開(kāi)發(fā)的,該層用來(lái)提供系統(tǒng)的底層服務(wù),包括安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧及一系列的驅(qū)動(dòng)模塊。作為一虛擬的中間層,該層位于硬件與其他的軟件層之間。

(2) Android運(yùn)行庫(kù)層:Android運(yùn)行時(shí)庫(kù)包含一組核心庫(kù)(提供了Java語(yǔ)言核心庫(kù)內(nèi)的大部分功能)和Dalvik虛擬機(jī)。同時(shí)Android提供了豐富的庫(kù)類支持且大部分為開(kāi)源代碼。

(3) 應(yīng)用框架層:這一層是編寫(xiě)Google發(fā)布的核心應(yīng)用時(shí)所使用的API框架,開(kāi)發(fā)人員同樣可以使用這些框架來(lái)開(kāi)發(fā)自己的應(yīng)用,這樣便簡(jiǎn)化了程序開(kāi)發(fā)的架構(gòu)設(shè)計(jì),但使用方法需遵循框架的安全性約束。

(4) 應(yīng)用程序?qū)樱篈ndroid本身附帶一些核心的應(yīng)用程序,包括E?mail客戶端、短信程序、日歷、地圖、瀏覽器、通訊錄等[3],目前所有的應(yīng)用程序都是由Java語(yǔ)言開(kāi)發(fā)。

2 "Android的系統(tǒng)特點(diǎn)

對(duì)于開(kāi)發(fā)者而言,Android開(kāi)發(fā)分為3種類型:

(1) 移植開(kāi)發(fā)移動(dòng)電話系統(tǒng)

移植開(kāi)發(fā)是為了將Android系統(tǒng)在手機(jī)上運(yùn)行,在具體的硬件系統(tǒng)上構(gòu)建Android軟件系統(tǒng),這種類型的開(kāi)發(fā)在Android底層進(jìn)行。

(2) Android應(yīng)用程序開(kāi)發(fā)

應(yīng)用程序開(kāi)發(fā),是大多數(shù)開(kāi)發(fā)者從事的開(kāi)發(fā)工作,可以基于硬件配置,也可以基于Android模擬器,應(yīng)用開(kāi)發(fā)在Android系統(tǒng)的最上層。

(3) Android系統(tǒng)開(kāi)發(fā)

系統(tǒng)開(kāi)發(fā),就是指在需要某種功能而系統(tǒng)并沒(méi)有提供,這時(shí)就需要從系統(tǒng)底層向上開(kāi)發(fā)。

Android系統(tǒng)具有以下5個(gè)特點(diǎn):

開(kāi)放性:Google與開(kāi)放手機(jī)聯(lián)盟合作開(kāi)發(fā)了Android,希望在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng)。

無(wú)限性:Android上的應(yīng)用程序可以通過(guò)標(biāo)準(zhǔn)API訪問(wèn)核心移動(dòng)設(shè)備功能,通過(guò)互聯(lián)網(wǎng)可以聲明它們的功能可以供其他應(yīng)用程序使用。

平等性:移動(dòng)設(shè)備上的應(yīng)用程序可以被替換或擴(kuò)展,即使一些核心組件也是如此。

嵌入性:應(yīng)用程序可以輕松地嵌入HTML、JavaScript和CSS,還可以通過(guò)WebVIEW顯示網(wǎng)絡(luò)內(nèi)容。

并行性:Android是一種完整的多任務(wù)環(huán)境,應(yīng)用程序可以在其中并行運(yùn)行。

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

Android應(yīng)用程序一般由以下6個(gè)組件提供基本的結(jié)構(gòu)模塊[4?5]:

(1) Activity:應(yīng)用程序的表示層,相當(dāng)于其他類似的桌面程序設(shè)計(jì)中的Form的概念。

(2) Service:應(yīng)用程序中不可見(jiàn)部分,Service在后臺(tái)工作,它們被用來(lái)執(zhí)行一些需要持續(xù)執(zhí)行的常規(guī)處理。

(3) Content Provider:一個(gè)可以共享的數(shù)據(jù)庫(kù)。Android系統(tǒng)中包含多個(gè)本地Content Provider來(lái)提供有用的數(shù)據(jù)庫(kù)供訪問(wèn)。

(4) Intent:一個(gè)簡(jiǎn)單的消息傳遞框架。應(yīng)用程序通過(guò)Intent發(fā)出請(qǐng)求,表明希望執(zhí)行某個(gè)動(dòng)作的意圖,最后系統(tǒng)就會(huì)確定一個(gè)最適合執(zhí)行動(dòng)作的目標(biāo)。

(5) Broadcast Receiver:Intent廣播的消費(fèi)者。Broadcast Receiver會(huì)自動(dòng)啟動(dòng)應(yīng)用程序來(lái)響應(yīng)某個(gè)到來(lái)的Intent,這個(gè)特點(diǎn)使它成為了事件驅(qū)動(dòng)程序的最佳選擇。

(6) Notification:一種用戶通知框架。通知允許向用戶發(fā)送信號(hào),而不會(huì)中斷他們當(dāng)前的活動(dòng),它是Service或者Broadcast Receiver引起用戶注意的最佳方法。

在Android中,這些組件之間的依賴性是很低的,可以理解為面向?qū)ο笤O(shè)計(jì)中模塊間的低耦合設(shè)計(jì),這樣做的目的是可以和其他應(yīng)用程序共享。

4 "Android系統(tǒng)中音樂(lè)播放器的實(shí)現(xiàn)

Android提供了常見(jiàn)媒體的編碼、解碼機(jī)制,可以通過(guò)調(diào)用Android提供的現(xiàn)有API,實(shí)現(xiàn)音視頻播放器、錄音和拍照等應(yīng)用程序。在Android上實(shí)現(xiàn)音樂(lè)的播放,主要是使用MediaPlayer類[6]。MediaPlayer類包含了Audio和Video的播放功能,它可以獲得媒體文件的各種屬性和當(dāng)前的播放狀態(tài),也可以開(kāi)始和停止文件的播放。

4.1 "布局設(shè)計(jì)

Android是通過(guò)布局來(lái)定義UI(用戶界面)的,一般視圖可以直接在布局的XML里聲明。音樂(lè)播放器的主界面的布局定義main.xml文件如代碼所示:

lt;?xml version=\"1.0\" encoding=\"UTF?8\"?gt;

?lt;LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"

android:layout_height=\"fill_parent\"

android:layout_width=\"fill_parent\"

android:orientation=\"vertical\"

gt;

lt;TextView

android:layout_height=\"wrap_content\"

android:layout_width=\"fill_parent\"

android:text=\"@string/hello\"

/gt;

lt;Button android:

layout_height=\"wrap_content\"

android:layout_width=\"fill_parent\"

android:text=\"簡(jiǎn)易MP3播放器\"

android:clickable=\"1\"

android:textSize=\"24px\"

/gt;

lt;TextView

android:layout_height=\"wrap_content\"

android:layout_width=\"wrap_content\"

android:text=\"播放應(yīng)用程序資源:\"

android:textSize=\"24px\"

/gt;

?lt;LinearLayout

android:layout_height=\"wrap_content\"

android:layout_width=\"fill_parent\"

android:gravity=\"right\"gt;

lt;ImageButton

android:layout_height=\"wrap_content\"

android:layout_width=\"wrap_content\"

android:id=\"@+id/play1\"

android:src=\"@drawable/play\"

/gt;

其余Button代碼與此類似,此處省略部分代碼

lt;/LinearLayoutgt;

lt;/LinearLayoutgt;

4.2 "程序設(shè)計(jì)框架

在Activity類的界面生成消息響應(yīng)方法中,先定義了幾個(gè)操作按鈕,然后就創(chuàng)建了整個(gè)程序的2個(gè)主要對(duì)象:mediaPlayer1(播放資源文件中的音樂(lè)文件)和mediaPlayer2(播放手機(jī)SD卡中的音樂(lè)文件),并對(duì)它們分別進(jìn)行了初始化。在程序中對(duì)按鈕進(jìn)行事件監(jiān)聽(tīng),通過(guò)調(diào)用MediaPlayer對(duì)象的prepare( )和start( )方法開(kāi)始播放音樂(lè);通過(guò)調(diào)用pause( )和stop( )方法進(jìn)行音樂(lè)的暫停、停止[7]。在選擇手機(jī)SD卡中的音樂(lè)文件播放時(shí),對(duì)mediaPlayer2的初始化就不能像mediaPlayer1那樣使用MediaPlayer.create( )方法來(lái)創(chuàng)建,而是需要使用new來(lái)操作符創(chuàng)建。在創(chuàng)建好mediaPlay2對(duì)象之后,需要依次調(diào)用setDataSource( )和prepare( )方法,來(lái)設(shè)置數(shù)據(jù)源,讓播放器完成準(zhǔn)備工作。如果在prepare( )方法調(diào)用過(guò)程中出現(xiàn)錯(cuò)誤,就會(huì)拋出IOException異常。

4.3 "程序核心代碼

對(duì)MediaPlayer對(duì)象的初始化代碼如下:

//MediaPlayer 對(duì)象的初始化

private void mediaPlayer1init(){ " //播放資源文件中的音樂(lè)文件

try{ mediaPlayer1=MediaPlayer.create(this, R.raw.temp);

mediaPlayer1.setOnCompletionListener(this);

} catch (Throwable t){errorReport(t);}

}

private void mediaPlayer2init(){ " " "http://播放手機(jī)SD卡中的音樂(lè)文件

try { mediaPlayer2 = new MediaPlayer();

String path = \"/sdcard/Yesterday Once More.mp3\";

mediaPlayer2.setDataSource(path);

mediaPlayer2.prepare();

mediaPlayer2.setOnCompletionListener(this);

}

catch (IllegalArgumentException e) {e.printStackTrace();}

catch (IllegalStateException e) {e.printStackTrace();}

catch (IOException e) {e.printStackTrace();}

catch (Throwable t){errorReport(t);}

}

對(duì)文件格式錯(cuò)誤等的錯(cuò)誤處理如下所述:

private void errorReport(Throwable t){

AlertDialog.Builder adBuilder1=new AlertDialog.Builder(this);

adBuilder1.setTitle(\"ERROR!\").setMessage(t.toString()). setPositiveButton(\"確定\", " 1).show();

}

對(duì)play按鈕進(jìn)行事件監(jiān)聽(tīng)如下所示:

play1.setOnClickListener

(new View.OnClickListener() {

public void onClick(View v)

{ "ib1play();

}

});

private void ib1play(){

flag1=1;

mediaPlayer1.start();

pause.setEnabled(true);

stop.setEnabled(true);

}

在onCompletion()方法中,使用flag1,flag2來(lái)標(biāo)志兩個(gè)MediaPlayer對(duì)象的工作狀態(tài)。

重寫(xiě)onCompletion() 方法:

public void onCompletion(MediaPlayer mp) {

//循環(huán)播放

if(flag1==1) "ib1play();

if(flag2==1) "ib4play();

}

這里只寫(xiě)出了部分核心代碼,其他按鈕的方法與play1的方法類似,此處不再贅述。

4.4 "程序運(yùn)行界面

簡(jiǎn)易MP3播放器運(yùn)行界面如圖2所示。

lt;E:\王芳\現(xiàn)代電子技術(shù)201502\Image\01T2.tifgt;

圖2 簡(jiǎn)易MP3播放器運(yùn)行界面

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

本文對(duì)Android的系統(tǒng)架構(gòu)進(jìn)行了概述,并在此基礎(chǔ)上對(duì)Android應(yīng)用程序的特點(diǎn)及開(kāi)發(fā)組件分別進(jìn)行了介紹,最后設(shè)計(jì)實(shí)現(xiàn)了一個(gè)簡(jiǎn)易的音樂(lè)播放器,從而說(shuō)明了Android多媒體程序的開(kāi)發(fā)過(guò)程。Android具有極大的開(kāi)放性和兼容性,隨著Android手機(jī)的普及,Android應(yīng)用的需求勢(shì)必會(huì)越來(lái)越大,這將會(huì)是一個(gè)潛力巨大的市場(chǎng),會(huì)吸引無(wú)數(shù)軟件開(kāi)發(fā)商和開(kāi)發(fā)者投身其中。

參考文獻(xiàn)

[1] 汪永松.Android平臺(tái)開(kāi)發(fā)之旅[M].北京:機(jī)械工業(yè)出版社,2010.

[2] 溫濤.東軟Android工程師實(shí)訓(xùn)技術(shù)教程[M].大連:東軟電子出版社,2011.

[3] 唐敏.基于Android平臺(tái)的通訊幫手的設(shè)計(jì)與開(kāi)發(fā)[J].計(jì)算機(jī)科學(xué),2012(z1):583?586.

[4] 李楊,馮剛,李亮,等.基于Android的多媒體應(yīng)用開(kāi)發(fā)與研究[J].計(jì)算機(jī)與現(xiàn)代化,2011(4):153?156.

[5] 林福炎.基于Android平臺(tái)的在線音樂(lè)客戶端設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國(guó)地質(zhì)大學(xué),2011.

[6] 張永久.基于Android系統(tǒng)的MP5播放器的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2012.

[7] 白璐,李國(guó)民.Android系統(tǒng)WMA文件播放功能的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2011(9):158?161.

主站蜘蛛池模板: 亚洲系列中文字幕一区二区| 日本精品αv中文字幕| 日韩av在线直播| 欧美精品H在线播放| 91色在线观看| 在线看片中文字幕| 91麻豆精品视频| 亚洲资源站av无码网址| 国产成人AV综合久久| 国产资源免费观看| 成人国产精品视频频| 欧美午夜视频在线| 日韩东京热无码人妻| av尤物免费在线观看| 亚洲综合色婷婷中文字幕| AV老司机AV天堂| 国产欧美日韩综合一区在线播放| 99热这里都是国产精品| 99re精彩视频| 久久综合亚洲色一区二区三区| 国产精品无码AV中文| 欧美色视频在线| 黄色污网站在线观看| 中文毛片无遮挡播放免费| 国产精品尤物在线| 亚洲色图欧美| 国产精品永久在线| 亚洲愉拍一区二区精品| 波多野结衣一区二区三视频| 国产91小视频在线观看| 91九色视频网| 欧美精品1区2区| 国产成人免费视频精品一区二区| 亚洲永久视频| 亚洲色图综合在线| 日韩精品毛片| 免费观看亚洲人成网站| 国产毛片高清一级国语 | 人妻丝袜无码视频| 亚洲国产中文精品va在线播放| 欧美全免费aaaaaa特黄在线| 高清国产在线| 国产福利在线免费| 在线观看免费AV网| 欧美中文字幕在线视频| 国产精品冒白浆免费视频| 香蕉精品在线| 999在线免费视频| 天堂中文在线资源| 亚洲国产天堂久久九九九| 亚洲国产综合自在线另类| 五月天香蕉视频国产亚| 中文字幕久久精品波多野结| 国产中文在线亚洲精品官网| 狠狠亚洲五月天| 日韩黄色大片免费看| 国产福利微拍精品一区二区| 天天干天天色综合网| 欧美午夜在线观看| 色悠久久久久久久综合网伊人| 97亚洲色综久久精品| 欧美激情视频二区三区| 成人综合在线观看| 国产精品刺激对白在线| 青青草原国产av福利网站| 亚洲一区二区黄色| 亚洲国产在一区二区三区| 亚洲欧美日韩中文字幕在线一区| 日本午夜在线视频| 中国一级特黄大片在线观看| 露脸国产精品自产在线播| 国产超薄肉色丝袜网站| 国产91丝袜| 国产极品粉嫩小泬免费看| 91久久偷偷做嫩草影院| 青草视频免费在线观看| 欧洲免费精品视频在线| 国产成人亚洲精品色欲AV| 亚洲丝袜中文字幕| 国产一区二区人大臿蕉香蕉| 区国产精品搜索视频| 亚洲精品视频免费看|