新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 基于Android系統的多媒體播放器解決方案

        基于Android系統的多媒體播放器解決方案

        作者: 時間:2012-03-30 來源:網絡 收藏

        2.3.1 獲取數據
        若要獲取Preferences文件的數據,例如繼續播放動作需要讀取播放歷史信息。首先通過調用Context.getSharedPreferences(String name,int mode)方法傳入Preferences文件名和打開模式來獲得一個Shared Preferences對象sp,若該Preferences文件不存在,在提交數據后會創建該Preferences文件。利用該sp對象調用getter方法,傳入相應的鍵來讀取數據。
        c.jpg
        平臺中,所有音/視頻文件的相關信息都是以Content的形式提供給開發者的,所以歷史播放信息是content://樣式的URI,也就是前面提到的nowPlaying。
        2.3.2 存儲數據
        若要修改Preferences文件的數據,例如暫停當前播放,或停止播放并退出該播放器軟件會引起播放歷史信息的變更。而產生該動作的原理是,每當播放新的音/視頻文件首先將其URI賦值到全局變量nowPlaying,然后在退出該播放軟件時處理變更工作:利用Shared Prefer ences對象sp調用edit()方法獲得一個內部類Editor對象editor,利用該editor對象對Preferences文件進行編輯,即讀取nowPlaying的數據,隨后必須調用commit()方法才可以完成修改該Preferences文件里鍵為URI_KEY的對應數值。
        d.jpg
        2.4 多媒體應用
        2.4.1 多媒體宏觀結構
        的多媒體部分框架涉及應用程序、Java框架層、C語言框架、硬件抽象層等環節。其中 Java框架層提供標準多媒體API供上層相關應用程序調用。而媒體的播放過程實際上是由下層的OpenCore和Stagefright等實現的。Android多媒體宏觀結構如圖2所示。

        本文引用地址:http://www.104case.com/article/165780.htm

        e.jpg


        2.4.2 多媒體處理過程
        典型數據流在多中的運行過程主要經過以下環節:最上層的Java應用程序將媒體URI(媒體文件或者流媒體)作為輸入設置到中(主要是通過Android平臺提供的標準接口API,如MediaPlayer(接口)等),經過Java框架層,JNI和本地框架層,一直設置到PVPlayer(OpenCore)。該過程中只是傳遞媒體URI路徑,并無數據流傳遞。由PVPlayer進行解析后,將媒體分成音頻流(MP3,AMR,AAC等)和視頻流(H263,H264,MPEG4等),經過編解碼器的處理和同步(AVSync)處理后轉換成原始數據(音頻通常是PCM,視頻通常是YUV或RGB格式)。隨后音視頻原始數據將被送入音頻和視頻的輸出環節(揚聲器或者顯示屏等硬件)。
        2.4.3 多媒體播放接口
        Android平臺提供android.media包來管理各種音頻和視頻的媒體接口,該包中的MediaPlayer(媒體播放器接口)用于控制音頻或視頻文件和流的回放。另外在android.widget包中還提供Video View(視頻視圖)組件用于播放視頻文件,以簡化相對于使用Media Player播放視頻的繁瑣控制過程。
        (1)MediaPlayer
        對播放音頻而言,通過MediaPlayer.crea te(Context context,Uri uri)方法來獲取播放器實例,無需播放準備,直接通過MediaPlay er.start()方法來啟動播放動作。其中nowPlaying就是用戶當前選中的待播放文件。
        //開始播放
        MediaPlayer mPlayer=MediaPlayer.create(context,nowPlaying);
        mPlayer.start();
        通過播放器實例mp調用MediaPlayer.pause()方法可以暫停當前播放行為,可以使用start()方法恢復播放。
        首先調用MediaPlayer.stop()停止當前播放行為,再調用釋放與播放器相關資源的方法MediaPlayer.release()來完成停止播放動作。
        對于播放視頻來說,通過MediaPlayer(媒體播放器接口)的“setDataSource”方法可以指定視頻文件路徑。與播放音頻數據不同的是,視頻播放還要設置顯示視頻內容的承載體,使用MediaPlayer的“setDisplay”方法為當前播放器實例設置一個用于顯示視頻內容、代表屏幕描繪的控制器。這樣用于播放視頻的播放承載體必須實現Surface Holder(表面視圖處理接口)的視圖組件。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福海县| 南和县| 军事| 临泉县| 高安市| 忻城县| 教育| 勐海县| 达孜县| 玛曲县| 仙游县| 老河口市| 宣威市| 黄浦区| 岐山县| 界首市| 饶河县| 抚松县| 镇康县| 徐水县| 玉溪市| 东莞市| 开原市| 甘谷县| 兴业县| 余姚市| 马边| 沂源县| 汉阴县| 灌南县| 新和县| 上蔡县| 尼木县| 搜索| 丽水市| 云阳县| 平凉市| 抚州市| 南康市| 华蓥市| 禄丰县|