版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件技術(shù)系列課程Android大作業(yè)( 2014 / 2015 學(xué)年 第 一 學(xué)期)題目: 音樂播放器的分析與設(shè)計(jì) 專 業(yè) 軟件工程(服務(wù)外包) 學(xué) 生 姓 名 單珺瑜 班 級(jí) 學(xué) 號(hào) B12041305 指 導(dǎo) 教 師 張怡婷 易磊 許鵬 指 導(dǎo) 單 位 南京郵電大學(xué)計(jì)算機(jī)學(xué)院 誠邁科技 日 期 2014.12.30 一、課題內(nèi)容和要求音樂播放器,作為移動(dòng)設(shè)備基礎(chǔ)配備軟件之一,主要功能包括從SDCard中讀取音樂、顯示播放音樂列表、播放音樂、顯示音樂歌詞、實(shí)現(xiàn)上一首、下一首、暫停、選擇播放形式等功能。本論文的音樂播放器采用了Android開源系統(tǒng)技術(shù),利用Java語言和Eclipse編輯工具
2、對(duì)播放器進(jìn)行編寫。同時(shí)給出了詳細(xì)的系統(tǒng)設(shè)計(jì)過程、主要界面設(shè)計(jì)及主要功能運(yùn)行流程圖二、需求分析本課題基于Android手機(jī)平臺(tái)上開發(fā)的音樂播放器主要設(shè)計(jì)了四個(gè)界面,包括:歡迎界面,主界面,播放界面和關(guān)于界面。每個(gè)界面的主要功能為:歡迎界面為顯示App的logo;主界面利用ListView顯示讀取SDCard后的App中的全部歌曲列表,通過滑動(dòng)屏幕并選擇可以實(shí)現(xiàn)與我的收藏界面、關(guān)于界面的切換,通過點(diǎn)擊具體歌曲可以實(shí)現(xiàn)與播放界面的切換;我的收藏界面利用ListView顯示用戶收藏的歌曲列表,通過滑動(dòng)屏幕并選擇可以實(shí)現(xiàn)與主界面、關(guān)于界面的切換,通過點(diǎn)擊具體歌曲可以實(shí)現(xiàn)與播放界面的切換。播放界面用以顯示
3、正在播放的歌曲的歌曲名、歌手、歌詞等主要信息,并設(shè)置按鈕實(shí)現(xiàn)前一曲、后一曲、播放暫停等功能,通過播放形式按鈕可以選擇單曲循環(huán)、隨機(jī)播放或者是順序播放,除此之外,界面下方利用Android自帶seekbar設(shè)置的進(jìn)度條可以根據(jù)用戶需要調(diào)節(jié)播放進(jìn)度;關(guān)于界面用以顯示App的主要功能等信息。三、軟件設(shè)計(jì) (一)、系統(tǒng)主要功能模塊包括: 1、歡迎界面:初始化Intent以實(shí)現(xiàn)歡迎界面開始1.5秒之后進(jìn)入歌單列表界面。 2、歌單列表: a、歌曲:利用ListView類顯示歌曲列表,點(diǎn)擊歌曲名稱即選定歌曲啟動(dòng)音樂播放器,播放選中的歌曲 b、菜單:點(diǎn)擊關(guān)于即可跳轉(zhuǎn)至關(guān)于界面,點(diǎn)擊我的收藏即可跳轉(zhuǎn)至我的收藏界
4、面 3、我的收藏界面: a、歌曲:利用ListView類顯示歌曲列表,點(diǎn)擊歌曲名稱即選定歌曲啟動(dòng)音樂播放器,播放選中的歌曲 b、菜單:點(diǎn)擊關(guān)于即可跳轉(zhuǎn)至關(guān)于界面,點(diǎn)擊歌曲列表即可跳轉(zhuǎn)至主界面 4、播放界面: a、播放:選擇音樂后,點(diǎn)擊播放按鈕啟動(dòng)音樂播放器,即當(dāng) MSG=MEDIA_PLAY時(shí),播放所選中的歌曲,執(zhí)行playMusic; b、暫停:點(diǎn)擊暫停鍵,即當(dāng)MSG=MEDIA_PAUSE時(shí),停止正在播放的歌曲,執(zhí)行pauseMusic; c、上一曲:點(diǎn)擊上一曲,即當(dāng)MSG=MEDIA_PREVIOUS時(shí),停止正在播放的歌曲,播放播放列表中上一 首歌曲; d、下一曲:點(diǎn)擊下一曲,即當(dāng)MSG
5、=MEDIA_NEXT時(shí),停止正在播放的歌曲,播放播放列表中下一首歌曲; e、播放模式:點(diǎn)擊播放模式,利用MusicCompleteListener類可以依次改變播放模式至隨機(jī)播放、列表循環(huán)或者單曲循環(huán),進(jìn)而執(zhí)行randomRepeat、allRepeat或者singleRepeat; (1)隨機(jī)播放:利用系統(tǒng)隨機(jī)生成一個(gè)01之間的隨機(jī)數(shù)乘當(dāng)前position,再用int取整,即為下一首歌曲的position (2)列表循環(huán):利用position變量,當(dāng)position+!=NULL時(shí),position自增,否則position=0 (3)單曲循環(huán):position不發(fā)生任何變化 f、進(jìn)度條:
6、利用Android自帶的seekbar設(shè)置進(jìn)度條,用戶可以根據(jù)進(jìn)度條來自主控制歌曲播放進(jìn)度,隨意跳轉(zhuǎn); g、歌詞顯示:利用LyricView類完成歌詞隨著時(shí)間滾動(dòng)顯示的功能。5、關(guān)于界面:利用LinearLayout的線性布局及若干個(gè)TextView以顯示App主要功能等信息(二)、App設(shè)計(jì)簡(jiǎn)要流程圖如下:Smart Music歡迎界面 我的收藏歌單列表播放控制歌詞顯示歌曲播放歌曲暫停播放上一首播放下一首播放模式單曲循環(huán)列表循環(huán) 隨機(jī)播放4、 軟件實(shí)現(xiàn)(1) 、開發(fā)環(huán)境的搭建與配置1. 下載JDKJDK即JavaDevelopmentKit(Java開發(fā)工具包),包括JAVA運(yùn)行環(huán)境,基礎(chǔ)類
7、庫和JAVA工具,是JAVA運(yùn)行的基礎(chǔ)。2.下載Eclipse Eclipse是開發(fā)JAVA程序的軟件工具。3.下載AndroidSDK SDK即SoftwareDevelopmentKit(軟件開發(fā)工具包)。AndroidSDK指的是Android專屬的軟件開發(fā)工具包。4.下載ADT ADT,即AndroidDevelopmentTools(Android開發(fā)工具),是在eclipse中開發(fā)android應(yīng)用程序的插件。5.安裝JDK 運(yùn)行下載好的jdk-7u25-windows-x64.exe,按提示一步步走。6.測(cè)試是否安裝成功 安裝完成之后,可以用下述方法檢查JDK是否安裝成功:打開c
8、md窗口,輸入java-version。7.添加環(huán)境變量 操作步驟: 計(jì)算機(jī)-屬性-高級(jí)系統(tǒng)設(shè)置-環(huán)境變量-系統(tǒng)變量-Path-編輯添加JDK的bin目錄的路徑。8. 安裝AndroidSDK 以前SDK直接下載完,在Eclipse里配置路徑就可以了,現(xiàn)在貌似變成了一個(gè)管理器(SDKManager),用來管理下載更新,雙擊之前下載的installer_r22.0.1-windows.exe。9.安裝SDKManager10. 安裝Platform 僅僅SDKTools是不夠的,我們至少還需要一個(gè)Android平臺(tái)和最新的SDK平臺(tái)工具。 啟動(dòng)AndroidSDKManager,如下圖,勾選An
9、droidSDKPlatform-tools和AndroidSDKBuild-tools,Android4.2.2文件夾,Extras下的AndroidSupportLibrary。11添加環(huán)境變量 操作步驟: 計(jì)算機(jī)-屬性-高級(jí)系統(tǒng)設(shè)置-環(huán)境變量-系統(tǒng)變量-新建變量名:ANDROID_SDK_HOME添加SDK目錄的路徑。12.安裝Eclipse,選擇工作空間。13.配置ADT 點(diǎn)擊Help-InstallnewSoftware,然后Add-Archive-找到我們下載好的ADT-22.0.1.zip,同時(shí)給個(gè)名稱,如ADTPlugin14.配置SDK(二)、負(fù)責(zé)的主要功能和代碼1、歡迎界面
10、 歡迎界面為顯示App的logo,點(diǎn)開App圖標(biāo)后出現(xiàn),1.5秒后自動(dòng)轉(zhuǎn)入列表界面public class WelcomeActivity extends Activity /定義WelcomeActivity類Overrideprotected void onCreate(Bundle savedInstanceState) /Activity生命周期super.onCreate(savedInstanceState);setContentView(R.layout.activity_welcome);new Handler().postDelayed(new Runnable() Over
11、ridepublic void run() Intent intent = new Intent(WelcomeActivity.this,MusicListActivity.class);/初始化startActivity(intent);WelcomeActivity.this.finish();,1500);/歡迎界面開始后1.5秒后自動(dòng)進(jìn)入列表界面2、 關(guān)于界面關(guān)于界面用于顯示APP的功能、開發(fā)者、版本號(hào)等主要信息,主要代碼如下:/設(shè)置文本高度/設(shè)置文本距離頂部距離/設(shè)置文本距離底部距離/設(shè)置文本大小/設(shè)置文本距離頂部距離/設(shè)置文本顏色3、 MusicService功能MusicSer
12、vice用于實(shí)現(xiàn)音樂的后臺(tái)播放功能public class MusicService/定義一個(gè)MusicService類 extends Service private MediaPlayer mediaPlayer;private int position;private List musicInfoList;private MusicInfo musicInfo;private int repeatState;private SharedPreferences sharedPreferences;Overridepublic void onCreate()/Service的生命周期 sup
13、er.onCreate();mediaPlayer = new MediaPlayer();/初始化mediaPlayer.setOnCompletionListener(new MusicPlayCompleteListener();sharedPreferences = getSharedPreferences(AppConstant.APP_DATE,MODE_PRIVATE);/MusicInfo musicInfo = musicInfoList.get(position);/playMusic(musicInfo);/Toast.makeText(this,service star
14、t,Toast.LENGTH_SHORT).show();Overridepublic IBinder onBind(Intent intent) return null;Overridepublic int onStartCommand(Intent intent, int flags, int startId)/Service生命周期 repeatState = sharedPreferences.getInt(repeatState,AppConstant.allRepeat);/定義歌曲列表position = intent.getIntExtra(position,0);/定義位置變
15、量SharedPreferences.Editor editor= sharedPreferences.edit();editor.putInt(lastPosition,position);mit();Log.i(repeatState-,repeatState+);musicInfoList = (List)intent.getCharSequenceArrayListExtra(musicInfoList);musicInfo = musicInfoList.get(position);if (musicInfo != null)int MSG = intent.getIntExtra(
16、MSG,0);Log.i(MSG-,MSG+);switch (MSG)case AppConstant.MEDIA_PLAY:playMusic(musicInfo);/播放音樂break;case AppConstant.MEDIA_PAUSE:pauseMusic();/停止音樂break;case AppConstant.MEDIA_NEXT:playMusic(musicInfo);pauseMusic();/播放下一首音樂break;case AppConstant.MEDIA_SEEKTO:int progress = intent.getIntExtra(progress,0)
17、;mediaPlayer.seekTo(progress);continueMusic();/根據(jù)用戶要求在進(jìn)度條中尋找用戶要求進(jìn)度,再進(jìn)行播放break;case AppConstant.MEDIA_CONTINUE:continueMusic();/繼續(xù)播放音樂break;/playMusic(musicInfo);Log.i(posituon-,position+);Log.i(musicInfoList-,musicInfo.toString();return START_NOT_STICKY;Overridepublic void onDestroy()/Service的生命周期 s
18、uper.onDestroy();mediaPlayer.release();public void playMusic(MusicInfo musicInfo) mediaPlayer.reset();try mediaPlayer.setDataSource(musicInfo.getMusicPath();mediaPlayer.prepare();mediaPlayer.start(); catch (Exception e) e.printStackTrace();public void pauseMusic()mediaPlayer.pause();/從暫停位置停止播放音樂publ
19、ic void stopMusic()mediaPlayer.stop();/從暫停的音樂停止播放音樂public void continueMusic()mediaPlayer.start();public class MusicPlayCompleteListener implements MediaPlayer.OnCompletionListenerOverridepublic void onCompletion(MediaPlayer mp) switch (repeatState) case AppConstant.allRepeat:/實(shí)現(xiàn)列表循環(huán)播放if (position =
20、 musicInfoList.size() - 1) position = 0; else position += 1;break;case AppConstant.randomRepeat:/實(shí)現(xiàn)隨機(jī)播放position = (int)(musicInfoList.size()-1)*Math.random();break;case AppConstant.singleRepeat:/實(shí)現(xiàn)單曲循環(huán)播放break;musicInfo = musicInfoList.get(position);playMusic(musicInfo);Intent sendIntent = new Intent
21、(AppConstant.UPDATE_VIEW);/發(fā)送廣播sendIntent.putExtra(position,position);SharedPreferences.Editor editor= sharedPreferences.edit();editor.putInt(lastPosition,position);mit();sendBroadcast(sendIntent);/Log.i(broadcast-,發(fā)送成功);五、軟件測(cè)試將Android手機(jī)用USB與電腦相連,打開Eclipse在項(xiàng)目上右鍵 - 運(yùn)行方式 - android application 即可以直接運(yùn)行進(jìn)
22、行測(cè)試。1、 進(jìn)入界面的測(cè)試: 點(diǎn)擊App后直接跳轉(zhuǎn)至進(jìn)入界面,1.5秒后自動(dòng)跳轉(zhuǎn)至歌單列表界面2、 歌單界面的測(cè)試 a、歌單界面用以顯示歌曲列表及其歌曲作者,界面下方顯示上次播放的歌曲信息。b、屏幕左上方為菜單,通過滑動(dòng)屏幕即可展開菜單列表,可以實(shí)現(xiàn)與關(guān)于界面的轉(zhuǎn)換3、 我的收藏界面 我的收藏界面用于顯示用戶收藏的歌曲列表4、 播放界面的測(cè)試界面左上角是返回鍵,點(diǎn)擊可以跳轉(zhuǎn)至歌單列表界面;界面上方用以顯示歌曲的名稱,作者姓名;界面中間部分用以顯示歌曲的歌詞,并隨著歌曲進(jìn)度而滑動(dòng),正在演唱的歌詞變紅;歌詞下方是進(jìn)度條,兩側(cè)顯示歌曲已經(jīng)播放時(shí)間和歌曲總長,用戶可以隨意拉動(dòng)進(jìn)度條以調(diào)整歌曲進(jìn)度,當(dāng)進(jìn)度條到達(dá)最后時(shí),自動(dòng)跳轉(zhuǎn)至下一首;界面最下方是功能鍵,依次為:上一首、暫停(播放)、下一首和播放形式,點(diǎn)擊上一首按鈕即可跳轉(zhuǎn)至上一首歌曲界面,點(diǎn)擊暫停按鈕即可歌曲暫停且暫停按鈕變成播放按鈕,點(diǎn)擊下一首按鈕即可跳轉(zhuǎn)至下一首歌曲界面,點(diǎn)擊播放形式按鈕可依次改變至隨機(jī)播放、列表循環(huán)和單曲循環(huán),按鈕也會(huì)依次改變。5、 關(guān)于界面的測(cè)試關(guān)于界面用于顯示APP的功能、開發(fā)者、版本號(hào)等主要信息6、 軟件總結(jié)本次實(shí)驗(yàn)旨在利用JAVA編程,實(shí)現(xiàn)音樂播放器的基本功能。這次的軟件
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60086:2025 SER EN-FR Primary batteries - ALL PARTS
- 新疆維吾爾自治區(qū)喀什地區(qū)巴楚縣2024-2025學(xué)年高一上學(xué)期1月期末測(cè)試化學(xué)試卷(含答案)
- 江蘇省揚(yáng)州市高郵市2024-2025學(xué)年九年級(jí)上學(xué)期1月期末考試歷史試卷(含答案)
- 河北省張家口市橋西區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期1月期末生物試卷(含答案)
- 2024版企業(yè)成本控制與管理合同3篇
- 2024軟件開發(fā)項(xiàng)目委托與合作合同
- 2024設(shè)備修理及遠(yuǎn)程監(jiān)控服務(wù)合同模板3篇
- 2025年度國際藝術(shù)品展覽與運(yùn)輸勞務(wù)派遣服務(wù)協(xié)議3篇
- 2024苗圃土地承包合同范本
- 2025年度二零二五場(chǎng)監(jiān)管局環(huán)境監(jiān)測(cè)技術(shù)服務(wù)合同3篇
- 抗震支吊架-檢驗(yàn)批質(zhì)量驗(yàn)收記錄
- 【APP違規(guī)收集個(gè)人信息的法律問題分析9800字(論文)】
- 商品房預(yù)售合同簽約證明和預(yù)告登記申請(qǐng)書
- 質(zhì)量管理體系成熟度評(píng)估表
- 國際疾病分類腫瘤學(xué)專輯第3版應(yīng)用課件
- 單體調(diào)試及試運(yùn)方案
- 2023-2024學(xué)年浙江省杭州市城區(qū)數(shù)學(xué)四年級(jí)第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含答案
- 五星級(jí)酒店市場(chǎng)調(diào)研報(bào)告
- 車輛剮蹭私下解決協(xié)議書(3篇)
- 網(wǎng)球技術(shù)與戰(zhàn)術(shù)-華東師范大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 2022-2023學(xué)年衡水市深州市小升初數(shù)學(xué)高頻考點(diǎn)檢測(cè)卷含答案
評(píng)論
0/150
提交評(píng)論