目錄/提綱:……
一、首先對(duì)Android的架構(gòu),特點(diǎn),以及開(kāi)發(fā)平臺(tái)環(huán)境進(jìn)行介紹,
二、對(duì)Android多媒體類(lèi)庫(kù)MediaPlayer進(jìn)行綜合論述
三、播放器設(shè)計(jì)及功能實(shí)現(xiàn)
四、對(duì)播放器進(jìn)行功能測(cè)試和總結(jié)
二、MediaPlayer介紹10
二、MediaPlayer介紹
……
題目: ANDROID音樂(lè)播放器
院(系) 信息與工程學(xué)院
專(zhuān) 業(yè) 電子信息工程
屆 別 2012屆
摘 要
隨著Android平臺(tái)的興起,使用Android技術(shù)開(kāi)發(fā)手機(jī)軟件受到越來(lái)越多人的青睞。在此背景下,本課題是開(kāi)發(fā)一款A(yù)ndroid平臺(tái)的音樂(lè)播放器。
本文主要圍繞以下幾個(gè)方面進(jìn)行研究:
一、首先對(duì)Android的架構(gòu),特點(diǎn),以及開(kāi)發(fā)平臺(tái)環(huán)境進(jìn)行介紹,
二、對(duì)Android多媒體類(lèi)庫(kù)MediaPlayer進(jìn)行綜合論述
三、播放器設(shè)計(jì)及功能實(shí)現(xiàn)
四、對(duì)播放器進(jìn)行功能測(cè)試和
總結(jié)本設(shè)計(jì)實(shí)現(xiàn)的主要功能是顯示播放列表,播放Mp3,Wav等多種格式的音樂(lè)文件,控制播放,暫停,停止,上一曲,下一曲,音量調(diào)節(jié),歌曲播放進(jìn)度條,播放時(shí)間和顯示歌曲信息等多種播放功能,界面簡(jiǎn)明,操作簡(jiǎn)單。
關(guān)鍵詞 :Android;MediaPlayer;測(cè)試
ABSTRACT
With the rise of the Android platform , the number of people of all ages using the Android technology to develop mobilesoftware are increasing quickly. In this conte*t,this project is to make an Android platform music player.
This article is mainly around the following research:
1, Firstly, the Android s background, structure , characteristics , and development platform environment are described.
2,Comprehensive discussion on the Android multimedia class library MediaPlayer.
3,The design and functionality of the player program to achieve.
4, The player function test and summary.
The main function of this design is to play Mp3and Wav,show the playlist, multiple formats of music files, control playback, pause, stop, previous song, ne*t song, volume control, song playback progress bar, play time, and display the song letter and so on.Its easy to operate.
keywords: Android,MediaPlayer,Test
目錄
摘 要 1
ABSTRACT 2
目錄 3
引 言 4
1課題背景和意義 4
2
論文寫(xiě)作的目的 4
一. Android開(kāi)發(fā)平臺(tái)介紹與平臺(tái)的搭建 5
1.1Android簡(jiǎn)介 5
1.2Android的系統(tǒng)架構(gòu) 5
1.3系統(tǒng)特點(diǎn) 7
1.4 Android開(kāi)發(fā)環(huán)境的搭建 8
二、 MediaPlayer 介紹 10
三 .播放器設(shè)計(jì)與功能實(shí)現(xiàn) 13
3.1總體功能圖和流程圖 13
(1) 功能圖 13
(2)功能流程圖 13
3.2 用戶(hù)界面模塊 14
(1)歌曲列表 14
(2)播放界面 15
3.3功能實(shí)現(xiàn)方法 16
(1)播放列表的顯示和響應(yīng) 17
(a)通過(guò)數(shù)據(jù)共享存儲(chǔ)Content Providers機(jī)制 獲取歌曲信息 17
(b)把音樂(lè)以列表方式顯示出來(lái) 18
(c)列表點(diǎn)擊事件處理 20
(2)播放歌曲界面顯示和控制 21
(a)獲取播放哪首歌曲的信息 21
(b)歌曲界面顯示和界面點(diǎn)擊響應(yīng) 2
……(新文秘網(wǎng)http://m.120pk.cn省略2861字,正式會(huì)員可完整閱讀)……
。
(4) Linu*內(nèi)核
Android的核心系統(tǒng)服務(wù)依賴(lài)于Linu* 2.6內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linu*內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。
Android 更多的是需要一些與移動(dòng)設(shè)備相關(guān)的驅(qū)動(dòng)程序。
1.3系統(tǒng)特點(diǎn)
* 開(kāi)放性 。
Google 與開(kāi)放手機(jī)聯(lián)盟合作開(kāi)發(fā)了 Android , Google 通過(guò)與運(yùn)營(yíng)商 、設(shè)備制造商 、 開(kāi)發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系 , 希望通過(guò)建立標(biāo)準(zhǔn)化 、 開(kāi)放式的移動(dòng)電話(huà)軟件平臺(tái) , 在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng) 。
* 應(yīng)用程序無(wú)界限 。
Android上的應(yīng)用程序可以通過(guò)標(biāo)準(zhǔn)API 訪(fǎng)問(wèn)核心移動(dòng)設(shè)備功能。通過(guò)互聯(lián)網(wǎng)應(yīng)用程序可以聲明它們的功能可供其他應(yīng)用程序使用。
* 應(yīng)用程序是在平等的條件下創(chuàng)建的。
移動(dòng)設(shè)備上的應(yīng)用程序可以被替換或擴(kuò)展,即使是撥號(hào)程序或主屏幕這樣的核心組件。
* 應(yīng)用程序可以輕松地嵌入網(wǎng)絡(luò) 。
應(yīng)用程序可以輕松地嵌入 HTML 、 JavaScript和樣式表,還可以通過(guò) WebView 顯示網(wǎng)絡(luò)內(nèi)容。
* 應(yīng)用程序可以并行運(yùn)行。
Android 是一種完整的多任務(wù)環(huán)境,應(yīng)用程序可以在其中并行運(yùn)行。在后臺(tái)運(yùn)行時(shí),應(yīng)用程序可以生成通知以引起注意。
1.4 Android開(kāi)發(fā)環(huán)境的搭建
為了在PC主機(jī)上得到Android的開(kāi)發(fā)環(huán)境,我們選擇在Windows操作系統(tǒng)中進(jìn)行對(duì)Android開(kāi)發(fā)環(huán)境的搭建,具體步驟如下:
(1)JDK安裝
首先下載JDK,按照提示安裝成功后,最重要的是進(jìn)行環(huán)境變量的配置,步驟如下:我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:
Java_HOME值為:C:\Program Files\Java\jdk1.7.0_03(安裝JDK的目錄)
CLASSPATH值為:.(就是當(dāng)前目錄);%Java_HOME%lib\tools.jar;%Java_HOME%\lib\dt. jar;%Java _HOME%\bin;
Path值:添加C:\Program Files\Java\jdk1.7.0_03\bin;
(2)Eclipse安裝可下載一個(gè)綠色版的Eclipse,無(wú)需安裝,和安裝版一樣都能為Android開(kāi)發(fā)提供功能。
(3)ADT安裝
ADT實(shí)際上是一個(gè)工具,它可以連接sdk和Eclipse,幫助Eclipse找到sdk打開(kāi)Eclipse界面,進(jìn)入進(jìn)入菜單中的“Help”-> “Install New Software”,點(diǎn)擊Add按鈕彈出對(duì)話(huà)框要求輸入Name和Location,完成之后,選擇Window >Preferences;在左邊的面板選擇Android,然后在右側(cè)點(diǎn)擊Browse;并選中SDK路徑,本機(jī)為;D:\Android\android-sdk_r17-windows;點(diǎn)擊Apply、OK。配置完成。
(4)Android SDK安裝
打開(kāi)eclipse 點(diǎn)擊已經(jīng)安裝的插件SDK Manager運(yùn)行Android SDK Manager.e*e,顯示圖片如下所示,點(diǎn)擊Available Package。選擇希望安裝的SDK及其文檔或者其它包,點(diǎn)擊Installation Selected、Accept All、Install Accepted,開(kāi)始下載安裝所選包。
(5)創(chuàng)建AVD
為使Android應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)建AVD,步驟如下:
在Eclipse中,選擇Windows > Android SDK and AVD Manager,點(diǎn)擊左側(cè)面板的Virtual Devices,再右側(cè)點(diǎn)擊New,填入Name,選擇Target的API,SD Card大小任意,Skin隨便選,Hardware目前保持默認(rèn)值,點(diǎn)擊CreateAVD即可完成創(chuàng)建AVD。
二、 MediaPlayer 介紹
MediaPlayer類(lèi)可以用來(lái)播放音頻、視頻和流媒體,MediaPlayer包含了Audio和Video的播放功能,音頻和視頻的播放過(guò)程也就是MediaPlayer對(duì)象的狀態(tài)轉(zhuǎn)換過(guò)程。
(1)先是介紹下MediaPlayer的生命周期,如下圖所示。
(2)MediaPlayer的狀態(tài)介紹
(1 創(chuàng)建與銷(xiāo)毀
MediaPlayer通過(guò)靜態(tài)方法MediaPlayer.create()或者new操作符來(lái)創(chuàng)建。
使用create方法創(chuàng)建的MediaPlayer對(duì)象處于prepared狀態(tài),系統(tǒng)已經(jīng)根據(jù)闡述的資源ID調(diào)用了setDateSourse()和prepare()方法;
使用new方法創(chuàng)建的MediaPlayer對(duì)象處于idle狀態(tài),調(diào)用reset()方法后的MediaPlayer狀態(tài)也是idle狀態(tài)。對(duì)于通過(guò)調(diào)用reset()方法進(jìn)入idle狀態(tài)的MediaPlayer對(duì)象調(diào)用如下方法,會(huì)導(dǎo)致底層系統(tǒng)調(diào)用OnErrorListener.onError(),進(jìn)入到error狀態(tài)。
getCurrentPosition()、getDuration()、getVideoHeight()、getVideoWidth()、setAudioStreamType(int)、setLooping(boolean)、setVolume(float,float)、pause()、start()、stop()、seekTo(int)、prepare()、prepareAsync()。
當(dāng)MediaPlayer對(duì)象不再被使用時(shí),最好通過(guò)release()方法來(lái)釋放資源,使其處于結(jié)束End狀態(tài),如果MediaPlayer對(duì)象釋放硬件加速器等資源,隨后創(chuàng)建的MediaPlayer對(duì)象就無(wú)法使用這唯一的資源,甚至導(dǎo)致創(chuàng)建失敗,造成不必要的錯(cuò)誤。當(dāng)MediaPlayer對(duì)象處于結(jié)束狀態(tài)時(shí),便不能再使用,無(wú)法回到其他狀態(tài)。
如果發(fā)生了錯(cuò)誤,MediaPlayer對(duì)象將處于錯(cuò)誤狀態(tài),可以使用reset()方法來(lái)恢復(fù)錯(cuò)誤。
(2 初始化
1.調(diào)用重載的setDataSource()方法使MediaPlayer對(duì)象進(jìn)入到initialized狀態(tài)2.調(diào)用prepare()或者prepareAsync()方法將MediaPlayer對(duì)象進(jìn)入到prepared狀態(tài)。此時(shí)可以調(diào)用MediaPlayer的相關(guān)方法設(shè)置播放器屬性。
(3 播放暫停和停止
調(diào)用start()方法進(jìn)入到started狀態(tài),用isplaying()方法判斷 MediaPlayer是否處于started狀態(tài)。
調(diào)用pause()方法MediaPlayer進(jìn)入到paused狀態(tài)
調(diào)用stop()方法MediaPlayer進(jìn)入到stopped狀態(tài)。一旦MediaPlayer進(jìn)入到stopped狀態(tài),必須調(diào)用prepare()方法使之進(jìn)入到prepared狀態(tài),以便復(fù)用MediaPlayer對(duì)象,再次播放多媒體文件。
(4快進(jìn)快退
調(diào)用seekTo()方法調(diào)整MediaPlayer時(shí)間實(shí)現(xiàn)快進(jìn)快退功能。seekTo()方法可以在started paused prepared playbackCompleted 狀態(tài)下調(diào)用。
(5 播放結(jié)束
如果播放自然結(jié)束,MediaPlayer可能進(jìn)入兩種狀態(tài)。當(dāng)循環(huán)播放模式設(shè)置為true時(shí),MediaPlayer對(duì)象保持started狀態(tài)不變;當(dāng)循環(huán)播放模式設(shè)置為false時(shí),MediaPlayer對(duì)象的onCompletionListener.onCompletion()方法被調(diào)用,MediaPlayer對(duì)象進(jìn)入到playbackCompleted狀態(tài)。此時(shí)再次調(diào)用start()方法重新播放多媒體文件。
(6 錯(cuò)誤處理
MediaPlayer對(duì)象注冊(cè) onErrorListener監(jiān)聽(tīng)器監(jiān)聽(tīng)錯(cuò)誤信息。當(dāng)錯(cuò)誤發(fā)生時(shí),onErrorListener.onError()方法被調(diào)用,MediaPlayer對(duì)象進(jìn)入到error狀態(tài)。用reset()方法可以復(fù)用MediaPlayer對(duì)象并從錯(cuò)誤中恢復(fù)過(guò)來(lái),再次進(jìn)入到idle狀態(tài)。如果在不恰當(dāng)時(shí)間調(diào)用了某方法會(huì)拋出IllegalStateE*ception異常。可以用try/catch塊捕捉到此類(lèi)編程錯(cuò)誤。
( 7 其他注意事項(xiàng)
(A 任何MediaPlayer對(duì)象都必須先處于準(zhǔn)備狀態(tài),然后才開(kāi)始播放。
(B 可以通過(guò)setLooping(Boolean)方法來(lái)設(shè)置是否循環(huán)播放。
表2-2 MediaPlayer類(lèi)的常用方法
方法 說(shuō)明
MediaPlayer
create
getCurrentPosition
getDuration
getVideoHeight
getVideoWidth
isLooping
isPlayer
pause
prepare
prepareAsync
release
reset
seekTo
setAudioStreamType
setDataSource
setDisplay
setLooping
setOnBufferingUpdateListener
setOnErrorListener
setOnVideoSizeChangeListener
setScreenOnWhilePlaying
setVolune
start
stop 構(gòu)造方法
創(chuàng)建一個(gè)要播放的多媒體
得到當(dāng)前播放位置
得到文件的時(shí)間
得到視頻的高度
得到視頻的寬度
是否循環(huán)播放
是否正在播放
暫停
準(zhǔn)備(同步)
準(zhǔn)備(異步)
釋放MediaPlayer對(duì)象
重置MediaPlayer對(duì)象
指定播放的位置(以毫秒為單位的時(shí)間)
設(shè)置流媒體的類(lèi)型
設(shè)置多媒體數(shù)據(jù)來(lái)源
設(shè)置用SurfaceHolder來(lái)顯示多媒體
設(shè)置是否循環(huán)播放
網(wǎng)絡(luò)流媒體的緩沖監(jiān)聽(tīng)
設(shè)置錯(cuò)誤信息監(jiān)聽(tīng)
視頻尺寸監(jiān)聽(tīng)
設(shè)置是否使用SurfaceHolder來(lái)顯示
設(shè)置音量
開(kāi)始播放
停止播放
三 .播放器設(shè)計(jì)與功能實(shí)現(xiàn)
3.1總體功能圖和流程圖
(1)功能圖
MP3播放器的設(shè)計(jì)分成了用戶(hù)界面模塊,播放模塊
用戶(hù)界面模塊有播放界面,歌曲列表界;
播放模塊是進(jìn)入到播放界面后的功能設(shè)置,功能包括歌曲播放、暫停、停止,上一首、下一首,音量調(diào)節(jié)按鈕,歌曲進(jìn)度條等。
(2)功能流程圖
根據(jù)MP3播放器的功能設(shè)計(jì),制定出的的流程圖如下:
3.2 用戶(hù)界面模塊
(1)歌曲列表
歌曲列表界面如下所示
有歌曲時(shí) 沒(méi)歌曲時(shí)
UI 設(shè)計(jì) 要設(shè)置兩個(gè)*ml布局文件
設(shè)置songabout.*ml來(lái)顯示每一行顯示的內(nèi)容,(包括歌名,歌手,專(zhuān)輯,歌曲時(shí)間長(zhǎng)度)
設(shè)置songlist.*ml來(lái)顯示播放列表
布局文件代碼片段如下所示
songlist.*ml 中 對(duì)代碼解析如右邊所示
ListView中 android:id="@+id/android:list" 系統(tǒng)給定的list 的ID
android:layout_width="fill_parent" 設(shè)置為填滿(mǎn)父窗口
android:layout_height="fill_parent"
android:scrollbars="vertical" 設(shè)置播放列表為垂直方向Te*tView 中 android:id="@id/android:empty" 沒(méi)歌曲時(shí)顯示空列表
android:te*tSize="20sp" 設(shè)定顯示字大小
android:te*t="@string/no_songs" 設(shè)置要顯示的字
播放列表顯示的時(shí)候ListView和TestView中只能顯示一個(gè),當(dāng)播放列表有歌曲的時(shí)候顯示ListView,沒(méi)歌曲的時(shí)候顯示Te*tView。這是由于吧Te*tView的id設(shè)為了android:empty,當(dāng)沒(méi)有數(shù)據(jù)顯示的時(shí)候,id為android:empty的view自動(dòng)被顯示。
songabout.*ml 設(shè)置歌名歌手專(zhuān)輯在界面的左邊,歌曲總時(shí)間設(shè)置在右上角
用相對(duì)布局來(lái)設(shè)定各個(gè)控件的位置比較方便,可以控制各個(gè)控件之間的相對(duì)位置關(guān)系。
布局文件代碼片段如下所示 對(duì)代碼的注釋如右邊所示
android:id="@+id/track_name" 設(shè)置歌名id
android:singleLine="true" 設(shè)置單行顯示
android:id="@+id/artist" 設(shè)定歌手id
android:layout_below="@+id/track_name"設(shè)置歌手信息顯示在歌名的底下
android:id="@+id/album" 設(shè)定專(zhuān)輯id
android:layout_below="@+id/artist"
android:id="@+id/duration" 設(shè)定歌曲總時(shí)間的id
android:layout_alignParentRight="true"歌曲總時(shí)間設(shè)置在右上角
(2)播放界面
歌曲播放界面如下圖所示
播放界面中設(shè)置了
1 顯示的歌曲信息(歌名歌手專(zhuān)輯)
2 歌曲播放控制按鈕(開(kāi)始暫停停止上一曲下一曲)
3 音量調(diào)節(jié)進(jìn)度條
4 歌曲播放進(jìn)度條,當(dāng)前歌曲播放時(shí)間和歌曲總時(shí)間
要用到一個(gè)布局文件 play.*ml ,play.*ml的布局文件結(jié)構(gòu)如下
*ml version="1.0" encoding="utf-8"?>
收藏《畢業(yè)論文:ANDROID音樂(lè)播放器》)