精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Android多媒體應用程序的開發(fā)技術與流程分析

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2018-12-05 08:02 ? 次閱讀

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

Android 是一套真正意義上的開放性移動設備綜合平臺,它包括操作系統、中間件和一些關鍵的平臺應用。Android 最大特點在于它是一個開放的體系架構,具有非常好的開發(fā)和調試環(huán)境,而且還支持各種可擴展的用戶體驗,Android 里面具有非常豐富的圖形系統、對多媒體的支持功能和非常強大的瀏覽器.

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

1 Android 軟件平臺的構成

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

(1) 關鍵應用程序。

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

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

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

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

(3) Android 運行時庫和其它庫層。

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

(4) Linux 內核。

Android 系統平臺基于優(yōu)化了的Linux 內核,它提供諸如硬件驅動程序( USB藍牙、顯示屏等) 、內存管理、進程管理、電源管理等服務,同時也是手機軟、硬件的連接層。

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

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

Activity 是Android 最基本的應用程序組件。任何一個Android 應用程序都可以看作一組任務,這里每一個任務就可以稱作一個Activity.在應用程序中,一個Activity 通常就是一個單獨的屏幕,用于呈現數據和與用戶進行交互,每個屏幕可以有一個或多個組件布局。

而每一個活動又是一個單獨的類,每一個這樣的類都要將Activity 作為父類。一個Activity 可以切換到新的Activity,也可以返回前一個Activity.Android 通過使用Intent 類來實現Activity 的切換。例如,一個簡單的游戲程序可以分為5 個Activity: 啟動畫面、主菜單界面、游戲主界面、高分辨和幫助界面。

Service,即"服務"的意思,相當于沒有界面的Activity.應用程序的Service 可以不需要用戶直接參與而長時間運行。典型的例子就是音樂播放器。在一個音樂播放器程序中有多個Activity,它們分別實現了歌曲的選擇和播放等功能。然而,音樂重放這個功能并沒有對應的Activity,它通過Service 來實現。

音樂播放器程序啟動一個Service,它可以在后臺保持音樂的不斷播放。應用程序還可以連接到一個Service.當Service 啟動后,還可以借助Service 提供的接口與它進行通信

Android 應用程序可以使用文件、SQL 數據庫等各種存儲系統來保存數據。但是,如果想實現不同應用之間的數據共享,就需要用到Content Provider.

Content Provider 提供了一套標準的訪問接口,以方便其他應用程序對數據進行訪問、操作。

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

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

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

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

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

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

單獨的Android 設備和開發(fā)人員可以擴展其支持的媒體格式列表。

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

Android多媒體應用程序的開發(fā)技術與流程分析

圖1 Open Core 框架圖

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

3. 2 Open Core 的主要多媒體類與接口

Open Core 主要提供了如下幾個多媒體類:

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

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

( 3) VideoView 類主要用來顯示一個視頻文件,它是SurfaceView 類的一個子類,且實現了MediaPlayerControl接口。

( 4) Camera 類用來處理系統中與相機相關的事件,Camera 是一個專門用來連接和斷開相機服務的類。

Open Core 在使用過程中的調用關系如圖2所示。

Android多媒體應用程序的開發(fā)技術與流程分析

圖2 使用Open Core 的調用關系圖

4 示例程序: 播放器

4. 1 布局設計

Android 是通過布局( Layout) 來定義UI( 用戶界面) 的。一般視圖( 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 個BUTTON 同上,橫坐標有變化。)

< /AbsoluteLayout >

這個簡單的播放器只有一個界面,可以顯示播放列表和對音樂的播放進行各種操作。

4. 2 程序框架設計

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

public MediaPlayer mMediaPlayer = null;

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

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

private int currentListItme = 0; / /索引

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

4. 3 程序核心代碼

接下來設置這些ImageButton 的事件監(jiān)聽。

mStartImageButton. setOnClickListener(

new ImageButton. OnClickListener( )

{

@ Override public void onClick( View v)

{

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

) ;

}

} ) ;

這是"開始播放"按鈕的事件監(jiān)聽。這里是調用了一個playMusic( ) 方法來實現音樂文件的播放的。

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

接下來,要設置一個OnCompletionListener ( setOnCompletionListener( new OnCompletionListener ) ) ,在歌曲結束的時候,onCompletion( MediaPlayer) 會被調用,這樣就可以設置為自動播放下一曲目。代碼如下。

mMediaPlayer. setOnCompletionListener(

new OnCompletionListener( )

{

public void onCompletion( MediaPlayer arg0)

{

nextMusic( ) ; / /播放下一曲

}

} ) ;

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

5 結束語

Android 手機應用程序開發(fā)需要著眼于它的整個體系構架,這是一項復雜的工程。本文先是介紹并分析了Android 系統的層次架構,并在此基礎上介紹了Android 應用程序開發(fā)的相關技術和基本的開發(fā)流程。接下來介紹了Android 為開發(fā)人員提供的簡單、易用的多媒體開發(fā)組件MediaPlayer、MediaRecorder等類。最后用具體的應用程序簡要說明了Android多媒體應用程序的開發(fā)方法。Android 具有極大的開放性和兼容性,相信廣大開發(fā)者可以借助AndroidSDK 提供的強大技術支持,開發(fā)出豐富多彩、極具個性的移動應用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3926

    瀏覽量

    127158
  • 多媒體
    +關注

    關注

    0

    文章

    495

    瀏覽量

    36946
  • 應用程序
    +關注

    關注

    37

    文章

    3245

    瀏覽量

    57614
收藏 人收藏

    評論

    相關推薦

    2018年Android應用程序的發(fā)展趨勢分析

    應用程序開發(fā)人員正在不斷開發(fā)新方法,一方面簡化和縮短開發(fā)流程,另一方面構建最佳設計和用戶體驗。每年我們都可以看到在移動
    的頭像 發(fā)表于 02-24 09:03 ?8232次閱讀
    2018年<b class='flag-5'>Android</b><b class='flag-5'>應用程序</b>的發(fā)展趨勢<b class='flag-5'>分析</b>

    多媒體技術的應用與發(fā)展

    【作者】:黨衛(wèi)紅;【來源】:《內江科技》2010年03期【摘要】:多媒體技術是20世紀90年代發(fā)展起來的新技術,本文通過對多媒體技術的應用現
    發(fā)表于 04-24 09:57

    多媒體應用開發(fā)

    主要內容多媒體框架(MMF)客戶端API音頻程序開發(fā)視頻程序開發(fā)攝像頭使用
    發(fā)表于 03-08 22:50

    軟件開發(fā)(手機開發(fā) 網絡多媒體 linux開發(fā) android開發(fā)

    ,Application,互聯網開發(fā),產品量產與升級系統等。 資深軟件開發(fā)工程師(手機開發(fā)方向)職位描述:職責:1. 負責基于Android平臺的
    發(fā)表于 12-13 17:23

    推薦一本書《android應用程序開發(fā)與典型案例》完整版PDF下載

    android系統應用編程中典型的技術,比如,android中的圖形圖像、多媒體編程、gps定位與地圖編程等;第二部分是android
    發(fā)表于 09-28 10:29

    Android程序的執(zhí)行流程分析

    《大話企業(yè)級Android應用開發(fā)實戰(zhàn)》這是一本能夠讓你學出幸福感并在還沒有學完時就能夠勝任Android應用軟件工程師工作的書。本書所有的內容都是基于企業(yè)內部的Android實際
    發(fā)表于 07-11 08:02

    Android多媒體程序開發(fā)教程

    應用上面可以理解成:具備操作系統,可以自由下載安裝程序的手機,從應用上看,智能手機等同于一個電腦。 Android 操作系統具備的幾個特性決定它必將成為智能手機的主流操作系統: 1. Android 系統的
    發(fā)表于 10-23 11:41 ?0次下載
    <b class='flag-5'>Android</b><b class='flag-5'>多媒體</b><b class='flag-5'>程序</b><b class='flag-5'>開發(fā)</b>教程

    基于Android平臺的多媒體播放器解決方案分析

    務,多媒體業(yè)務的應用才是終端廠商的發(fā)展方向。音視頻播放作為一項不可或缺的多媒體業(yè)務,對于具有豐富的可編程擴展性的Android操作系統,可以開發(fā)出個性化的音視頻播放應用軟件。 1
    發(fā)表于 10-25 10:26 ?0次下載
    基于<b class='flag-5'>Android</b>平臺的<b class='flag-5'>多媒體</b>播放器解決方案<b class='flag-5'>分析</b>

    用于移動應用程序多媒體處理器 EMMA Mobile1 for SPI

    用于移動應用程序多媒體處理器 EMMA Mobile1 for SPI
    發(fā)表于 04-20 19:26 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1 for SPI

    用于移動應用程序多媒體處理器 EMMA Mobile1for UART 接口

    用于移動應用程序多媒體處理器 EMMA Mobile1for UART 接口
    發(fā)表于 04-20 19:26 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1for UART 接口

    用于移動應用程序多媒體處理器 EMMA Mobile1for Image Composer

    用于移動應用程序多媒體處理器 EMMA Mobile1for Image Composer
    發(fā)表于 04-20 19:26 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1for Image Composer

    用于移動應用程序多媒體處理器 EMMA Mobile1 for Timer

    用于移動應用程序多媒體處理器 EMMA Mobile1 for Timer
    發(fā)表于 04-20 19:26 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1 for Timer

    用于移動應用程序多媒體處理器 EMMA Mobile1for MICROWIRE

    用于移動應用程序多媒體處理器 EMMA Mobile1for MICROWIRE
    發(fā)表于 04-21 19:23 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1for MICROWIRE

    用于移動應用程序多媒體處理器 EMMA Mobile1for Camera Interface

    用于移動應用程序多媒體處理器 EMMA Mobile1for Camera Interface
    發(fā)表于 04-21 19:23 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1for Camera Interface

    用于移動應用程序多媒體處理器 EMMA Mobile1 for PDMA

    用于移動應用程序多媒體處理器 EMMA Mobile1 for PDMA
    發(fā)表于 04-21 19:23 ?0次下載
    用于移動<b class='flag-5'>應用程序</b>的<b class='flag-5'>多媒體</b>處理器 EMMA Mobile1 for PDMA