![基于Android普通的音樂播放器的設(shè)計(jì)與實(shí)訓(xùn)-軟件技術(shù)畢業(yè)論文_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/15/42fa41ff-3b36-4abe-918e-6e625e2e73ee/42fa41ff-3b36-4abe-918e-6e625e2e73ee1.gif)
![基于Android普通的音樂播放器的設(shè)計(jì)與實(shí)訓(xùn)-軟件技術(shù)畢業(yè)論文_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/15/42fa41ff-3b36-4abe-918e-6e625e2e73ee/42fa41ff-3b36-4abe-918e-6e625e2e73ee2.gif)
![基于Android普通的音樂播放器的設(shè)計(jì)與實(shí)訓(xùn)-軟件技術(shù)畢業(yè)論文_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/15/42fa41ff-3b36-4abe-918e-6e625e2e73ee/42fa41ff-3b36-4abe-918e-6e625e2e73ee3.gif)
![基于Android普通的音樂播放器的設(shè)計(jì)與實(shí)訓(xùn)-軟件技術(shù)畢業(yè)論文_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/15/42fa41ff-3b36-4abe-918e-6e625e2e73ee/42fa41ff-3b36-4abe-918e-6e625e2e73ee4.gif)
![基于Android普通的音樂播放器的設(shè)計(jì)與實(shí)訓(xùn)-軟件技術(shù)畢業(yè)論文_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/15/42fa41ff-3b36-4abe-918e-6e625e2e73ee/42fa41ff-3b36-4abe-918e-6e625e2e73ee5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 編號(hào) xxxxxx 信息職業(yè)技術(shù)學(xué)院信息職業(yè)技術(shù)學(xué)院 畢畢業(yè)業(yè)論論文文 題 目 基于 Android 普通的音樂播 放器的設(shè)計(jì)與實(shí)訓(xùn) 學(xué)生姓名xx 學(xué) 號(hào)xxx 院 系 計(jì)算機(jī)與通信工程學(xué)院 專 業(yè)軟件技術(shù) 班 級(jí)xx 指導(dǎo)教師xx 顧問教師 二一六年六月 摘 要 I 摘摘 要要 本音樂播放器的開發(fā)的原因是,在當(dāng)今大眾娛樂的時(shí)代,音樂播放器已是 越來越不可少,開發(fā)這個(gè)項(xiàng)目可以方便很多人。Android 當(dāng)前發(fā)展前景很不錯(cuò), 特別是在中國(guó)市場(chǎng),中國(guó)智能手機(jī)用戶花錢購(gòu)買應(yīng)用程序的意識(shí)淡薄,安卓主 打免費(fèi)和開放式系統(tǒng),適合廣大人群,安全系數(shù)一般,雖然沒有 IOS 那樣穩(wěn)定 易用,但開發(fā)前景仍然可觀
2、。 隨著社會(huì)的進(jìn)步發(fā)展,人們生活水平的穩(wěn)健提高,越來越多的人們開始對(duì) 娛樂生活有著各種各樣的需求,其中,音樂以其獨(dú)特的律動(dòng)和韻味捕獲了大多 數(shù)人們的心。在這樣的時(shí)代中,音樂播放器的使用也顯得格外的講究。 本音樂播放器為滿足廣大用戶對(duì)音樂體驗(yàn)的快感,結(jié)合了主流播放器的基 本功能,并大膽創(chuàng)新,只為給廣大用戶帶來極致的音樂享受。 本音樂播放器基本實(shí)現(xiàn)了現(xiàn)如今主流音樂播放器的基本功能,基本符合大 眾對(duì)音樂播放器的需求。除此以外,本播放器還提供了下載功能以及波形圖, 左右聲道等新鮮功能。滿足各類用戶的需求,帶來前所未有的體驗(yàn)感。 關(guān)鍵詞關(guān)鍵詞 1.android 2.音樂播放器 3.下載功能 Abstr
3、act II A Abstractbstract The reason for the development of the music player is that in the era of mass entertainment, music player is becoming more and more indispensable, the development of this project can be convenient for many people. Android is currently the development prospects are very good,
4、 especially in the Chinese market, Chinese smartphone users spend money to buy application consciousness, Android main free and open system, suitable for the majority of the population, the factor of safety in general, although there is no IOS as stable and easy to use, but the prospects are still i
5、mpressive. With the social progress and development, peoples living standards improve the robustness of the, more and more people began to have a variety of demand for live entertainment, including music, with its unique rhythm and charm capture the heart of most people. In such an era, the use of m
6、usic players also appears to be particularly stress. The music player to meet the majority of users of the music experience of pleasure, combined with the basic features of the mainstream player, and bold innovation, only for the majority of users to bring the ultimate music to enjoy. The basic real
7、ization of the music player is now the mainstream music players basic functions, basically in line with the needs of the public music player. In addition, the player also provides download features as well as the waveform, the left and right channels, and other new features. Meet the needs of all ki
8、nds of users, bring an unprecedented sense of experience. Keywords:1.android 2. music player 3.Download function 目 錄 III 目目 錄錄 摘摘 要要.I ABSTRACT .II 第第一章一章 緒論緒論.1 1.功能設(shè)計(jì).1 1.1.1 主界面音樂播放管理.1 1.1.2 通知欄音樂播放管理.1 1.1.3 音樂列表管理.1 1.1.4 設(shè)置管理.1 1.1.5 雙聲道管理.1 2. 本論文的內(nèi)容和結(jié)構(gòu)說明.1 第二章第二章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì).3 2.1 系統(tǒng)面向?qū)ο笤O(shè)計(jì).3 2
9、.2 數(shù)據(jù)庫(kù)設(shè)計(jì).3 2.3 主界面設(shè)計(jì).4 第三章第三章 系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn).5 3.1 數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)的實(shí)現(xiàn).5 3.2 系統(tǒng)功能實(shí)現(xiàn).5 3.2.1 音樂信息添加功能的實(shí)現(xiàn).5 3.2.2 音樂列表更改功能的實(shí)現(xiàn).6 3.2.3 服務(wù)器音樂下載功能的實(shí)現(xiàn).7 3.2.4 設(shè)置功能的實(shí)現(xiàn).9 3.2.5“關(guān)于”實(shí)現(xiàn).12 3.2.6 通知欄音樂播放控制功能的實(shí)現(xiàn).13 3.2.7 雙聲道和波形功能的實(shí)現(xiàn).14 第四章第四章 軟件系統(tǒng)測(cè)試軟件系統(tǒng)測(cè)試.17 4.1 測(cè)試目的.17 4.2 測(cè)試對(duì)象及測(cè)試范圍.17 第五章第五章 總結(jié)與展望總結(jié)與展望.18 致致 謝謝.19 參考文獻(xiàn)參考文獻(xiàn).2
10、0 附錄附錄 項(xiàng)目類表項(xiàng)目類表.21 第一張 緒論 1 第第 1 1 章章 緒論緒論 1.功能設(shè)計(jì)功能設(shè)計(jì) 1.1.1 主界面音樂播放管理主界面音樂播放管理 通過該模塊,用戶可以實(shí)現(xiàn)對(duì)音樂播放的管理,主要功能包括: a.播放/暫停:用戶可以通過此功能對(duì)音樂實(shí)施播放或暫停控制。 b. 上一首:用戶可以通過此功能切換音樂至上一首。 c.下一首:用戶可以通過此功能切換音樂至下一首。 d. 播放模式:用戶可以通過此功能調(diào)節(jié)播放模式,包括順序播放、循環(huán)播 放和隨機(jī)播放。 e.進(jìn)度條拖動(dòng):用戶可以通過此功能調(diào)節(jié)音樂的播放進(jìn)度。 1.1.2 通知欄音樂播放管理通知欄音樂播放管理 a.播放/暫停:用戶可以通過
11、此功能對(duì)音樂實(shí)施播放或暫??刂?。 b. 上一首:用戶可以通過此功能切換音樂至上一首。 c.下一首:用戶可以通過此功能切換音樂至下一首。 d. 關(guān)閉:用戶可以通過此功能直接關(guān)閉播放器。 e.跳轉(zhuǎn):用戶可以通過此功能從通知欄跳轉(zhuǎn)至主界面。 1.1.3 音樂列表管理音樂列表管理 a.默認(rèn)列表:用戶打開列表自動(dòng)搜索內(nèi)存里的音樂,并導(dǎo)入默認(rèn)列表。用 戶可通過此列表進(jìn)行選擇播放。 b. 喜歡列表:用戶通過在默認(rèn)列表中的選擇,將喜歡的音樂導(dǎo)入喜歡列表。 用戶可通過此列表進(jìn)行選擇播放。 c.下載列表:用戶可通過網(wǎng)絡(luò)下載喜歡的音樂至此列表,并進(jìn)行選擇播放。 1.1.4 設(shè)置管理設(shè)置管理 a.背景設(shè)置:用戶可通過
12、此功能更換界面背景。 b. 搞怪 3D 音效:用戶可通過此功能獲取搞怪音效。 c.語言設(shè)置:用戶可通過此功能來進(jìn)行中英文切換。 1.1.5 雙聲道管理雙聲道管理 a.用戶如果沒有插入耳機(jī),則出現(xiàn)波形圖。 b. 用戶如果插入耳機(jī),則進(jìn)行雙聲道管理。 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 2 2.本論文的內(nèi)容和結(jié)構(gòu)說明本論文的內(nèi)容和結(jié)構(gòu)說明 軟件設(shè)計(jì)采用 IAR C 語言軟件開發(fā)系統(tǒng),通過系統(tǒng)通訊主程序、路由子程 序、傳感器信號(hào)采集處理子程序、顯示報(bào)警子程序等模塊化軟件設(shè)計(jì),設(shè)計(jì)出 使用簡(jiǎn)便、運(yùn)行效率高、穩(wěn)定可靠的配套軟件系統(tǒng)。 本文結(jié)構(gòu)主要由緒論、音樂播放器的構(gòu)成與組建、系統(tǒng)模塊的介紹,流程 圖和關(guān)
13、鍵代碼實(shí)現(xiàn)。 第 1 章:緒論,介紹音樂播放器的功能設(shè)計(jì)。 第 2 章:系統(tǒng)設(shè)計(jì),系統(tǒng)總體分析與設(shè)計(jì),總體介紹項(xiàng)目的構(gòu)成。 第 3 章:系統(tǒng)實(shí)現(xiàn)的原理。 第 4 章:系統(tǒng)測(cè)試。 第 5 章:對(duì)項(xiàng)目的以后的展望和。 第二張 系統(tǒng)設(shè)計(jì) 3 系統(tǒng)頂層用例圖如圖 1: 用戶 主界面音樂播放管理 雙聲道管理 設(shè)置管理 音樂列表管理 通知欄音樂播放管理 播放 / 暫停 下一首 關(guān)閉 進(jìn)度條拖動(dòng) 喜歡列表 3D 音效 雙聲道 播放 / 暫停 語言設(shè)置 上一首 默認(rèn)列表 播放模式 下載列表 背景設(shè)置 上一首 下一首 波形圖 跳轉(zhuǎn) 圖 1 系統(tǒng)用例圖 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 4 第二章第二章 系統(tǒng)設(shè)計(jì)
14、系統(tǒng)設(shè)計(jì) 2.1 系統(tǒng)面向?qū)ο笤O(shè)計(jì)系統(tǒng)面向?qū)ο笤O(shè)計(jì) 根據(jù)系統(tǒng)的需求分析,各功能模塊所涉及的類如下: 音樂列表類: 功能:修改音樂類型信息,比如添加音樂數(shù)據(jù)、查詢所有未被刪除的音樂信 息、添加刪除喜歡音樂。 屬性:存儲(chǔ)音樂類型信息,比如默認(rèn)音樂類型有歌曲 ID、名稱、專輯名、 歌手名、路徑、播放時(shí)長(zhǎng)、大小、重命名歌曲名等。 音樂列表類圖如圖 2.1 +getters() +setters() -id : int -title : string -album : string -artist : string -Url : string -Dration : int -Size : int -st
15、atus : int MusicList 圖 2.1 音樂列表類圖 2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì) 系統(tǒng)采用 SQLite 關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),由系統(tǒng)對(duì)象關(guān)系分析可知, 系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)可由一張數(shù)據(jù)表構(gòu)成,其具體結(jié)構(gòu)如表 1 所示。 表 1 音樂類型信息表 表名account_type_info 列名數(shù)據(jù)類型非空描述主鍵外鍵 idintegerY歌曲 IDY titletext歌曲的名稱 albumtext歌曲的專輯名 artisttext歌曲的歌手名 urltext歌曲文件的路徑 durationtext歌曲的總播放時(shí)長(zhǎng) musicnametext重命名歌曲名 sizetext歌曲文件
16、的大小 statusinteger1 標(biāo)識(shí)不喜歡,2 標(biāo)識(shí)喜歡 第二張 系統(tǒng)設(shè)計(jì) 5 2.3 主界面設(shè)計(jì)主界面設(shè)計(jì) 由于采用移動(dòng)手持終端作為應(yīng)用程序載體,為提高人機(jī)交互效果,主界面 宜采用扁平化設(shè)計(jì)??梢愿雍?jiǎn)單直接的將信息和事物的工作方式展示出來, 減少認(rèn)知障礙的產(chǎn)生。主界面設(shè)計(jì)如圖 3.4 所示。 圖 2.3 主界面設(shè)計(jì) 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 6 第三章第三章 系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn) 3.1 數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)的實(shí)現(xiàn)數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)的實(shí)現(xiàn) 本存儲(chǔ)系統(tǒng)利用 Andorid 的 SQLite 關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)實(shí)現(xiàn)。其數(shù)據(jù)表 字段及數(shù)據(jù)表創(chuàng)建等核心代碼如下所示: 數(shù)據(jù)表字段代碼: priva
17、te SQLiteDatabase mMusicListdb = null; private final String LIST_DBNAME = music_list; private final String TBL_MUSIC = tbl_music; private final String TITLE = tilte; private final String ALBUM = album; private final String ARTIST = artist; private final String URL = url; private final String DURATIO
18、N = duration; private final String SIZE = size; private final String MUSICNAME = musicname; private final String STATUS = status; 3.2 系統(tǒng)功能實(shí)現(xiàn)系統(tǒng)功能實(shí)現(xiàn) 本音樂播放系統(tǒng)通過播放、音效、設(shè)置、關(guān)于、通知等其他系統(tǒng)共同實(shí)現(xiàn)。 主界面以下功能:播放、列表、設(shè)置、關(guān)于。 1.播放:音樂的播放控制; 2.列表:音樂列表顯示和更改; 3.設(shè)置:更改背景、語言設(shè)置和 3D 音效; 4.雙聲道和波形; 5.關(guān)于; 6.通知欄音樂播放管理。 3.2.1 音樂信息添加功能的實(shí)
19、現(xiàn)音樂信息添加功能的實(shí)現(xiàn) 該功能主要是音樂信息的添加,點(diǎn)擊主界面的列表按鈕,打開音樂默認(rèn)列表自 動(dòng)添音樂(如圖 3.1 所示)。彈出等待提示框(如圖 3.2 所示),音樂添加完成 后將自動(dòng)關(guān)閉并刷新列表。 圖 3.1 音樂信息添加 第三章 系統(tǒng)實(shí)現(xiàn) 7 圖 3.2 等待提示框 添加音樂數(shù)據(jù)訪問層(MusicListDao 類)核心代碼: public void initData(SdcardMusic sm) ContentValues cv = new ContentValues(); cv.put(TITLE, sm.getTilte(); cv.put(ALBUM, sm.getAlbu
20、m(); cv.put(ARTIST, sm.getArtist(); cv.put(URL, sm.getUrl(); cv.put(DURATION, sm.getDuration(); cv.put(SIZE, sm.getSize(); cv.put(MUSICNAME, sm.getMusicname(); cv.put(STATUS, 1); mMusicListdb.insert(TBL_MUSIC, novalue, cv); mMusicListdb.close(); 添加音樂信息事件核心代碼: if(new MusicListDao(view.getContext().fi
21、ndAllMusic().isEmpty() if(new MusicListDao(view.getContext().findAllMusic().isEmpty() showLoadDialog(false); new Thread() public void run() Vector als = new Vector(); als = CommonUtils.getMusicFromSdCard(view.getContext(); for(int i=0;i 30000) new MusicListDao(view.getContext().initData(als.elementA
22、t(i); hand.sendEmptyMessage(0); ; .start(); else Toast.makeText(view.getContext(), R.string.application_no_music, Toast.LENGTH_SHORT).show(); 3.2.2 音樂列表更改功能的實(shí)現(xiàn)音樂列表更改功能的實(shí)現(xiàn) 該功能主要是負(fù)責(zé)音樂列表的查詢和修改,點(diǎn)擊默認(rèn)列表界面的鉆石圖標(biāo),可 將該音樂添加至我喜歡的音樂列表(如圖 3.3 所示),選擇右側(cè)黃色標(biāo)簽可查看 不同列表(如圖 3.4 所示)。 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 8 圖 3.3 添加至喜歡的音樂列表 圖
23、3.4 查看不同的音樂列表 查詢音樂信息數(shù)據(jù)訪問層(MusicListDao 類)核心代碼 public Vector findAllMusic() Vector vsm = new Vector(); Cursor c = mMusicListdb.rawQuery(select * from +TBL_MUSIC + where + STATUS + ?, new String0); c.moveToFirst(); while(!c.isAfterLast() SdcardMusic sm = new SdcardMusic(); sm.setId(c.getInt(0); sm.set
24、Tilte(c.getString(1); sm.setAlbum(c.getString(2); sm.setArtist(c.getString(3); sm.setUrl(c.getString(4); sm.setDuration(c.getInt(5); sm.setSize(c.getInt(6); sm.setMusicname(c.getString(6); sm.setStatus(c.getInt(8); vsm.addElement(sm); c.moveToNext(); return vsm; 3.2.3 服務(wù)器音樂下載功能的實(shí)現(xiàn)服務(wù)器音樂下載功能的實(shí)現(xiàn) 點(diǎn)擊列表內(nèi)的
25、下載按鈕可從服務(wù)器下載該音樂至本地(如圖 3.5 所示)。等 第三章 系統(tǒng)實(shí)現(xiàn) 9 待下載完成后即可播放(如圖 3.6 所示)。 圖 3.5 下載音樂至本地 圖 3.6 下載完成 客戶端連接接收代碼 public static String IP = 192.168.191.2; public static int PORT = 5000; public static String music_title = Your Smile.mp3; public boolean connect() new Thread() public void run() try while (true) Sock
26、et socket = new Socket(IP , PORT); String local_file = Environment.getExternalStorageDirectory().getAbsolutePath() + /AdownloadMusic/; File f = new File(local_file); if (!f.exists() f.mkdirs(); local_file = f.getAbsolutePath() + / + music_title; File file = new File(local_file); InputStream ins = so
27、cket.getInputStream(); FileOutputStream fos = new FileOutputStream(file); BufferedInputStream bis = new BufferedInputStream(ins); BufferedOutputStream bos = new BufferedOutputStream(fos); byte buffer = new byte102400; int len = bis.read(buffer); while (len != -1) bos.write(buffer, 0, len); len = bis
28、.read(buffer); fos.flush(); fos.close(); 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 10 FileReader fr = new FileReader(file); String str = ; int val = ins.read(buffer); val = fr.read(); while (val != -1) str += (char) val; val = fr.read(); CommonData.downloading = 0; CommonData.handler_deletemusic.sendEmptyMessage(2); catch (
29、Exception e) CommonData.downloading = 0; CommonData.handler_deletemusic.sendEmptyMessage(3); ; .start(); return false; 服務(wù)端創(chuàng)建服務(wù)傳輸代碼 public static void main(String args) File file = new File(Your Smile.mp3); try ServerSocket socketServerSocket = new ServerSocket(5000,1,InetAddress.getByName(172.17.0.8
30、2); while(true) Socket socket = socketServerSocket.accept(); try OutputStream ops = socket.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(ops); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file); byte buffer = new byte102400; int len = bis.read(buffer
31、); while(len != -1) bos.write(buffer,0,len); len = bis.read(buffer); bos.flush(); bos.close(); ops.flush(); ops.close(); System.out.println(ok!); Thread.sleep(1000); catch (Exception e) e.printStackTrace(); catch (Exception e) e.printStackTrace(); 3.2.4 設(shè)置功能的實(shí)現(xiàn)設(shè)置功能的實(shí)現(xiàn) 點(diǎn)擊主界面的設(shè)置按鈕即可調(diào)出設(shè)置菜單(如圖 3.7);點(diǎn)擊背景
32、設(shè)置按鈕 彈出背景選擇界面長(zhǎng)按即可設(shè)置成功(如圖 3.8); 圖 3.7 設(shè)置菜單查看 第三章 系統(tǒng)實(shí)現(xiàn) 11 圖 3.8 背景設(shè)置成功 背景設(shè)置關(guān)鍵代碼 public class ImageAdapter extends BaseAdapter private int mGalleryItemBackground; private Context context; public ImageAdapter(Context context) this.context = context; TypedArray typedArray = context.obtainStyledAttributes
33、(R.styleable.Gallery); mGalleryItemBackground = typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0); typedArray.recycle(); Override public int getCount() return myImageIds.size(); Override public Object getItem(int position) return position; Override public long getItemId(
34、int position) return position; public View getView(int position, View convertView, ViewGroup parent) ImageView i = new ImageView(context); i.setImageResource(myImageIds.elementAt(position%myImageIds.size(); i.setId(myImageIds.elementAt(position%myImageIds.size(); i.setScaleType(ImageView.ScaleType.F
35、IT_XY); i.setLayoutParams(new Gallery.LayoutParams(800, 450); i.setBackgroundResource(mGalleryItemBackground); return i; 點(diǎn)擊語言設(shè)置按鈕可選擇語言(如圖 3.9);點(diǎn)擊搞怪 3D 音效可開啟 3D 音 模式(如圖 3.10)。 圖 3.9 語言設(shè)置 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 12 圖 3.10 3D 音模式 語言設(shè)置功能關(guān)鍵代碼 btn_lan_set.setOnClickListener(new OnClickListener() Override public
36、void onClick(View v) Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS); startActivity(intent); ); 3D 音效模式關(guān)鍵代碼 private Timer mtm = null; private TimerTask mttk = null; private void SetSimulationSound(boolean aa) try final Random rd = new Random(); mp.setVolume(0.5F,0.5F); if(aa) mtm = new T
37、imer(); mttk = new TimerTask() float v = 0.5f; public void run() if(mp.isPlaying() float a = rd.nextFloat(); if(a 0.5) v = upleftSound(v); else v = uprightSound(v); ; mtm.schedule(mttk, 0, 3000); else mtm.cancel(); mttk.cancel(); mp.setVolume(1.0F,1.0F); catch (Exception e) private float upleftSound
38、(float left) try float right = 1-left; for(int i=0; i150; i+) if(left 0.91) left+=0.01f; right = 1-left; mp.setVolume(left, right); Log.e(sss, left=+left); Thread.sleep(20); return left; catch (InterruptedException e) Log.e(sss, volume left change is error, e); 第三章 系統(tǒng)實(shí)現(xiàn) 13 return 0.5f; private float
39、 uprightSound(float left) try float right = 1-left; for(int i=0; i 0.09) left-=0.01f; right = 1-left; mp.setVolume(left, right); Log.e(sss, left=+left); Thread.sleep(20); return left; catch (InterruptedException e) Log.e(sss, volume right change is error, e); return 0.5f; 3.2.5“關(guān)于關(guān)于”實(shí)現(xiàn)實(shí)現(xiàn) 該功能主要是聲明“AC
40、G BOX”的版權(quán),點(diǎn)擊主界面的關(guān)于按鈕,打開關(guān)于窗 口(如圖 3.11 所示),顯示關(guān)于“ACG BOX”。 圖 3.11 關(guān)于“ACG BOX” Diolog 打開動(dòng)畫關(guān)鍵代碼 Override public void onActivityCreated(Bundle savedInstanceState) super.onActivityCreated(savedInstanceState); getDialog().getWindow().getAttributes().windowAnimations = R.style.dialogAbout; getDialog().setCan
41、celedOnTouchOutside(true); 打開,關(guān)閉調(diào)用的 XML 文件 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 14 使用的 Style 方法 anim/anim_showabout anim/anim_closeabout 3.2.6 通知欄音樂播放控制功能的實(shí)現(xiàn)通知欄音樂播放控制功能的實(shí)現(xiàn) 打開通知欄點(diǎn)擊即可跳轉(zhuǎn)到當(dāng)前軟件主界面,4 個(gè)按鈕分別對(duì)應(yīng)上一首、暫 停/播放、下一首和關(guān)閉的功能(如圖 3.12)。 圖 3.12 通知欄音樂播放控制 實(shí)現(xiàn)通知欄音樂播放控制關(guān)鍵代碼 private NotificationManager showCustomView() RemoteView
42、s remoteViews = new RemoteViews(getPackageName(),R.layout.new_music_notification); remoteViews.setTextViewText(R.id.title_title, CommonData.all_music.elementAt(PlayMusic.itemId).getTilte(); remoteViews.setTextViewText(R.id.txt_duration, MyTimeUtils.Ms2mmss(CommonData.all_music.elementAt(PlayMusic.it
43、emId).getDuration(); remoteViews.setTextViewText(R.id.txt_artist, CommonData.all_music.elementAt(PlayMusic.itemId).getArtist(); Intent reActivity=new Intent(this,MainActivity.class); PendingIntent pIntent=PendingIntent.getActivity(this, 0, reActivity, 0); remoteViews.setOnClickPendingIntent(R.id.ll_
44、parent, pIntent); Intent preintent = new Intent(); preintent.putExtra(action, last); preintent.setAction(org.wy.playerReceiver); PendingIntent prepi = PendingIntent.getBroadcast(this, 0, preintent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.last_music, prepi); if(Co
45、mmonData.playstatus.flag_play = CommonData.playstatus.PLAY) Intent pauaseOrStartIntent=new Intent(); 第三章 系統(tǒng)實(shí)現(xiàn) 15 pauaseOrStartIntent.putExtra(action, pause); pauaseOrStartIntent.setAction(org.wy.playerReceiver); PendingIntent pausepi = PendingIntent.getBroadcast(this, 1, pauaseOrStartIntent, Pending
46、Intent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.paly_pause_music, pausepi); remoteViews.setImageViewResource(R.id.paly_pause_music, R.drawable.btn_tostart); else Intent pauaseOrStartIntent=new Intent(); pauaseOrStartIntent.putExtra(action, playing); pauaseOrStartIntent.setActio
47、n(org.wy.playerReceiver); PendingIntent pausepi = PendingIntent.getBroadcast(this, 2, pauaseOrStartIntent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.paly_pause_music, pausepi); remoteViews.setImageViewResource(R.id.paly_pause_music, R.drawable.btn_topause); Intent
48、nextIntent=new Intent(); nextIntent.putExtra(action, next); nextIntent.setAction(org.wy.playerReceiver); PendingIntent nextpi=PendingIntent.getBroadcast(this, 3, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.next_music, nextpi); Intent closeIntent=new Inten
49、t(); closeIntent.putExtra(action, close_noti); closeIntent.setAction(org.wy.playerReceiver); PendingIntent closepi=PendingIntent.getBroadcast(this, 4, closeIntent, PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setOnClickPendingIntent(R.id.close, closepi); Builder builder = new Builder(MainService.
50、this); builder.setContent(remoteViews).setSmallIcon(R.drawable.icon).setOngoing(true) .setTicker(music is playing); Notification notification=builder.build(); NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(1, notification); return mana
51、ger; 3.2.7 雙聲道和波形功能的實(shí)現(xiàn)雙聲道和波形功能的實(shí)現(xiàn) 點(diǎn)擊左上角即可調(diào)出波形界面(如圖 3.13);插上耳機(jī)后點(diǎn)擊左上角彈出雙 聲道界面(如圖 3.14)。 圖 3.13 通波形界面 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 16 圖 3.14 雙聲道界面 波形顯示關(guān)鍵代碼 Override protected void onDraw(Canvas canvas) super.onDraw(canvas); if (mBytes = null) return; if (mPoints = null | mPoints.length mBytes.length * 4) mPoints =
52、 new floatmBytes.length * 4; mRect.set(0, 0, getWidth(), getHeight(); for (int i = 0; i 0) if(mp.equals(mp_left) if(!source_left.equals(vsm.get(left_play).getUrl() try mp.reset(); mp.setDataSource(vsm.get(left_play).getUrl(); if (!mp.isPlaying() mp.prepare(); 第三章 系統(tǒng)實(shí)現(xiàn) 17 catch (Exception e) Log.e(ss
53、s, onStart mp_left - is error, e); source_left = vsm.get(left_play).getUrl(); else if(!source_right.equals(vsm.get(right_play).getUrl() try mp.reset(); mp.setDataSource(vsm.get(right_play).getUrl(); if (!mp.isPlaying() mp.prepare(); catch (Exception e) Log.e(sss, onStart mp_right - is error, e); sou
54、rce_right = vsm.get(right_play).getUrl(); else Toast.makeText(this, R.string.no_music, Toast.LENGTH_LONG).show(); 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 18 第四章第四章 軟件系統(tǒng)測(cè)試軟件系統(tǒng)測(cè)試 4.1 測(cè)試目的測(cè)試目的 對(duì)基于 Android 應(yīng)用開發(fā)系統(tǒng)的學(xué)習(xí),對(duì)系統(tǒng)的各項(xiàng)功能進(jìn)行檢測(cè),查看是 否完成了設(shè)計(jì)文檔中應(yīng)有的模塊并且檢查模塊的運(yùn)行情況,檢查出軟件中還存 在的問題予以修正,使系統(tǒng)最終能予以交付。 4.2 測(cè)試對(duì)象及測(cè)試范圍測(cè)試對(duì)象及測(cè)試范圍 表 1 測(cè)試范圍 測(cè)試項(xiàng)測(cè)試項(xiàng)
55、測(cè)試內(nèi)容測(cè)試內(nèi)容 系統(tǒng)初始化本地?cái)?shù)據(jù)庫(kù)及服務(wù)是否能正常初始化 主界面播放功能主界面是否能正常顯示及控制音樂的播放 通知欄播放功能通知欄界面是否能正常顯示及控制音樂的播放 列表添加各列表是否能正常顯示及添加至列表中 下載功能是否能連接服務(wù)端及下載相關(guān)音樂 背景設(shè)置是否能切換背景 語言設(shè)置各功能之間切換及數(shù)據(jù)傳遞是否正常 波形圖是否隨音樂正常顯示波形 雙聲道是否正常顯示界面及雙聲道音樂效果 表 2 測(cè)試對(duì)象 測(cè)試對(duì)象:ACG BOX 實(shí)施人員:xx 報(bào)告撰寫人員:xx 執(zhí)行用例數(shù):17 問題發(fā)現(xiàn)總數(shù):5 解決問題總數(shù):5 表 3 測(cè)試環(huán)境 客戶端軟件:Eclipse、Android SDK、ADT
56、 客戶端設(shè)備:華為 p6 網(wǎng)絡(luò)環(huán)境:局域網(wǎng)(wifi) 表 4 測(cè)試列表 測(cè)試方式:灰盒測(cè)試 測(cè)試內(nèi)容 1:默認(rèn)列表的添加 測(cè)試用例 1:打開列表,自動(dòng)搜索,看是否添加成功 測(cè)試內(nèi)容 2:喜歡列表的添加 測(cè)試用例 2:在默認(rèn)列表內(nèi)標(biāo)記喜歡的音樂,看是否添加至喜歡列表 測(cè)試內(nèi)容 3:列表動(dòng)畫的顯示 測(cè)試用例 3:在列表內(nèi)選擇音樂播放,看被選音樂右上方是否有動(dòng)畫 第五章 結(jié)余與展望 19 第五章第五章 總結(jié)與展望總結(jié)與展望 本次項(xiàng)目以 Android 為平臺(tái),實(shí)現(xiàn)了音樂播放器的功能。在這次畢業(yè)設(shè)計(jì) 中我學(xué)會(huì)了有目的的去學(xué)習(xí)一些將要用到的東西,仔細(xì)地考慮工作流程的規(guī)律 和步驟,充分利用手中的開發(fā)工具,利用其所具備的功能,盡量使自己的開發(fā) 在代碼上實(shí)現(xiàn)少而精確、讓用戶能夠盡量簡(jiǎn)單地進(jìn)行操作。但是在檢測(cè)過程中, 還是出現(xiàn)了很多的不足之處,這些都是要在今后的工作中需要努力改進(jìn)和完善的。 在這次程序開發(fā)設(shè)計(jì)中,我也難免會(huì)遇到不少困難,這主要是由于我對(duì)所 用的開發(fā)環(huán)境并不是很熟悉,開發(fā)軟件的經(jīng)驗(yàn)不足。這次開發(fā)對(duì)我來說可以算 是一個(gè)全新的嘗試,整個(gè)開發(fā)過程并不是很順利,卻使我從中充分體會(huì)到學(xué)習(xí) 的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 珠海廣東珠海市斗門區(qū)人民法院特邀調(diào)解員招聘10人筆試歷年參考題庫(kù)附帶答案詳解
- 自貢四川自貢市第一人民醫(yī)院招聘針灸推拿技師筆試歷年參考題庫(kù)附帶答案詳解
- 紹興浙江紹興市自然資源和規(guī)劃局下屬事業(yè)單位編外用工招聘筆試歷年參考題庫(kù)附帶答案詳解
- 秦皇島2025年河北秦皇島市第一醫(yī)院招聘人事代理人員21人筆試歷年參考題庫(kù)附帶答案詳解
- 漯河2024年河南漯河市財(cái)政局高層次人才引進(jìn)1人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年苯甲酸芐酯項(xiàng)目可行性研究報(bào)告
- 2025年電動(dòng)車三合一喇叭項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)婦陰潔行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年發(fā)動(dòng)機(jī)后懸置橫梁項(xiàng)目可行性研究報(bào)告
- 2025年內(nèi)參抗體項(xiàng)目可行性研究報(bào)告
- 第7章-無人機(jī)法律法規(guī)
- 藥劑科基本藥物處方用藥狀況點(diǎn)評(píng)工作表
- 拆遷征收代理服務(wù)投標(biāo)方案
- 完形療法概述
- 說課的技巧和方法專題講座
- SL631-637-2012-水利水電工程單元工程施工質(zhì)量驗(yàn)收評(píng)定標(biāo)準(zhǔn)
- 監(jiān)理質(zhì)量管理講義監(jiān)理工作的基本知識(shí)
- 煙花爆竹考試真題模擬匯編(共758題)
- 四年級(jí)數(shù)學(xué)上冊(cè)口算天天練4
- 水利水電工程監(jiān)理平行檢測(cè)表部分
- 分部分項(xiàng)工程質(zhì)量檢驗(yàn)計(jì)劃表
評(píng)論
0/150
提交評(píng)論