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

正文內(nèi)容

基于android手機(jī)平臺(tái)的音樂播放器本科畢業(yè)論文-資料下載頁

2025-07-02 11:38本頁面

【導(dǎo)讀】什么是Android?

  

【正文】 曲的路徑。 播放列表功能 播放列表界面(如圖 ) 圖 布局層次關(guān)系如下: ?xml version= encoding=utf8? LinearLayout LinearLayout TextView/TextView /LinearLayout 23 ListView /ListView LinearLayout ImageButton /ImageButton /LinearLayout /LinearLayout 在 Android里面,有一個(gè)視圖叫 ListView,其特點(diǎn)是一個(gè)有 BaseAdapter的屬性,從下到下,或從左到右的顯示方式。系統(tǒng)默認(rèn)的方式每一行只顯示一個(gè) TextView,本播放列表實(shí)現(xiàn)了自定義的方式,剛 ListView的每一行顯示一個(gè)音樂圖片和一個(gè)歌曲名字。我們定義一個(gè)類 MusicAdapter 繼承了BaseAdapter,然后通過算法對(duì)這個(gè)適配器進(jìn)行擴(kuò)展,擴(kuò)展成為第一行能顯示一張圖片和一個(gè)歌曲名字。由于 BaseAdapter是一個(gè)抽象類,我們需要實(shí)現(xiàn)里面的抽象方法 getView()。該方法返回一個(gè) View,即視圖。視圖可以顯示在 Activity上,所以就可以看到我們想要的歌曲列表界面。 ListView同樣有一個(gè)監(jiān)聽器 new onItemClickListener(){ @Override public void onItemClick(AdapterView? arg0, View arg1, int arg2,long arg3) {}},我們只要實(shí)現(xiàn)這個(gè)方法,就可以監(jiān)聽鼠標(biāo)的點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊到每一行時(shí),可以通過 (int position)得到該行上的信息。這樣就可以通過 Intent將數(shù)據(jù)傳入到其它的Activity。本程序的思路是當(dāng)鼠標(biāo)點(diǎn)擊一行,會(huì)跳轉(zhuǎn)到另一個(gè) Activity里面,這個(gè) Activity和歌曲列表類似,也是一個(gè) ListView,該界面將在下一節(jié)介紹。 歌曲列表是從播放主界面跳轉(zhuǎn)過來的,能跳到該歌曲列表是前提是 數(shù)據(jù)有歌曲列表的存在。因?yàn)槊看胃枨斜盹@示時(shí)會(huì)查詢數(shù)據(jù)庫中的歌曲列表。如果不存在剛會(huì)提示是空列表,選擇到 SDCard中添加歌曲 (如圖 ) 圖 中間為一個(gè) Dialog對(duì)話框,具有 Acitivty的屬性,但是獨(dú)立于界面的 24 一個(gè)視圖,該對(duì)話框中放置了一個(gè)布局文件。 Dialog的創(chuàng)建: , AlertDialog alert =()。()。 該 Dialog上有兩個(gè)菜單選項(xiàng),第一個(gè)為“從 SD卡”,點(diǎn)擊會(huì)跳轉(zhuǎn)到SDcard界面中。 菜單功能 菜單界面(如圖 ) 圖 菜單界面 在 ,布局結(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()。 (播放 )。 (詳細(xì) )。 (新增 )。 (移除 )。 (全部移除 )。 (設(shè)置 )。 然后通過 ()。方法將這些參數(shù)設(shè)置到界面中去,可以看到與界面顯示效果相同! 該菜單每一行有一張圖片和一個(gè)菜單選項(xiàng)(如圖 ) 圖 ListAdapter繼承一個(gè) BaseAdapter,實(shí)現(xiàn)里面的 getView()方法,再對(duì)其進(jìn)行擴(kuò)展。 View getView(int position, View convertView, ViewGroup parent) { convertView = (, null)。 = (TextView) ()。 = (ImageView) ()。 (holder)。 } ListAdapter每一行都是一個(gè) LineaLayout布局,水平放置一個(gè)圖片一個(gè)String。這種算法的實(shí)現(xiàn)在前面已經(jīng)討論過,這里不再討論。 菜單功能實(shí)現(xiàn) 菜單有 6個(gè)功能:播放,詳細(xì),新增,移除,全部移除,設(shè)置。各功能都是通過鼠標(biāo)點(diǎn)擊或觸屏觸發(fā)事件。 播放功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,讓程序操作該名字進(jìn)行播放。 詳細(xì)功能:點(diǎn)擊后事件觸發(fā),傳入歌曲名字,跳轉(zhuǎn)到下一界面,顯示該歌曲的詳細(xì)信息。 新增功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到 SDCard中,進(jìn)行歌曲添加選擇。 26 移除功能:點(diǎn)擊后事件觸發(fā)。從數(shù)據(jù)庫中刪除選中的歌 曲。 全部移除:點(diǎn)擊后事件觸發(fā),刪除播放列表。 設(shè)置功能:點(diǎn)擊后事件觸發(fā),進(jìn)入到播放設(shè)置列表。 選擇移除菜單選項(xiàng)時(shí),出現(xiàn)(圖 )的 Dialog、選擇全部移除菜單選項(xiàng)時(shí),出現(xiàn)(圖 )的 Dialog 圖 圖 刪除單首歌曲算法:是對(duì)數(shù)據(jù)庫進(jìn)行單項(xiàng)操作。通過歌曲名字刪歌曲,算法如下: del_One(String musicName) { ContentResolver cr = getContentResolver()。 Uri uri = 。 String where = fileName=?。 String[] selectionArgs = { musicName }。 (uri, where, selectionArgs)。 } 選擇“是”后,執(zhí)行代碼: Intent intent = new Intent(,)。 startActivity(intent)。聲 明一個(gè) Intent,并指明要跳轉(zhuǎn)的界面類,然后啟動(dòng) Intent。 27 播放設(shè)置界面 界面實(shí)現(xiàn) 圖 配置文件 : ?xml version= encoding=utf8? LinearLayout RadioGroup RadioButton /RadioButton RadioButton /RadioButton RadioButton /RadioButton /RadioGroup /LinearLayout ToggleButton/ AbsoluteLayout ImageButton/ ImageButton/ /AbsoluteLayout 最外層的 LinearLayout里面嵌套多層 LineaLayout,子 LinearLayout里面嵌套著單選按鈕 RatioGroup 和開關(guān)按鈕 ToggleButton。 RatioGroup 里面嵌套著 3個(gè) RatioButton,即界面上顯示的(單曲循環(huán)、隨機(jī)播放、順序播放) 。 (1)播放模式 28 用的是一個(gè)組件 RadioGroup,這個(gè)組件有單項(xiàng)選擇的功能,里面有RadioButton項(xiàng),多個(gè) RadioButton項(xiàng)只能同時(shí)選中一個(gè),該 播放器播放模式有單曲循環(huán),隨機(jī)播放,順序播放等功能。 MediaPlayer有一個(gè)監(jiān)聽器,它監(jiān)聽著歌曲是否正在播放或者是否播放完成,當(dāng)歌曲播放完成時(shí),會(huì)觸發(fā)方法 OnCompletionListener(),在該方法里面可以處理歌曲播放完成后的操作。 RadioGroup可以進(jìn)行單項(xiàng)選擇操作,如圖 () 圖 通過 (),如果返回 true,剛該項(xiàng)被選中。 (2)歌詞設(shè)置 歌詞是否顯示是一個(gè)開關(guān)按鈕 ToggleButton實(shí)現(xiàn)的,有 ON和 OFF狀態(tài),當(dāng)為 ON時(shí),歌詞顯示,為 OFF時(shí),歌詞關(guān)閉。如圖 (): 圖 ToogleButton同樣有一個(gè)監(jiān)聽器,可以獲得 ToogleButton的不同狀態(tài)。使用前對(duì)它進(jìn)行實(shí)例化 (ToggleButton) ()。并且用 ()。獲得開關(guān) 狀態(tài)。 播放模式狀態(tài)和歌詞顯示狀態(tài)的操作結(jié)果都將以一個(gè)標(biāo)志,被寫在一個(gè)配置文件中,這是關(guān)于 Android的存儲(chǔ)方式,將在后面主要介紹。 歌詞顯示實(shí)現(xiàn) 本播放器以歌詞格式 .Lrc的文件。我們查看 .Lrc文件中的歌詞格式為: [00:]呼吸著 你的香水味 即是以“時(shí)間 +歌詞”的格式存儲(chǔ)。 下面將介紹如何將 .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)))。指定 .Lrc文件存在的路徑,并將文件讀取到 BufferReader中。由于我們要分別存放時(shí)間和歌詞,所以我們應(yīng)該定義兩個(gè) ListString容器來存放時(shí)間和歌詞。在讀取 lrc時(shí),每次讀取一行,再用算法將時(shí)間和歌詞分開后放到一個(gè)數(shù)組里面,并分別 存放在兩個(gè) list中。由于歌曲在播放時(shí)會(huì)存在界面之間的跳轉(zhuǎn),所以歌詞必須固定存放在一個(gè)文件中,而不能作為一個(gè)對(duì)象,因此,我們將兩個(gè)時(shí)間 List和歌詞 List再寫進(jìn)一個(gè)配置文件中 . Android提供給我們一個(gè)共享文件的類 SharedPreferences。它有一個(gè)方法 getSharedPreferences(參數(shù) 1,參數(shù) 2),參數(shù) 1為寫進(jìn)時(shí)的標(biāo)記,便于在從其中讀取出來時(shí)的標(biāo)記,參數(shù) 2為讀取模式,有只寫模式( MODE_WORLD_WRITEABLE)和只讀模式( MODE_WORLD_READABLE),在寫 之前將其置入編輯狀態(tài),用靜態(tài)方法 editor = ()。然后對(duì)象 editor可以存入一個(gè) HashMapkey,values類型的鍵值,即 putString(KEY, VALUES),這樣,我們可以將 List中的對(duì)象轉(zhuǎn)化成一樣長的字符中放進(jìn)配置文件中 . 當(dāng)寫入成功時(shí), android系統(tǒng)會(huì)自動(dòng)在目錄 data/data/工程包名/shared_prefs/目錄下生成一個(gè)配置文件如 (圖 ) 30 圖 打開播放模式的配置文件 .xml,文件中是以 map的形式存儲(chǔ)。鍵名string name=random_Play/string, 而它的值是 is_Radom。如下圖: (2).xml配置文件的讀取 我們?nèi)砸圆シ拍J阶x取為例:當(dāng)需要用到播放模式的確定時(shí),我們將讀取 .Xml文件,同樣用共享文件類 SharedPreferences 通過用方法getSharedPreferences(SET_MSG,MODE_WORLD_READABLE),并且是只讀方式獲得 .Xml的文件內(nèi)容。 SharedPreferences的對(duì)象調(diào)用方 法getString(sigle_Play, null),方法返回一個(gè) String類型的值,即是我們以前存儲(chǔ)進(jìn)去的 String值。此方法當(dāng)該標(biāo)記不存在時(shí)會(huì)默認(rèn)返回一個(gè) null值。獲得成功后我們就可以運(yùn)用當(dāng)前的值再對(duì)程序進(jìn)行操作了。 文件瀏覽器界面布局格式類似上面介紹的菜單,只是在界面的第一行新增了一個(gè)返回根目錄的功能。由于程序只關(guān)系到目錄 /sdcard的目錄下的文件,所以用程序屏蔽了其它的目錄,這里只顯示兩個(gè)目錄 /sdcard和 /system。播放器只需要用到媒體文件,所以代碼也屏蔽了其它文件的子目錄。 當(dāng)選中sdcard會(huì)進(jìn)入到圖 ,該目錄下只顯示媒體文件,如 .Mp3,和 sdcard下的子目錄。選中 system會(huì)進(jìn)入到圖 ,該目錄會(huì)顯示 system下的各級(jí)子目錄。當(dāng)有媒體文件時(shí)才會(huì)出現(xiàn)添加 Dialog。 當(dāng)要添加選中的歌曲時(shí),程序有自動(dòng)判斷功能,首先彈出 Dialog(圖)。點(diǎn)擊確定按鈕后,程序會(huì)查詢數(shù)據(jù)庫中的歌曲,調(diào)用方法query(fileName),根據(jù)歌曲名字查詢,如果歌曲不存在,則調(diào)用方法insertMusic(file),如果該歌曲名字已經(jīng)存在,則彈出 Dialog對(duì)話框(圖),當(dāng)添加成功后,程序會(huì)跳轉(zhuǎn)到播放列表中以顯示添加結(jié)果。 圖 圖 31 文件瀏覽器功能實(shí)現(xiàn) 程序中,文件瀏覽器類為 FileExplorerActivity繼承了 ListActivity,此 Activity是一個(gè) ListView界面。整個(gè)界面是一個(gè) ListView布局,而每一行是一個(gè) LinearLayout水平方式布局,上面將放置一個(gè)圖片和
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1