




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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é)期)題目: 音樂(lè)播放器的分析與設(shè)計(jì) 專 業(yè) 軟件工程(服務(wù)外包) 學(xué) 生 姓 名 單珺瑜 班 級(jí) 學(xué) 號(hào) B12041305 指 導(dǎo) 教 師 張怡婷 易磊 許鵬 指 導(dǎo) 單 位 南京郵電大學(xué)計(jì)算機(jī)學(xué)院 誠(chéng)邁科技 日 期 2014.12.30 一、課題內(nèi)容和要求音樂(lè)播放器,作為移動(dòng)設(shè)備基礎(chǔ)配備軟件之一,主要功能包括從SDCard中讀取音樂(lè)、顯示播放音樂(lè)列表、播放音樂(lè)、顯示音樂(lè)歌詞、實(shí)現(xiàn)上一首、下一首、暫停、選擇播放形式等功能。本論文的音樂(lè)播放器采用了Android開(kāi)源系統(tǒng)技術(shù),利用Java語(yǔ)言和Eclipse編輯工具
2、對(duì)播放器進(jìn)行編寫。同時(shí)給出了詳細(xì)的系統(tǒng)設(shè)計(jì)過(guò)程、主要界面設(shè)計(jì)及主要功能運(yùn)行流程圖二、需求分析本課題基于Android手機(jī)平臺(tái)上開(kāi)發(fā)的音樂(lè)播放器主要設(shè)計(jì)了四個(gè)界面,包括:歡迎界面,主界面,播放界面和關(guān)于界面。每個(gè)界面的主要功能為:歡迎界面為顯示App的logo;主界面利用ListView顯示讀取SDCard后的App中的全部歌曲列表,通過(guò)滑動(dòng)屏幕并選擇可以實(shí)現(xiàn)與我的收藏界面、關(guān)于界面的切換,通過(guò)點(diǎn)擊具體歌曲可以實(shí)現(xiàn)與播放界面的切換;我的收藏界面利用ListView顯示用戶收藏的歌曲列表,通過(guò)滑動(dòng)屏幕并選擇可以實(shí)現(xiàn)與主界面、關(guān)于界面的切換,通過(guò)點(diǎn)擊具體歌曲可以實(shí)現(xiàn)與播放界面的切換。播放界面用以顯示
3、正在播放的歌曲的歌曲名、歌手、歌詞等主要信息,并設(shè)置按鈕實(shí)現(xiàn)前一曲、后一曲、播放暫停等功能,通過(guò)播放形式按鈕可以選擇單曲循環(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)歡迎界面開(kāi)始1.5秒之后進(jìn)入歌單列表界面。 2、歌單列表: a、歌曲:利用ListView類顯示歌曲列表,點(diǎn)擊歌曲名稱即選定歌曲啟動(dòng)音樂(lè)播放器,播放選中的歌曲 b、菜單:點(diǎn)擊關(guān)于即可跳轉(zhuǎn)至關(guān)于界面,點(diǎn)擊我的收藏即可跳轉(zhuǎn)至我的收藏界
4、面 3、我的收藏界面: a、歌曲:利用ListView類顯示歌曲列表,點(diǎn)擊歌曲名稱即選定歌曲啟動(dòng)音樂(lè)播放器,播放選中的歌曲 b、菜單:點(diǎn)擊關(guān)于即可跳轉(zhuǎn)至關(guān)于界面,點(diǎn)擊歌曲列表即可跳轉(zhuǎn)至主界面 4、播放界面: a、播放:選擇音樂(lè)后,點(diǎn)擊播放按鈕啟動(dòng)音樂(lè)播放器,即當(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)度條來(lái)自主控制歌曲播放進(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) 、開(kāi)發(fā)環(huán)境的搭建與配置1. 下載JDKJDK即JavaDevelopmentKit(Java開(kāi)發(fā)工具包),包括JAVA運(yùn)行環(huán)境,基礎(chǔ)類
7、庫(kù)和JAVA工具,是JAVA運(yùn)行的基礎(chǔ)。2.下載Eclipse Eclipse是開(kāi)發(fā)JAVA程序的軟件工具。3.下載AndroidSDK SDK即SoftwareDevelopmentKit(軟件開(kāi)發(fā)工具包)。AndroidSDK指的是Android專屬的軟件開(kāi)發(fā)工具包。4.下載ADT ADT,即AndroidDevelopmentTools(Android開(kāi)發(fā)工具),是在eclipse中開(kāi)發(fā)android應(yīng)用程序的插件。5.安裝JDK 運(yùn)行下載好的jdk-7u25-windows-x64.exe,按提示一步步走。6.測(cè)試是否安裝成功 安裝完成之后,可以用下述方法檢查JDK是否安裝成功:打開(kāi)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),用來(lái)管理下載更新,雙擊之前下載的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)開(kāi)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);/歡迎界面開(kāi)始后1.5秒后自動(dòng)進(jìn)入列表界面2、 關(guān)于界面關(guān)于界面用于顯示APP的功能、開(kāi)發(fā)者、版本號(hào)等主要信息,主要代碼如下:/設(shè)置文本高度/設(shè)置文本距離頂部距離/設(shè)置文本距離底部距離/設(shè)置文本大小/設(shè)置文本距離頂部距離/設(shè)置文本顏色3、 MusicService功能MusicSer
12、vice用于實(shí)現(xiàn)音樂(lè)的后臺(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);/播放音樂(lè)break;case AppConstant.MEDIA_PAUSE:pauseMusic();/停止音樂(lè)break;case AppConstant.MEDIA_NEXT:playMusic(musicInfo);pauseMusic();/播放下一首音樂(lè)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ù)播放音樂(lè)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();/從暫停位置停止播放音樂(lè)publ
19、ic void stopMusic()mediaPlayer.stop();/從暫停的音樂(lè)停止播放音樂(lè)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與電腦相連,打開(kāi)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、屏幕左上方為菜單,通過(guò)滑動(dòng)屏幕即可展開(kāi)菜單列表,可以實(shí)現(xiàn)與關(guān)于界面的轉(zhuǎn)換3、 我的收藏界面 我的收藏界面用于顯示用戶收藏的歌曲列表4、 播放界面的測(cè)試界面左上角是返回鍵,點(diǎn)擊可以跳轉(zhuǎn)至歌單列表界面;界面上方用以顯示歌曲的名稱,作者姓名;界面中間部分用以顯示歌曲的歌詞,并隨著歌曲進(jìn)度而滑動(dòng),正在演唱的歌詞變紅;歌詞下方是進(jìn)度條,兩側(cè)顯示歌曲已經(jīng)播放時(shí)間和歌曲總長(zhǎng),用戶可以隨意拉動(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的功能、開(kāi)發(fā)者、版本號(hào)等主要信息6、 軟件總結(jié)本次實(shí)驗(yàn)旨在利用JAVA編程,實(shí)現(xiàn)音樂(lè)播放器的基本功能。這次的軟件
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出納實(shí)務(wù)網(wǎng)課試題及答案
- 初級(jí)財(cái)務(wù)考試題庫(kù)及答案
- 動(dòng)態(tài)廣告設(shè)計(jì)的創(chuàng)作試題及答案
- 全面掌握國(guó)際商業(yè)美術(shù)設(shè)計(jì)師考試試題及答案原則
- 餐飲hr面試題目及答案
- 2024年紡織品檢驗(yàn)員考試挑戰(zhàn)試題及答案
- 2024年助理廣告師考試細(xì)節(jié)注意試題及答案
- 2024廣告設(shè)計(jì)師考試常見(jiàn)誤區(qū)分析試題及答案
- 安全監(jiān)理考核試題及答案
- 商業(yè)美術(shù)設(shè)計(jì)師創(chuàng)意資源利用試題及答案
- 素養(yǎng)為本的教學(xué)評(píng)一體化教學(xué)設(shè)計(jì)核心理念
- 譯林版三年級(jí)上冊(cè)英語(yǔ)書單詞表
- 康復(fù)科并發(fā)癥二次殘疾
- (新版)拖拉機(jī)駕駛證科目一知識(shí)考試題庫(kù)500題(含答案)
- 2025年中考物理一輪復(fù)習(xí):物理學(xué)與社會(huì)發(fā)展 專項(xiàng)練習(xí)
- DL∕T 526-2013 備用電源自動(dòng)投入裝置技術(shù)條件
- 2024年北京大興區(qū)九年級(jí)初三一模英語(yǔ)試題和答案
- 食品生物化學(xué) 知到智慧樹網(wǎng)課答案
- 2024年江蘇國(guó)信新豐海上風(fēng)力發(fā)電有限公司招聘筆試沖刺題(帶答案解析)
- 學(xué)術(shù)交流英語(yǔ)(學(xué)術(shù)寫作)智慧樹知到期末考試答案2024年
- 國(guó)家衛(wèi)生部《綜合醫(yī)院分級(jí)管理標(biāo)準(zhǔn)》
評(píng)論
0/150
提交評(píng)論