freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android手機(jī)操作系統(tǒng)的音頻播放器(參考版)

2024-12-11 09:54本頁面
  

【正文】 同時對文。(具體的布局定義方法清查閱附錄中 ) 。 curProgressText=(TextView)findViewById()。 mNextImageButton = (ImageButton) findViewById()。 mStartImageButton = (ImageButton) findViewById()。 ? 初始化圖像按鈕、拖動條和當(dāng)前進(jìn)度顯示值; mFrontImageButton = (ImageButton) findViewById()。并且完成一下幾步: ? 更新播放列表,初始化多媒體對象; musicList()。 指定 要播放的文件夾路徑 ,以便于 ArrayList 函數(shù)對音頻文件進(jìn)行檢索。 定義在播放列表中的當(dāng)前選擇項 。也就是指定播放文件目錄后,進(jìn)行文件檢索的函數(shù),當(dāng)它檢索到文 件后,就會用 curProgressText 函數(shù)將檢索到的文件名給予顯示。 private ListString mMusicList = new ArrayListString()。 定 義 一個多媒體對象 ,調(diào)用 MediaPlayer 函數(shù)。 public MediaPlayer mMediaPlayer = null。 本段代碼對顯示的文本框進(jìn)行了定義,也就是定義播放對話框。 武漢大學(xué)珞珈學(xué)院本科畢業(yè)論文 22 private TextView curProgressText =null。 定義進(jìn)度 handler, PercentHandler 顯示百分比進(jìn)度 ,同時 定義拖動條 。 private SeekBar mSeekBar =null。分別定義了 5 個播放器按鈕,并且賦初值為空。 private ImageButton mNextImageButton = null。 private ImageButton mPauseImageButton = null。 private ImageButton mFrontImageButton = null。 ListActivity 的默認(rèn)布局由一個位于屏幕中心的全屏列表構(gòu)成。 ListActivity 類是 顯示一個綁定到數(shù)組或游標(biāo)這些數(shù)據(jù)源的一個列表,并且列表的每一項提供一個點擊事件的管理方法,當(dāng)用戶點擊其中的列表項的時候就能進(jìn)行相應(yīng)的處理。 以上函數(shù)聲明本項目中所導(dǎo)入的各個類,具體各類的具體功能不在此贅述,這些類主要有一下幾個種類: 1)對話框視圖類; 2) 媒體播放類; 3)用戶界面設(shè)計類。 import 。 import 。 import 。 import 。 import 。 import 。 武漢大學(xué)珞珈學(xué)院本科畢業(yè)論文 21 import 。 import 。 import 。在此處聲明源代碼所處的目錄為/Bool/android/MusicPlayer,一般情況下在創(chuàng)建工程的時候就會要求設(shè)定代碼目錄。 源代碼分析 下面我們將結(jié)合項目本身對本項目目錄中所涉及的代碼進(jìn)行逐一講解 src 文件夾 src 文件夾里面包含的是本項目的核心代碼 文件,具體打開來看: package 。 。這個文件列出了應(yīng)用程序所提供的功能,在這個文件中,你可以指定應(yīng)用程序使用到 的服務(wù) (如電話服務(wù)、互聯(lián)網(wǎng)服務(wù)、短信服務(wù)、 GPS 服務(wù)等等 )。 ??梢源娣哦鄠€ *.xml 文件,還可以存放不同類型的數(shù)據(jù)。新建一個項目, res 目錄下會有三個子目錄:drawabel、 layout、 values。 資源目錄,包含你項目中的資源文件并將編譯進(jìn)應(yīng)用程序。 包含應(yīng)用系統(tǒng)需要使用到的諸如 mp視頻類的文件。通過 將自己的應(yīng)用程序綁定到 Android SDK 和 Android Emulator,這允許你使用所有 Android 的庫和包,且使你的應(yīng)用程序在適當(dāng)?shù)沫h(huán)境中調(diào)試。 文件夾 。 該文件夾下面有個 文件, 是在建立項目時自動生成的,武漢大學(xué)珞珈學(xué)院本科畢業(yè)論文 20 這個文件是只讀模式的,不能更改。 顧名思義( src, source code)該文件夾是放項目的源代碼的。 [2] 圖 Android 項目目錄結(jié)構(gòu) 這也是 Android 項目的一般目錄結(jié)構(gòu)。 武漢大學(xué)珞珈學(xué)院本科畢業(yè)論文 19 第 4 章 播放器程序的具體實現(xiàn) 每一個平臺都有自己的結(jié)構(gòu)框架,比如像學(xué)習(xí) Java 或者 C\C++時,第一個程序總是 main 函數(shù),以及文件類型和存儲方式。 OpenCare 作為 Android多媒體的底層解決方案,理解其 實現(xiàn)方式有利于對 Android 多媒體方法進(jìn)行更深入的探索與創(chuàng)新。從框架結(jié)構(gòu)上來看, 、 和 三個類定義了武漢大學(xué)珞珈學(xué)院本科畢業(yè)論文 18 MeidaPlayer 的接口和架構(gòu), 和 兩個文件用于MeidaPlayer 架構(gòu)的實現(xiàn), MeidaPlayer 的具體功能在 PVPlayer(庫 )中的實現(xiàn)。 整個 MediaPlayer 庫和調(diào)用的關(guān)系如 圖 。 MediaPlayer 部分的頭文件在 frameworks/base/include/media/目錄中,這個目錄是和 庫源文件的目錄 frameworks/base/media/libmedia/相對應(yīng)的。 是 Media 的服務(wù)器,它通過繼承 的類實現(xiàn)服務(wù)器的功能,而 中的另外一部分內(nèi)容則通過進(jìn)程間通訊和 進(jìn)行通訊。 表 MediaPlayer 的基本接口 方法( Public Methods) 說明 static MediaPlayer create(Context context, Uri uri) 構(gòu)造方 法創(chuàng)建 一個 要播 放的多 媒體( Convenience method to create a MediaPlayer for a given Uri.) int getCurrentPosition() 得到當(dāng)前播放位置( Gets the current playback position.) int getDuration() 得到文件的播放時間 ( Gets the duration of the file.) int getVideoHeight() 返回視頻的高度值( Returns the height of the video.) int getVideoWidth() 返回視頻的寬度值( Returns the width of the video. ) boolean isPlaying() 檢查媒體是否播放( Checks whether the MediaPlayer is playing.) void pause() 暫停播放( Pauses playback.) void prepare() 準(zhǔn)備播放(同步)( Prepares the player for playback, synchronously.) void prepareAsync() 準(zhǔn)備播放(異步)( Prepares the player for playback, asynchronously.) void release() 釋放 MediaPlayer 對象( Releases resources associated with this MediaPlayer object.) void start() 開始播放( Starts or resumes playback.) void stop() 停止播放( Stops playback after playback has been stopped or paused.) void reset() 重置 MediaPlayer 對象( Resets the MediaPlayer to its uninitialized state.) void seekTo(int msec) 指定播放的位置( Seeks to specified time position.) void setAudioStreamType(int streamtype) 設(shè)置流媒體的類型( Sets the audio stream type for this MediaPlayer.) void setDataSource(String path) 設(shè)置流媒體的數(shù)據(jù)來源( Sets the data source (filepath or /rtsp URL) to use.) void setVolume(float leftVolume, float rightVolume) 設(shè)置音量( Sets the volume on this player.) 整體架構(gòu) MediaPlayer 的各個庫之間的結(jié)構(gòu)比較復(fù)雜,可以用 圖 表示 。 //準(zhǔn)備 ()。 //構(gòu)建 MediaPlayer 對象 (PATH_TO_FILE)。 圖 Android 中使用 OpenCore 的調(diào)用關(guān)系圖 Media Player 提供的基本接口如 表 : [12] 我們可以看出 MediaPlayer 類提供了一個多媒體播放器的基本操作,播放,暫停,停止,設(shè)置音量等等。 從程序規(guī)模上來看, 是主要的實現(xiàn)部分,而其他的庫基本上都是在其上建立的封裝和為建立進(jìn)程間通訊的機(jī)制。 多媒體服務(wù)部分: frameworks/base/media/libmediaplayerservice/ 文件為 和 這部分內(nèi)容被編譯成庫 。 以開源的 Android 為例 MediaPlayer 的代碼主要在以下的目錄中: [10] Java 程序的路徑: packages/apps/Music/src//android/music/ Java 類的路徑: frameworks/base/media/java/android/media/ Java 本地調(diào)用部( JNI) :frameworks/base/media/jni/ 武漢大學(xué)珞珈學(xué)院本科畢業(yè)論文 15 這部分內(nèi)容編譯成為目標(biāo)是 。 Android 的 MediaPlayer 包含了 Audio 和 video 的播放功能,在 Android 的界面上,Music 和 Video 兩個應(yīng)用程序都是調(diào)用 MediaPlayer 實現(xiàn)的。 aDataSource, const OsclAny* aContextData) PVMFStatus PVPlayerEngine::DoAddDataSource(PVPlayerEngineCommandamp。 將 PlayerSetDataSource 的 mand類加入到 PlayerDriver 的 mand處理隊列中, 在 void PlayerDriver::Run() 函數(shù)中處理此 mand ,調(diào)用下面的handleSetDataSource 函數(shù)。client, const char* url) 中 , 調(diào) status_t MediaPlayerService::Client::setDataSource(const char *url) 函數(shù), Client 是MediaPlayerService 的一個內(nèi)部類。 然后新建一個 IMediaPlayer 變量, spIMediaPlayer player(servicecreate(getpid(), this, fd, offset, length))。 status_t MediaPlayer::setDataSource(const char *url) 此函數(shù)通過調(diào) getMediaPlayerService()先得到當(dāng)前 的 MediaPlayerService, const spIMediaPlayerServiceamp。 [8] 從 QueryRegistry 這個函數(shù)至底向上搜索可得到,在 android 中 splitter 的匹配過程如下: 之中定義了一個 JNINativeMethod( JAVA 本地調(diào)用方法)類型的數(shù)組 gMethods,供 java 代碼中調(diào)用 MultiPlayer 類的 setDataSource 成員函數(shù)時找到對應(yīng)的 c++函數(shù) : {setDataSource,(Ljava/lang/String。 aOutputType, Oscl_VectorPVUuid, OsclMemAllocatoramp。 當(dāng)前 Splitter 的匹配過程 PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatTypeamp。 ? 播放引擎 PVPlayerEngine 類中有 PVPlayerNodeRegistry iPlayerNodeRegistry成員變量。 綜述一下 splitter 的定義與初始化過程: ? 每個 splitter 都在 fileformats 目錄下有個對應(yīng)的子目錄,其下有各自的解析類。而 CreatePVMFWAVFFParserNode() 函 數(shù) 是 在PVPlayerNodeRegistry::PVPlayerNodeRegistry()類
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1