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

正文內(nèi)容

基于android手機(jī)平臺(tái)的音樂播放器本科畢業(yè)論文(參考版)

2025-07-07 11:38本頁面
  

【正文】 圖 圖 31 文件瀏覽器功能實(shí)現(xiàn) 程序中,文件瀏覽器類為 FileExplorerActivity繼承了 ListActivity,此 Activity是一個(gè) ListView界面。 當(dāng)要添加選中的歌曲時(shí),程序有自動(dòng)判斷功能,首先彈出 Dialog(圖)。選中 system會(huì)進(jìn)入到圖 ,該目錄會(huì)顯示 system下的各級子目錄。播放器只需要用到媒體文件,所以代碼也屏蔽了其它文件的子目錄。 文件瀏覽器界面布局格式類似上面介紹的菜單,只是在界面的第一行新增了一個(gè)返回根目錄的功能。此方法當(dāng)該標(biāo)記不存在時(shí)會(huì)默認(rèn)返回一個(gè) null值。如下圖: (2).xml配置文件的讀取 我們?nèi)砸圆シ拍J阶x取為例:當(dāng)需要用到播放模式的確定時(shí),我們將讀取 .Xml文件,同樣用共享文件類 SharedPreferences 通過用方法getSharedPreferences(SET_MSG,MODE_WORLD_READABLE),并且是只讀方式獲得 .Xml的文件內(nèi)容。然后對象 editor可以存入一個(gè) HashMapkey,values類型的鍵值,即 putString(KEY, VALUES),這樣,我們可以將 List中的對象轉(zhuǎn)化成一樣長的字符中放進(jìn)配置文件中 . 當(dāng)寫入成功時(shí), android系統(tǒng)會(huì)自動(dòng)在目錄 data/data/工程包名/shared_prefs/目錄下生成一個(gè)配置文件如 (圖 ) 30 圖 打開播放模式的配置文件 .xml,文件中是以 map的形式存儲(chǔ)。由于歌曲在播放時(shí)會(huì)存在界面之間的跳轉(zhuǎn),所以歌詞必須固定存放在一個(gè)文件中,而不能作為一個(gè)對象,因此,我們將兩個(gè)時(shí)間 List和歌詞 List再寫進(jìn)一個(gè)配置文件中 . Android提供給我們一個(gè)共享文件的類 SharedPreferences。由于我們要分別存放時(shí)間和歌詞,所以我們應(yīng)該定義兩個(gè) ListString容器來存放時(shí)間和歌詞。 下面將介紹如何將 .Lrc中的歌詞讀取出來并存儲(chǔ)在 Android的配文件中 (1).xml配置文件的存儲(chǔ) Android系統(tǒng)目錄結(jié)構(gòu)如下圖: 29 圖 我們可以看到一個(gè)目錄為 sdcard ,該目 錄即為擴(kuò)展卡,里面預(yù)先存放著音頻文件和 .Lrc歌詞文件,我們定義一個(gè) BufferedReader buffer=new BufferedReader(new FileReader(new File(/sdcard/+ musicName + .lrc)))。 歌詞顯示實(shí)現(xiàn) 本播放器以歌詞格式 .Lrc的文件。獲得開關(guān) 狀態(tài)。使用前對它進(jìn)行實(shí)例化 (ToggleButton) ()。 (2)歌詞設(shè)置 歌詞是否顯示是一個(gè)開關(guān)按鈕 ToggleButton實(shí)現(xiàn)的,有 ON和 OFF狀態(tài),當(dāng)為 ON時(shí),歌詞顯示,為 OFF時(shí),歌詞關(guān)閉。 MediaPlayer有一個(gè)監(jiān)聽器,它監(jiān)聽著歌曲是否正在播放或者是否播放完成,當(dāng)歌曲播放完成時(shí),會(huì)觸發(fā)方法 OnCompletionListener(),在該方法里面可以處理歌曲播放完成后的操作。 RatioGroup 里面嵌套著 3個(gè) RatioButton,即界面上顯示的(單曲循環(huán)、隨機(jī)播放、順序播放) 。聲 明一個(gè) Intent,并指明要跳轉(zhuǎn)的界面類,然后啟動(dòng) Intent。 } 選擇“是”后,執(zhí)行代碼: Intent intent = new Intent(,)。 String[] selectionArgs = { musicName }。 Uri uri = 。 選擇移除菜單選項(xiàng)時(shí),出現(xiàn)(圖 )的 Dialog、選擇全部移除菜單選項(xiàng)時(shí),出現(xiàn)(圖 )的 Dialog 圖 圖 刪除單首歌曲算法:是對數(shù)據(jù)庫進(jìn)行單項(xiàng)操作。 全部移除:點(diǎn)擊后事件觸發(fā),刪除播放列表。 26 移除功能:點(diǎn)擊后事件觸發(fā)。 詳細(xì)功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,跳轉(zhuǎn)到下一界面,顯示該歌曲的詳細(xì)信息。各功能都是通過鼠標(biāo)點(diǎn)擊或觸屏觸發(fā)事件。這種算法的實(shí)現(xiàn)在前面已經(jīng)討論過,這里不再討論。 (holder)。 = (TextView) ()。方法將這些參數(shù)設(shè)置到界面中去,可以看到與界面顯示效果相同! 該菜單每一行有一張圖片和一個(gè)菜單選項(xiàng)(如圖 ) 圖 ListAdapter繼承一個(gè) BaseAdapter,實(shí)現(xiàn)里面的 getView()方法,再對其進(jìn)行擴(kuò)展。 (設(shè)置 )。 (移除 )。 (詳細(xì) )。 菜單功能 菜單界面(如圖 ) 圖 菜單界面 在 ,布局結(jié)構(gòu)如下: ?xml version= encoding=utf8? LinearLayout LinearLayout TextView /TextView /LinearLayout ListView /ListView TextView /TextView LinearLayout ImageButton /ImageButton /LinearLayout /LinearLayout 25 在程序中的 ListString容器,該容器可以存放 String類型的字符,如下: ListString seclect_items = new ArrayListString()。()。如果不存在剛會(huì)提示是空列表,選擇到 SDCard中添加歌曲 (如圖 ) 圖 中間為一個(gè) Dialog對話框,具有 Acitivty的屬性,但是獨(dú)立于界面的 24 一個(gè)視圖,該對話框中放置了一個(gè)布局文件。 歌曲列表是從播放主界面跳轉(zhuǎn)過來的,能跳到該歌曲列表是前提是 數(shù)據(jù)有歌曲列表的存在。這樣就可以通過 Intent將數(shù)據(jù)傳入到其它的Activity。視圖可以顯示在 Activity上,所以就可以看到我們想要的歌曲列表界面。由于 BaseAdapter是一個(gè)抽象類,我們需要實(shí)現(xiàn)里面的抽象方法 getView()。系統(tǒng)默認(rèn)的方式每一行只顯示一個(gè) TextView,本播放列表實(shí)現(xiàn)了自定義的方式,剛 ListView的每一行顯示一個(gè)音樂圖片和一個(gè)歌曲名字。在查詢數(shù)據(jù)庫時(shí)需要傳入一個(gè)當(dāng)前播放的歌曲名字,通過歌曲名字來查詢歌曲的路徑。 Uri 類似一個(gè)網(wǎng)絡(luò)連接的 Url。 } 方法 getContentResolver是包 里面的方法,它會(huì)自動(dòng)的調(diào)用 ContentProvider 中的關(guān)聯(lián)數(shù)據(jù)庫,我們需用這個(gè)方法就可以操作數(shù)據(jù)庫。 return path。 22 Cursor c=(uri,projection,selection, selectionArgs, null)。 String selection = fileName=?。 Uri uri = 。這里將調(diào)用 PlayRackActivity的一個(gè)方法query()。 歌曲數(shù)據(jù)源的獲得:要獲得數(shù)據(jù)源,需要我們提供給接口類一個(gè)歌曲存放路徑, 而這個(gè)路徑已經(jīng)被事先放到數(shù)據(jù)庫里了,我們只需要進(jìn)行數(shù)據(jù)庫進(jìn)行操作。播放數(shù)據(jù)源,該數(shù)據(jù)源播放后,不再與程序 有關(guān),需要用 ()方法讓其停止或()。 第三步 :準(zhǔn)備播放數(shù)據(jù)源,調(diào)用方法 ()。 第二步:傳入歌曲數(shù)據(jù)源,這里也是一個(gè)數(shù)據(jù)流 (String path)。該接口在執(zhí)行行需要一個(gè)數(shù)據(jù)源,通過如下四個(gè)步驟: 第一步: ()。LinearLayout中依次放置播放,暫停,停止,上、下一曲按鈕屬性。 播放器播放、暫停、停止等功能 圖 如圖 :各按鈕水平放置,用的是布局中的線性布局LinearLayout,用方法 setOrientation(horizontal)。這樣就實(shí)現(xiàn)了歌詞同步功能 SeekBar有一個(gè)監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進(jìn)度條的監(jiān)聽,當(dāng)我們用鼠標(biāo)向 SeekBar的各位置進(jìn)行點(diǎn)擊時(shí),它會(huì)自動(dòng)監(jiān)聽其位置,進(jìn)行相應(yīng)的位置顯示。 以上代碼意思是讓播放歌曲的線程每隔 1000ms,即每 1秒對音軌的TextView重新設(shè)置時(shí)間且讓進(jìn)度條前進(jìn) 1秒的進(jìn)度。這樣就達(dá)到了各線程之間的通信。}}。 showLrcTwo(lrc_time, lrc_word)。 (currently_Progress)。 (1)設(shè)置游標(biāo)的起始進(jìn)度為 1。通過這些屬性設(shè)置,就自定義一個(gè)如上圖一的 SeekBar音軌 . 播放器最重要的一部分就是音軌與歌曲進(jìn)度同步的實(shí)現(xiàn)。引用了 drawable中的 件 ,,算法如下: ?xml version= encoding=utf8? layerlist xmlns:android= item android:id=android:id/background shapecorners android:radius=5dip /gradient android:startColor=ff9d9e9d android:centerColor=ff5a5d5a android:centerY= android:endColor=ff747674 android:angle=270 //shape/item item android:id=android:id/secondaryProgress clipshapecorners android:radius=5dip / gradient android:startColor=80ffd300 android:centerColor=80ffb600 android:centerY= android:endColor=a0ffcb00 android:angle=270 / /shape/clip/item item android:id=android:id/progress 20 clipshapecorners android:radius=5dip /gradient android:startColor=ff0099CCandroid:centerColor=ff3399CC android:centerY=android:endColor=ff6699CC android:angle=270 //shape/clip/item /layerlist 配置文件中三個(gè) Item項(xiàng)依次決定了 SeekBar的三層背景,從最下層的灰色到最上層的藍(lán)色。在播放界面中,歌詞顯示為居中,實(shí)現(xiàn)方法代碼如下: LinearLayout android:orientation=horizontal android:gravity=centerandroid:layout_height=wrap_content android:layout_width=fill_parent TextView android:layout_height=wrap_content android:textColor=8deeee android:id=+id/lrcText android:layout_width=wrap_content/TextView /LinearLayout 屬性: orientation=horizontal:此線性布局的子部件為水平方式布局 Layout_width=fill_content :布局的寬度為填滿父布局 Layout_height=wrap_content :布局的高度子由窗體的大小決定 窗體 TextView 文本 : textColor=8deeee 設(shè)置文本顯示的顏色 RGB為 8deeee TextSize為默認(rèn)大小 播放界面音軌的實(shí)現(xiàn) 播放器音軌 SeekBar(如下圖) Android系統(tǒng)自帶 SeekBar(如下圖) 19 圖 不管是從界面外觀還是從功能上,系統(tǒng)自帶的 SeekBar往往不能滿足用戶的需要。每個(gè)布局內(nèi)可以放置多種 Widget(窗體部件)例如: TextViewImageButton等。} 該方法主要執(zhí)行界面的初始化操作, Activity 有個(gè)設(shè)置布局的方法: (layoutResID),參數(shù)為資源 ID,該 Id 在工程目錄 res/layout 下,主界面布局文件名為 play_rack。播放器主界面是一個(gè) Activity, Android 工程在每個(gè)activity 啟動(dòng)的時(shí)候會(huì)首先執(zhí)行 Oncreate()方法,如下代碼: Override Public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 17 第五章 播放器系統(tǒng)功能詳細(xì)設(shè)計(jì) 音樂播放器主界面功能實(shí)現(xiàn) 播放器主界面 播放器主界面(圖 )
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1