版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件技術(shù)系列課程Android大作業(yè)( 2014 / 2015 學(xué)年 第 一 學(xué)期)題目: 音樂播放器的分析與設(shè)計 專 業(yè) 軟件工程(服務(wù)外包) 學(xué) 生 姓 名 單珺瑜 班 級 學(xué) 號 B12041305 指 導(dǎo) 教 師 張怡婷 易磊 許鵬 指 導(dǎo) 單 位 南京郵電大學(xué)計算機學(xué)院 誠邁科技 日 期 2014.12.30 一、課題內(nèi)容和要求音樂播放器,作為移動設(shè)備基礎(chǔ)配備軟件之一,主要功能包括從SDCard中讀取音樂、顯示播放音樂列表、播放音樂、顯示音樂歌詞、實現(xiàn)上一首、下一首、暫停、選擇播放形式等功能。本論文的音樂播放器采用了Android開源系統(tǒng)技術(shù),利用Java語言和Eclipse編輯工具
2、對播放器進行編寫。同時給出了詳細(xì)的系統(tǒng)設(shè)計過程、主要界面設(shè)計及主要功能運行流程圖二、需求分析本課題基于Android手機平臺上開發(fā)的音樂播放器主要設(shè)計了四個界面,包括:歡迎界面,主界面,播放界面和關(guān)于界面。每個界面的主要功能為:歡迎界面為顯示App的logo;主界面利用ListView顯示讀取SDCard后的App中的全部歌曲列表,通過滑動屏幕并選擇可以實現(xiàn)與我的收藏界面、關(guān)于界面的切換,通過點擊具體歌曲可以實現(xiàn)與播放界面的切換;我的收藏界面利用ListView顯示用戶收藏的歌曲列表,通過滑動屏幕并選擇可以實現(xiàn)與主界面、關(guān)于界面的切換,通過點擊具體歌曲可以實現(xiàn)與播放界面的切換。播放界面用以顯示
3、正在播放的歌曲的歌曲名、歌手、歌詞等主要信息,并設(shè)置按鈕實現(xiàn)前一曲、后一曲、播放暫停等功能,通過播放形式按鈕可以選擇單曲循環(huán)、隨機播放或者是順序播放,除此之外,界面下方利用Android自帶seekbar設(shè)置的進度條可以根據(jù)用戶需要調(diào)節(jié)播放進度;關(guān)于界面用以顯示App的主要功能等信息。三、軟件設(shè)計 (一)、系統(tǒng)主要功能模塊包括: 1、歡迎界面:初始化Intent以實現(xiàn)歡迎界面開始1.5秒之后進入歌單列表界面。 2、歌單列表: a、歌曲:利用ListView類顯示歌曲列表,點擊歌曲名稱即選定歌曲啟動音樂播放器,播放選中的歌曲 b、菜單:點擊關(guān)于即可跳轉(zhuǎn)至關(guān)于界面,點擊我的收藏即可跳轉(zhuǎn)至我的收藏界
4、面 3、我的收藏界面: a、歌曲:利用ListView類顯示歌曲列表,點擊歌曲名稱即選定歌曲啟動音樂播放器,播放選中的歌曲 b、菜單:點擊關(guān)于即可跳轉(zhuǎn)至關(guān)于界面,點擊歌曲列表即可跳轉(zhuǎn)至主界面 4、播放界面: a、播放:選擇音樂后,點擊播放按鈕啟動音樂播放器,即當(dāng) MSG=MEDIA_PLAY時,播放所選中的歌曲,執(zhí)行playMusic; b、暫停:點擊暫停鍵,即當(dāng)MSG=MEDIA_PAUSE時,停止正在播放的歌曲,執(zhí)行pauseMusic; c、上一曲:點擊上一曲,即當(dāng)MSG=MEDIA_PREVIOUS時,停止正在播放的歌曲,播放播放列表中上一 首歌曲; d、下一曲:點擊下一曲,即當(dāng)MSG
5、=MEDIA_NEXT時,停止正在播放的歌曲,播放播放列表中下一首歌曲; e、播放模式:點擊播放模式,利用MusicCompleteListener類可以依次改變播放模式至隨機播放、列表循環(huán)或者單曲循環(huán),進而執(zhí)行randomRepeat、allRepeat或者singleRepeat; (1)隨機播放:利用系統(tǒng)隨機生成一個01之間的隨機數(shù)乘當(dāng)前position,再用int取整,即為下一首歌曲的position (2)列表循環(huán):利用position變量,當(dāng)position+!=NULL時,position自增,否則position=0 (3)單曲循環(huán):position不發(fā)生任何變化 f、進度條:
6、利用Android自帶的seekbar設(shè)置進度條,用戶可以根據(jù)進度條來自主控制歌曲播放進度,隨意跳轉(zhuǎn); g、歌詞顯示:利用LyricView類完成歌詞隨著時間滾動顯示的功能。5、關(guān)于界面:利用LinearLayout的線性布局及若干個TextView以顯示App主要功能等信息(二)、App設(shè)計簡要流程圖如下:Smart Music歡迎界面 我的收藏歌單列表播放控制歌詞顯示歌曲播放歌曲暫停播放上一首播放下一首播放模式單曲循環(huán)列表循環(huán) 隨機播放4、 軟件實現(xiàn)(1) 、開發(fā)環(huán)境的搭建與配置1. 下載JDKJDK即JavaDevelopmentKit(Java開發(fā)工具包),包括JAVA運行環(huán)境,基礎(chǔ)類
7、庫和JAVA工具,是JAVA運行的基礎(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 運行下載好的jdk-7u25-windows-x64.exe,按提示一步步走。6.測試是否安裝成功 安裝完成之后,可以用下述方法檢查JDK是否安裝成功:打開c
8、md窗口,輸入java-version。7.添加環(huán)境變量 操作步驟: 計算機-屬性-高級系統(tǒng)設(shè)置-環(huán)境變量-系統(tǒng)變量-Path-編輯添加JDK的bin目錄的路徑。8. 安裝AndroidSDK 以前SDK直接下載完,在Eclipse里配置路徑就可以了,現(xiàn)在貌似變成了一個管理器(SDKManager),用來管理下載更新,雙擊之前下載的installer_r22.0.1-windows.exe。9.安裝SDKManager10. 安裝Platform 僅僅SDKTools是不夠的,我們至少還需要一個Android平臺和最新的SDK平臺工具。 啟動AndroidSDKManager,如下圖,勾選An
9、droidSDKPlatform-tools和AndroidSDKBuild-tools,Android4.2.2文件夾,Extras下的AndroidSupportLibrary。11添加環(huán)境變量 操作步驟: 計算機-屬性-高級系統(tǒng)設(shè)置-環(huán)境變量-系統(tǒng)變量-新建變量名:ANDROID_SDK_HOME添加SDK目錄的路徑。12.安裝Eclipse,選擇工作空間。13.配置ADT 點擊Help-InstallnewSoftware,然后Add-Archive-找到我們下載好的ADT-22.0.1.zip,同時給個名稱,如ADTPlugin14.配置SDK(二)、負(fù)責(zé)的主要功能和代碼1、歡迎界面
10、 歡迎界面為顯示App的logo,點開App圖標(biāo)后出現(xiàn),1.5秒后自動轉(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秒后自動進入列表界面2、 關(guān)于界面關(guān)于界面用于顯示APP的功能、開發(fā)者、版本號等主要信息,主要代碼如下:/設(shè)置文本高度/設(shè)置文本距離頂部距離/設(shè)置文本距離底部距離/設(shè)置文本大小/設(shè)置文本距離頂部距離/設(shè)置文本顏色3、 MusicService功能MusicSer
12、vice用于實現(xiàn)音樂的后臺播放功能public class MusicService/定義一個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ù)用戶要求在進度條中尋找用戶要求進度,再進行播放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:/實現(xiàn)列表循環(huán)播放if (position =
20、 musicInfoList.size() - 1) position = 0; else position += 1;break;case AppConstant.randomRepeat:/實現(xiàn)隨機播放position = (int)(musicInfoList.size()-1)*Math.random();break;case AppConstant.singleRepeat:/實現(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ā)送成功);五、軟件測試將Android手機用USB與電腦相連,打開Eclipse在項目上右鍵 - 運行方式 - android application 即可以直接運行進
22、行測試。1、 進入界面的測試: 點擊App后直接跳轉(zhuǎn)至進入界面,1.5秒后自動跳轉(zhuǎn)至歌單列表界面2、 歌單界面的測試 a、歌單界面用以顯示歌曲列表及其歌曲作者,界面下方顯示上次播放的歌曲信息。b、屏幕左上方為菜單,通過滑動屏幕即可展開菜單列表,可以實現(xiàn)與關(guān)于界面的轉(zhuǎn)換3、 我的收藏界面 我的收藏界面用于顯示用戶收藏的歌曲列表4、 播放界面的測試界面左上角是返回鍵,點擊可以跳轉(zhuǎn)至歌單列表界面;界面上方用以顯示歌曲的名稱,作者姓名;界面中間部分用以顯示歌曲的歌詞,并隨著歌曲進度而滑動,正在演唱的歌詞變紅;歌詞下方是進度條,兩側(cè)顯示歌曲已經(jīng)播放時間和歌曲總長,用戶可以隨意拉動進度條以調(diào)整歌曲進度,當(dāng)進度條到達最后時,自動跳轉(zhuǎn)至下一首;界面最下方是功能鍵,依次為:上一首、暫停(播放)、下一首和播放形式,點擊上一首按鈕即可跳轉(zhuǎn)至上一首歌曲界面,點擊暫停按鈕即可歌曲暫停且暫停按鈕變成播放按鈕,點擊下一首按鈕即可跳轉(zhuǎn)至下一首歌曲界面,點擊播放形式按鈕可依次改變至隨機播放、列表循環(huán)和單曲循環(huán),按鈕也會依次改變。5、 關(guān)于界面的測試關(guān)于界面用于顯示APP的功能、開發(fā)者、版本號等主要信息6、 軟件總結(jié)本次實驗旨在利用JAVA編程,實現(xiàn)音樂播放器的基本功能。這次的軟件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個人商鋪租賃補充協(xié)議3篇
- 二零二五年沖擊鉆施工質(zhì)量控制合同2篇
- 2025年度個人家居裝修設(shè)計合同書(環(huán)保材料應(yīng)用版)3篇
- 個人貸款轉(zhuǎn)讓合同書(標(biāo)準(zhǔn)版)版
- 二零二五年度出租房水電費分?jǐn)傊悄芄芾韰f(xié)議4篇
- 買賣合同一般程序
- 二零二五年度農(nóng)戶電商農(nóng)產(chǎn)品市場調(diào)研合作合同
- 2025年中國日光燈應(yīng)急電源市場調(diào)查研究報告
- 數(shù)字貨幣與金融穩(wěn)定-第1篇-深度研究
- 2025至2031年中國高領(lǐng)毛衣行業(yè)投資前景及策略咨詢研究報告
- 2024年全國職業(yè)院校技能大賽高職組(研學(xué)旅行賽項)考試題庫(含答案)
- 2025年溫州市城發(fā)集團招聘筆試參考題庫含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會課件
- 2025版高考物理復(fù)習(xí)知識清單
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計劃
- 2024年度工作總結(jié)與計劃標(biāo)準(zhǔn)版本(2篇)
- 全球半導(dǎo)體測試探針行業(yè)市場研究報告2024
- 反走私課件完整版本
- 2024年注冊計量師-一級注冊計量師考試近5年真題附答案
- 四年級下冊數(shù)學(xué)知識點總結(jié)
評論
0/150
提交評論