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

基于Android的多媒體應用開發

2015-04-12 00:00:00李養勝李俊
現代電子技術 2015年2期

摘 "要: 為了開發出豐富多彩的移動多媒體應用程序,借助Android平臺提供的良好API接口,通過程序設計開發實現了多媒體應用程序——音樂播放器。首先對Android的系統架構進行了簡要的概述,隨后在此基礎上對Android應用程序的特點及開發組件分別進行了介紹,最后通過設計實現一個音樂播放器對Android多媒體應用程序開發方法進行了說明演示。該設計實現的音樂播放器既可以播放資源文件中的音樂文件,也可以選擇手機SD卡中的本地音樂文件進行播放。

關鍵詞: Android; 多媒體; 音樂播放器; 程序設計

中圖分類號: TN919?34; TP311 " " " " " " " " " 文獻標識碼: A " " " " " " " " " "文章編號: 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開發的基于Linux平臺的開源手機操作系統。它包括操作系統、中間件、用戶界面和應用程序,號稱是首個為移動終端打造的真正開發和完整的移動軟件。隨著3G技術的發展,移動電話正向著智能化的方向邁進,移動電話已經逐漸成為多種工具的功能載體,可以作為通信工具、網絡工具、媒體播放器、媒體獲取設備、信息感知終端、可以個性化定制的平臺等[1]。

Android系統誕生在時代的背景下,其全開放的智能移動平臺、多硬件平臺的支持、使用眾多標準化的技術、核心技術完整、完善的輔助開發工具等特點正與智能手機發展方向緊密相連,它將代表并引領新時代的技術潮流。

1 "Android的系統架構

Android平臺的系統架構如圖1所示,自底向上可以分為4層,分別是Linux內核層、Android運行庫層、應用框架層、應用程序層[2]。

lt;E:\王芳\現代電子技術201502\Image\01T1.tifgt;

圖1 Android的系統架構圖

(1) Linux內核層:Android基于Linux 2.6內核開發的,該層用來提供系統的底層服務,包括安全機制、內存管理、進程管理、網絡堆棧及一系列的驅動模塊。作為一虛擬的中間層,該層位于硬件與其他的軟件層之間。

(2) Android運行庫層:Android運行時庫包含一組核心庫(提供了Java語言核心庫內的大部分功能)和Dalvik虛擬機。同時Android提供了豐富的庫類支持且大部分為開源代碼。

(3) 應用框架層:這一層是編寫Google發布的核心應用時所使用的API框架,開發人員同樣可以使用這些框架來開發自己的應用,這樣便簡化了程序開發的架構設計,但使用方法需遵循框架的安全性約束。

(4) 應用程序層:Android本身附帶一些核心的應用程序,包括E?mail客戶端、短信程序、日歷、地圖、瀏覽器、通訊錄等[3],目前所有的應用程序都是由Java語言開發。

2 "Android的系統特點

對于開發者而言,Android開發分為3種類型:

(1) 移植開發移動電話系統

移植開發是為了將Android系統在手機上運行,在具體的硬件系統上構建Android軟件系統,這種類型的開發在Android底層進行。

(2) Android應用程序開發

應用程序開發,是大多數開發者從事的開發工作,可以基于硬件配置,也可以基于Android模擬器,應用開發在Android系統的最上層。

(3) Android系統開發

系統開發,就是指在需要某種功能而系統并沒有提供,這時就需要從系統底層向上開發。

Android系統具有以下5個特點:

開放性:Google與開放手機聯盟合作開發了Android,希望在移動產業內形成一個開放式的生態系統。

無限性:Android上的應用程序可以通過標準API訪問核心移動設備功能,通過互聯網可以聲明它們的功能可以供其他應用程序使用。

平等性:移動設備上的應用程序可以被替換或擴展,即使一些核心組件也是如此。

嵌入性:應用程序可以輕松地嵌入HTML、JavaScript和CSS,還可以通過WebVIEW顯示網絡內容。

并行性:Android是一種完整的多任務環境,應用程序可以在其中并行運行。

3 "Android程序開發的基本組件

Android應用程序一般由以下6個組件提供基本的結構模塊[4?5]:

(1) Activity:應用程序的表示層,相當于其他類似的桌面程序設計中的Form的概念。

(2) Service:應用程序中不可見部分,Service在后臺工作,它們被用來執行一些需要持續執行的常規處理。

(3) Content Provider:一個可以共享的數據庫。Android系統中包含多個本地Content Provider來提供有用的數據庫供訪問。

(4) Intent:一個簡單的消息傳遞框架。應用程序通過Intent發出請求,表明希望執行某個動作的意圖,最后系統就會確定一個最適合執行動作的目標。

(5) Broadcast Receiver:Intent廣播的消費者。Broadcast Receiver會自動啟動應用程序來響應某個到來的Intent,這個特點使它成為了事件驅動程序的最佳選擇。

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

在Android中,這些組件之間的依賴性是很低的,可以理解為面向對象設計中模塊間的低耦合設計,這樣做的目的是可以和其他應用程序共享。

4 "Android系統中音樂播放器的實現

Android提供了常見媒體的編碼、解碼機制,可以通過調用Android提供的現有API,實現音視頻播放器、錄音和拍照等應用程序。在Android上實現音樂的播放,主要是使用MediaPlayer類[6]。MediaPlayer類包含了Audio和Video的播放功能,它可以獲得媒體文件的各種屬性和當前的播放狀態,也可以開始和停止文件的播放。

4.1 "布局設計

Android是通過布局來定義UI(用戶界面)的,一般視圖可以直接在布局的XML里聲明。音樂播放器的主界面的布局定義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=\"簡易MP3播放器\"

android:clickable=\"1\"

android:textSize=\"24px\"

/gt;

lt;TextView

android:layout_height=\"wrap_content\"

android:layout_width=\"wrap_content\"

android:text=\"播放應用程序資源:\"

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 "程序設計框架

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

4.3 "程序核心代碼

對MediaPlayer對象的初始化代碼如下:

//MediaPlayer 對象的初始化

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

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

mediaPlayer1.setOnCompletionListener(this);

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

}

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

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);}

}

對文件格式錯誤等的錯誤處理如下所述:

private void errorReport(Throwable t){

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

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

}

對play按鈕進行事件監聽如下所示:

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來標志兩個MediaPlayer對象的工作狀態。

重寫onCompletion() 方法:

public void onCompletion(MediaPlayer mp) {

//循環播放

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

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

}

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

4.4 "程序運行界面

簡易MP3播放器運行界面如圖2所示。

lt;E:\王芳\現代電子技術201502\Image\01T2.tifgt;

圖2 簡易MP3播放器運行界面

5 "結 "語

本文對Android的系統架構進行了概述,并在此基礎上對Android應用程序的特點及開發組件分別進行了介紹,最后設計實現了一個簡易的音樂播放器,從而說明了Android多媒體程序的開發過程。Android具有極大的開放性和兼容性,隨著Android手機的普及,Android應用的需求勢必會越來越大,這將會是一個潛力巨大的市場,會吸引無數軟件開發商和開發者投身其中。

參考文獻

[1] 汪永松.Android平臺開發之旅[M].北京:機械工業出版社,2010.

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

[3] 唐敏.基于Android平臺的通訊幫手的設計與開發[J].計算機科學,2012(z1):583?586.

[4] 李楊,馮剛,李亮,等.基于Android的多媒體應用開發與研究[J].計算機與現代化,2011(4):153?156.

[5] 林福炎.基于Android平臺的在線音樂客戶端設計與實現[D].北京:中國地質大學,2011.

[6] 張永久.基于Android系統的MP5播放器的設計與實現[D].西安:西安電子科技大學,2012.

[7] 白璐,李國民.Android系統WMA文件播放功能的設計與實現[J].電子科技,2011(9):158?161.

主站蜘蛛池模板: 凹凸精品免费精品视频| 国产乱子伦视频在线播放| 欧美日韩国产综合视频在线观看 | 国产乱子伦视频在线播放| 亚洲视频无码| 波多野结衣一区二区三视频 | 三区在线视频| 1024国产在线| 日韩高清无码免费| 毛片在线区| 欧美精品啪啪| 免费精品一区二区h| 国产JIZzJIzz视频全部免费| 人妻91无码色偷偷色噜噜噜| 亚洲成年人片| 国产欧美精品一区二区| 啊嗯不日本网站| 亚洲无码视频一区二区三区| 亚洲二区视频| 国产日本一线在线观看免费| 欧美亚洲综合免费精品高清在线观看| 国产精品女同一区三区五区| 91久久偷偷做嫩草影院电| a毛片免费看| 2020极品精品国产| 婷婷亚洲天堂| 91区国产福利在线观看午夜| 国产精品视频免费网站| 亚洲欧美国产视频| 中文无码日韩精品| 免费一级毛片| 精品五夜婷香蕉国产线看观看| 草草线在成年免费视频2| 欧美日韩免费观看| 国产成人综合在线观看| 999精品视频在线| 日本不卡在线播放| 亚洲日韩久久综合中文字幕| 国产一区在线视频观看| 亚洲欧美日本国产综合在线| 久久国产乱子伦视频无卡顿| 一级高清毛片免费a级高清毛片| 精品无码一区二区三区电影| 国产99在线| 四虎综合网| 1769国产精品免费视频| 青青草国产在线视频| 波多野结衣亚洲一区| 欧美色视频网站| 天堂av高清一区二区三区| 丰满的熟女一区二区三区l| 狠狠五月天中文字幕| 亚洲欧美成人在线视频| 日本午夜影院| 色首页AV在线| 91在线免费公开视频| 色亚洲成人| 中文字幕调教一区二区视频| 97精品久久久大香线焦| 亚洲国产欧洲精品路线久久| 青青草原偷拍视频| 在线观看无码av五月花| 久久精品人人做人人爽电影蜜月 | 欧美不卡视频在线| 久久精品无码一区二区国产区| 久久久精品国产亚洲AV日韩 | 国产又粗又爽视频| 国产午夜不卡| 19国产精品麻豆免费观看| 欧美午夜久久| 亚洲第一极品精品无码| 欧美成人一区午夜福利在线| 久久综合五月| 91成人在线观看| 中文字幕丝袜一区二区| 天天躁夜夜躁狠狠躁躁88| 1769国产精品免费视频| 超碰aⅴ人人做人人爽欧美 | 国产精品自在线天天看片| 欧美性猛交一区二区三区| 久热中文字幕在线| 久久毛片基地|