android課程設計---基于android系統(tǒng)的音樂播放器設計與實現(xiàn)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告書</b></p><p>  課程名稱: 操作系統(tǒng)原理 </p><p>  題 目: 基于Android系統(tǒng)的音樂播放器設計與實現(xiàn) </p><p>  2012 年 7 月 5 日</p><p><b>  課程設計任務書<

2、/b></p><p>  設計題目:基于Android 系統(tǒng)的音樂播放器設計與實現(xiàn)</p><p><b>  初始條件:</b></p><p>  Linux操作系統(tǒng),Android開發(fā)環(huán)境,Java編譯環(huán)境,SQLite數據庫</p><p>  要求完成的主要任務:</p><p>

3、;<b>  主要任務:</b></p><p>  現(xiàn)今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器的播放功能模塊,要求音樂播放器能夠播放Mp3,Wav多種格式的音樂文件,能夠控制播放,暫停,停止,上一曲,下一曲,能夠調節(jié)音量,能播放RMVB格式的視頻文件,此外,還能支持中文、英文等語言界面。要求視覺外觀美觀,操作簡單。 &

4、lt;/p><p>  本項目是一款基于Android手機平臺的音樂播放器的子模塊,使Android手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練Android的技術和其它在市場上的特點</p><p>  設計報告撰寫格式要求:</p><p>  1設計題目與要

5、求 2 設計思想</p><p>  3系統(tǒng)結構 4 數據結構的說明和模塊的算法流程圖</p><p>  5 使用說明書(即用戶手冊):內容包含如何登錄、退出、讀、寫等操作說明</p><p>  6 運行結果和結果分析(其中包括實驗的檢查結果、程序的運行情況)</p><p>  7 自我評價與總結 8 附錄:程序清單,注

6、意加注釋(包括關鍵字、方法、變量等),在每個模塊前加注釋; </p><p><b>  時間安排 </b></p><p>  7月1日 布置課程設計任務;分配題目后,查閱資料、 準備程序;</p><p>  7月 2~7月4 日上機調試程序、書寫課程設計報告;</p><p>  7月5 日 提交課程設計報告及相關

7、文檔。</p><p>  基于Android平臺的音樂播放器的播放控制功能設計 </p><p>  摘要Android簡介:</p><p>  Android是一種以Linux為基礎的開放源碼操作系統(tǒng),主要使用于便攜設備。目前尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),最初主要支持手機。2

8、005年由Google收購注資,并組建開放手機聯(lián)盟開發(fā)改良,逐漸擴展到平板電腦及其他領域上。</p><p>  Android平臺五大優(yōu)勢特色:</p><p><b>  1、開放性</b></p><p>  2、掙脫運營商的束縛</p><p><b>  3、豐富的硬件選擇</b><

9、/p><p>  4、不受任何限制的開發(fā)商</p><p>  5、無縫結合的Google應用 </p><p>  圖 Android 軟件體系結構圖</p><p>  Android作為一個移動設備的平臺,其軟件層次結構包括了一個操作系統(tǒng)(OS),中間件(MiddleWare)和應用程序(Application)。根據Android的軟件框

10、圖,其軟件層次結構自下而上分為以下幾個層次:</p><p>  第一、操作系統(tǒng)層(OS)</p><p>  第二、各種庫(Libraries)和Android 運行環(huán)境(RunTime)</p><p>  第三、應用程序框架(Application Framework)</p><p>  第四、應用程序(Application)<

11、;/p><p><b>  1、設計題目與要求</b></p><p>  題目:基于Android平臺的音樂播放器的播放控制功能設計</p><p>  要求:現(xiàn)今社會生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一,本項目的目的是開發(fā)一個可以播放主流音樂文件格式的播放器的播放功能模塊,要求音樂播放器能夠播放Mp3,Wav多種格式的音樂文件,能

12、夠控制播放,暫停,停止,上一曲,下一曲,能夠調節(jié)音量,能播放RMVB格式的視頻文件,此外,還能支持中文、英文等語言界面。要求視覺外觀美觀,操作簡單。 </p><p>  本項目是一款基于Android手機平臺的音樂播放器的子模塊,使Android手機擁有個性的多媒體播放器,使手機顯得更生動靈活化,與人們更為接近,讓手機主人隨時隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設計者更加熟練Android的

13、技術和其它在市場上的特點。</p><p><b>  2、設計思想</b></p><p>  要實現(xiàn)這個音樂播放器。首先應該考慮到的就是他的功能,要有后臺播放功能以及顯示正在播放的文件和把手機中的音樂文件以列表的形式顯示在手機上,這就要使用到listview類。</p><p>  另外在本地歌曲列表和正在播放的歌曲之間要進行動態(tài)菜單的跳轉

14、故而想到用tabhost這個容器進行布局。后臺播放創(chuàng)建一個類繼承service方法,在該類中使其具有播放暫停下一首上一首的功能的方法,從而是它在各個Activity之間進行跳轉的時候為其他的類提供相應的方法。創(chuàng)建一個新建文件類和過濾文件信息的類,用以存貯特定的文件信息和當用戶改變文件夾終不改的內容的時候同步更新播放列表。于接打電話這個問題,創(chuàng)建一個類進行監(jiān)聽,當電話進來或出去的時候調用service方法停止音樂播放并記下播放點。<

15、/p><p>  對于剛接觸Android開發(fā)的我們,在很多的知識點上還是不是很理解,鑒于此在制作的過程難免會遇到各種問題,解決的辦法就是通過百度,goolge各種搜索引擎。</p><p>  首先在開始動手構思音樂播放器界面的時候就遇到了難題,要實現(xiàn)動態(tài)菜單(本地音樂、正在播放的歌曲);</p><p>  1、如何實現(xiàn)后臺播放;</p><p&

16、gt;  2、如何進行多頁面之間的跳轉;</p><p>  3、如何進行電話監(jiān)聽;</p><p>  4、如何將sd卡中的MP3音樂文件過濾讀取到播放列表中;</p><p>  5、如何自動添加更新播放列表;</p><p><b>  3、系統(tǒng)結構</b></p><p>  圖 3-1系

17、統(tǒng)功能結構圖</p><p>  圖 3-2 播放器基本控制圖</p><p>  在播放器運行時,主界面是服務器的歌曲列表,可以點擊刷新列表,也可以點擊歌曲名,開始下載歌曲,然后點擊本地歌曲列表可以顯示出本地的歌曲文件,點擊文件名則跳轉到播放界面,在播放界面可以控制歌曲的播放、暫停、停止以及返回本地歌曲列表。</p><p>  4、數據結構的說明和模塊的算法流程

18、圖</p><p>  圖4-1 音樂播放器系統(tǒng)流程圖</p><p>  5、音樂播放器的詳細設計與實現(xiàn)</p><p>  5.1播放器界面設計</p><p>  首先是創(chuàng)建一個主界面MainActivity,它使用TabHost布局,這里面的TabWidget控件控制著兩個Activity的互相切換:</p><p

19、>  一個是Mp3PlayerListActivity(圖5-1),這個Activity是一打開程序就顯示的服務器歌曲列表。</p><p>  圖5-1 Mp3PlayerListActivity</p><p>  另一個是LocalActivity(圖5-2),這個Activity是點擊TabWidget控件中的“本地”按鈕才會顯示的本地歌曲列表界面。</p>&

20、lt;p>  圖5-2 LocalActivity</p><p>  在LocalActivity中點擊列表中的歌曲名就會調出PlayerActivity(圖5-3),這個Activity就是播放音樂時的界面,其中有一些對播放器進行控制的控件。</p><p>  圖5-3 PlayerActivity</p><p>  詳細設計代碼見附錄。</p&

21、gt;<p>  以上就是整個Android音樂播放器設計中比較重要的功能以及實現(xiàn)方法。</p><p>  6、運行結果和結果分析(其中包括實驗的檢查結果、程序的運行情況)</p><p>  Android的每一個可視化界面,都有其的唯一的布局配置文件,該文件里面有各種布局方式,和各種資源文件如圖像,文字,顏色的引用,程序在運行時,可以通過代碼對各配置文件進行讀取。這樣就

22、可以形成不同的可視化界面和炫麗的效果。播放器主界面是一個Activity,Android工程在每個activity啟動的時候會首先執(zhí)行Oncreate()方法,如下代碼:</p><p><b>  主界面:</b></p><p>  6.1 播放界面音軌的實現(xiàn)</p><p>  圖 6-1 播放器音軌SeekBar</p>

23、<p>  圖6-2 Android系統(tǒng)自帶SeekBar</p><p>  配置文件中三個Item項依次決定了SeekBar的三層背景,從最下層的灰色到最上層的藍色。通過各種屬性設置了SeekBar的傾斜度,兩端圓半徑,角度,中心位置,起始,中心和結束的顏色,游標的起始位置。通過這些屬性設置,就自定義一個如上圖一的SeekBar音軌.</p><p>  播放器最重要的一部分

24、就是音軌與歌曲進度同步的實現(xiàn)。音軌設置了兩個TextView用來顯示當前歌曲播放的進度時間和歌曲的長度(圖5.3)</p><p><b>  圖 6-3 音軌</b></p><p>  音軌對象SeekBar在歌曲剛開始播放的時候調用方法SeekBar.setMax(),參數傳入歌曲的長度。SeekBar.setProgress(1)設置游標的起始進度為1。然后程

25、序運行如下代碼:</p><p>  private Runnable thread_One = new Runnable() {// 線程</p><p>  public void run() {</p><p>  int currently_Progress = seekBar.getProgress() + 1000; seekBar.setPro

26、gress(currently_Progress);</p><p>  currently_Time.setText(getFileTime(mplayer.getCurrentPosit ion()));showLrcTwo(lrc_time, lrc_word);handler.postDelayed(thread_One, 1000);}};</p><p>  Android的

27、線程的開始是通過Handler類來進行的,Handler類是線程與線程之間通信的橋梁,實現(xiàn)Runnable接口會實現(xiàn)里面的run方法,當線程開始的時候,Runnable中的run方法會向Handler發(fā)一個Message消息,這樣,Handler類就可以接收到run方法發(fā)送過來的不同的消息進行不同的代碼處理。這樣就達到了各線程之間的通信。要啟動一個線程調用Handler的方法postDelayed(Runnable,1000)表示線程睡

28、眠時間是1000ms 。</p><p>  以上代碼意思是讓播放歌曲的線程每隔1000ms,即每1秒對音軌的TextView重新設置時間且讓進度條前進1秒的進度。對音軌進行刷新。這樣就實現(xiàn)了歌詞同步功能SeekBar有一個監(jiān)聽器,該監(jiān)聽器的作用是一直保持著對進度條的監(jiān)聽,當我們用鼠標向SeekBar的各位置進行點擊時,它會自動監(jiān)聽其位置,進行相應的位置顯示。這也是進度條上的游標會不停的移動和歌詞時間會不停的變動

29、的原因。</p><p>  6.2播放器播放、暫停、停止等功能</p><p>  圖 6-4 播放、暫停、停止功能</p><p><b>  6.3播放列表功能</b></p><p>  播放列表界面(如圖5.5)</p><p>  圖 6-5 歌曲列表</p><p

30、>  6.4 MP3歌曲添加導入</p><p><b>  圖 6-6 導入圖</b></p><p>  6.5 數據存儲方式</p><p>  在播放器正常運行時,由于各界面存在相互跳轉,為了避免數據在界面跳轉的過程中丟失,我們需要將一些數據進行臨時存儲或者永久存儲。</p><p>  Android作為

31、一種手機操作系統(tǒng),提供了如下幾種存取數據的方式:Preference(配置)、File(文件)、SQLite數據和網絡 。</p><p>  另外,在Android中各個應用程序組件之間是相互獨立的,彼此的數據不能共享。為了實現(xiàn)數據的共享,Android提供了Content Provider組件來實現(xiàn)應用程序之間數據的共享 </p><p>  6.5.1 SharedPreferenc

32、es</p><p>  Preference Preference提供了一種輕量級的數據存取方法,一般數據比較少,一些簡單的配置信息。它以“鍵-值”(是一個Map)對的方式,將數據保存在一個XML配置文件中</p><p>  使用到的接口(詳細內容見文檔)</p><p>  android.content .SharedPreferences提供了保存數據的方

33、法</p><p>  android.content .SharedPreferences.Editor提供了獲得數據的方法</p><p>  以播放器中的播放模式存取為例:</p><p>  (1).xml配置文件的讀取</p><p>  我們仍以播放模式讀取為例:當需要用到播放模式的確定時,我們將讀取.Xml文件,同樣用共享文件類

34、SharedPreferences 通過用方法getSharedPreferences("SET_MSG",MODE_WORLD_READABLE),并且是只讀方式獲得.Xml的文件內容。SharedPreferences的對象調用方法getString("sigle_Play", null),方法返回一個String類型的值,即是我們以前存儲進去的String值。此方法當該標記不存在時會默認返回

35、一個null值。獲得成功后我們就可以運用當前的值再對程序進行操作了。</p><p>  (2).xml配置文件的存儲</p><p>  類SharedPreferences。它有一個方法getSharedPreferences(參數1,參數2),參數1為寫進時的標記,便于在從其中讀取出來時的標記,參數2為讀取模式,有只寫模式(MODE_WORLD_WRITEABLE)和只讀模式(MOD

36、E_WORLD_READABLE),在寫之前將其置入編輯狀態(tài),用靜態(tài)方法SharedPreferences.Editor editor = sp.edit();然后對象editor可以存入一個HashMap<key,values>類型的鍵值,即putString(KEY, VALUES),這樣,我們可以將List中的對象轉化成一樣長的字符中放進配置文件中。</p><p>  當寫入成功時,andro

37、id系統(tǒng)會自動在目錄data/data/工程包名/shared_prefs/目錄下生成一個配置文件</p><p><b>  7、自我評價與總結</b></p><p>  (1) 通過對Android手機平臺的音樂播放器軟件的開發(fā),使我對Android音樂播放器系統(tǒng)的整體設計有一個深入的了解,對整個流程也會有一個清晰的認識。開發(fā)Android音樂播放器,要抓住開發(fā)

38、的核心部分,音樂播放器大體由播放主界面、播放列表、菜單、播放設置、文件瀏覽、歌曲搜索六大核心組成,只要掌握了這六部分的開發(fā),音樂播放器就能初具規(guī)模。而其它的功能都是在這六個功能的基礎上去補充添加的,但是這是功能的確是必不可少的功能,否則就不能算是音樂播放器了。</p><p>  (2) 音樂播放器系統(tǒng)實現(xiàn)了播放器的基本功能:播放,暫停、停止、上/下一首、音量調節(jié)、歌詞顯示、播放模式、歌曲搜索、文件瀏覽器、播放列

39、表查詢等功能。運用的系統(tǒng)平臺是現(xiàn)今最熱門的Android系統(tǒng),是一個開源的基于Linux系統(tǒng)的手機平臺。是以Java語言編寫+SQLite數據庫支持+SharePreference配置文件的組合方式進行數據管理。實現(xiàn)了音樂播放器的系統(tǒng)編程。</p><p>  (3) 本次程序設計,對播放器的系統(tǒng)結構框架做了精心的構思與設計,采用主要開發(fā)工具是Eclipse3.5+Java語言的支持,Android Develo

40、pment Tool的插件,和Android SDK2.1版本的全面結合,才使整個音樂播放器系統(tǒng)得以實現(xiàn)。</p><p>  (4) 總之,經過幾個月的Android系統(tǒng)技術知識的學習和對音樂播放器的構思與設計,使我對Android系統(tǒng)有了一定的了解,讓我對Android系統(tǒng)上的開發(fā)流程和開發(fā)模式有了深入的了解,這對我以后的Android項目開發(fā)有很大的幫助。</p><p>  在此論

41、文抒寫過程中,我還要感謝我的軟件工程的老師給我的支持和建議。讓我能順利的完成本次論文。</p><p>  8、附錄:程序清單,注意加注釋(包括關鍵字、方法、變量等),在每個模塊前加注釋; </p><p>  主界面MainActivity布局文件代碼:</p><p>  <TabHost xmlns:android="http://schema

42、s.android.com/apk/res/android"</p><p>  android:id="@android:id/tabhost"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="fi

43、ll_parent"</p><p>  android:background="@drawable/bg1" ></p><p>  <LinearLayout</p><p>  android:orientation="vertical"</p><p>  android:

44、layout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><p>  android:padding="5dp" ></p><p>  <TabWidget</p><p>

45、  android:id="@android:id/tabs"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content" /></p><p>  <FrameLayou

46、t</p><p>  android:id="@android:id/tabcontent"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><

47、p>  android:padding="5dp" /></p><p>  </LinearLayout></p><p>  服務器列表界面Mp3PlayerListActivity布局文件代碼:</p><p>  <?xml version="1.0" encoding="utf

48、-8"?></p><p>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:layout_width="fill_parent"</p><p>  android:l

49、ayout_height="fill_parent"</p><p>  android:orientation="vertical" ></p><p>  <LinearLayout</p><p>  android:id="@+id/listLinearLayout"</p>

50、<p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content"</p><p>  android:orientation="vertical" ></p><p><b

51、>  <ListView</b></p><p>  android:id="@id/android:list"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content

52、"</p><p>  android:drawSelectorOnTop="false"</p><p>  android:scrollbars="vertical" /></p><p>  </LinearLayout></p><p>  </LinearLa

53、yout></p><p>  本地歌曲列表界面LocalActivity布局文件代碼:</p><p>  <?xml version="1.0" encoding="utf-8"?></p><p>  <LinearLayout xmlns:android="http://schemas

54、.android.com/apk/res/android"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><p>  android:orientation="ve

55、rtical" ></p><p>  <LinearLayout</p><p>  android:id="@+id/listLinearLayout"</p><p>  android:layout_width="fill_parent"</p><p>  android

56、:layout_height="wrap_content"</p><p>  android:orientation="vertical" ></p><p><b>  <ListView</b></p><p>  android:id="@id/android:list&qu

57、ot;</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content"</p><p>  android:drawSelectorOnTop="false"</p><

58、;p>  android:scrollbars="vertical" /></p><p>  </LinearLayout></p><p>  </LinearLayout></p><p>  播放界面PlayerActivity布局文件代碼:</p><p>  <?xml

59、 version="1.0" encoding="utf-8"?></p><p>  <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:id="@+id/playerAct

60、ivity"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><p>  android:background="@drawable/bg1" >&l

61、t;/p><p>  <ImageButton</p><p>  android:id="@+id/pause"</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_cont

62、ent"</p><p>  android:layout_x="139dp"</p><p>  android:layout_y="100dp"</p><p>  android:src="@drawable/pause" /></p><p>  <Im

63、ageButton</p><p>  android:id="@+id/begin"</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p&

64、gt;  android:layout_x="55dp"</p><p>  android:layout_y="100dp"</p><p>  android:src="@drawable/begin" /></p><p><b>  <TextView</b><

65、;/p><p>  android:id="@+id/nameText"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content"</p><p>  andro

66、id:layout_x="0dp"</p><p>  android:layout_y="25dp"</p><p>  android:gravity="center"</p><p>  android:textColor="@drawable/white"</p>

67、<p>  android:textSize="20dip" /></p><p>  <ImageButton</p><p>  android:id="@+id/stop"</p><p>  android:layout_width="wrap_content"</p&g

68、t;<p>  android:layout_height="wrap_content"</p><p>  android:layout_x="227dp"</p><p>  android:layout_y="100dp"</p><p>  android:src="@dra

69、wable/stop" /></p><p>  </AbsoluteLayout></p><p><b>  9、參考文獻</b></p><p>  [1] 張孝祥著. java就業(yè)培訓教程[M].北京:清華大學出版社,2007.</p><p>  [2] 余志龍編著.Google A

70、ndroid SDK開發(fā)范例大全[M].北京:人民郵電出版社,2009-7-1.</p><p>  [3] E2ECloud工作室著.深入淺出Google Android[M].北京:人民郵電出版社,2009-08-1.</p><p>  [4] 靳巖 姚尚朗著.Google Android開發(fā)入門與實戰(zhàn)[M].北京:清華大學出版社,2009-07-01.</p><

71、;p>  [5] 高昂著.支持動態(tài)語言的Android平臺[M].北京:人民郵電出版社,2009-05-07.</p><p>  [6] eoe.Android開發(fā)社區(qū).http://www.eoeandroid.com/. 2010-04-10.</p><p>  [7] JavaEye論壇.http://www.javaeye.com/forums. 2010-04-15.&

72、lt;/p><p>  [8] Android API文檔.http://androidappdocs.appspot.com/index.html. 2010-04-10.</p><p>  [9] 高煥堂編.Android 應用框架原理與程式設計(第三版)[M].北京:清華大學出版社,2008-10-03</p><p>  [10] 楊豐盛主編.Android

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論