Android編程實(shí)現(xiàn)播放音頻的方法示例
本文實(shí)例講述了Android編程實(shí)現(xiàn)播放音頻的方法。分享給大家供大家參考,具體如下:
在 Android 中播放音頻文件一般都是使用 MediaPlayer 類來實(shí)現(xiàn)的,它對(duì)多種格式的音 頻文件提供了非常全面的控制方法,從而使得播放音樂的工作變得十分簡單。下表列出了 MediaPlayer 類中一些較為常用的控制方法。
|
方法名 |
功能描述 |
|
setDataSource() |
設(shè)置要播放的音頻文件的位置。 |
|
prepare() |
在開始播放之前調(diào)用這個(gè)方法完成準(zhǔn)備工作。 |
|
start() |
開始或繼續(xù)播放音頻。 |
|
pause() |
暫停播放音頻。 |
|
reset() |
將 MediaPlayer 對(duì)象重置到剛剛創(chuàng)建的狀態(tài)。 |
|
seekTo() |
從指定的位置開始播放音頻。 |
|
stop() |
停止播放音頻。調(diào)用這個(gè)方法后的 MediaPlayer 對(duì)象無法再播放音頻。 |
|
release() |
釋放掉與 MediaPlayer 對(duì)象相關(guān)的資源。 |
|
isPlaying() |
判斷當(dāng)前 MediaPlayer 是否正在播放音頻。 |
|
getDuration() |
獲取載入的音頻文件的時(shí)長。 |
簡單了解了上述方法后,我們?cè)賮硎崂硪幌?MediaPlayer 的工作流程。首先需要?jiǎng)?chuàng)建出一個(gè) MediaPlayer 對(duì)象,然后調(diào)用 setDataSource()方法來設(shè)置音頻文件的路徑,再調(diào)用 prepare()方法使 MediaPlayer 進(jìn)入到準(zhǔn)備狀態(tài),接下來調(diào)用 start()方法就可以開始播放音頻,調(diào)用 pause()方法就會(huì)暫停播放,調(diào)用 reset()方法就會(huì)停止播放。 下面就讓我們通過一個(gè)具體的例子來學(xué)習(xí)一下吧,新建一個(gè) PlayAudioTest 項(xiàng)目,然后修改 activity_main.xml 中的代碼,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" /> <Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" /> <Button android:id="@+id/stop" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Stop" /> </LinearLayout>
布局文件中橫向放置了三個(gè)按鈕,分別用于對(duì)音頻文件進(jìn)行播放、暫停和停止操作。然 后修改 MainActivity 中的代碼,如下所示:
public class MainActivity extends Activity implements OnClickListener {
private Button play;
private Button pause;
private Button stop;
private MediaPlayer mediaPlayer = new MediaPlayer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.play);
pause = (Button) findViewById(R.id.pause);
stop = (Button) findViewById(R.id.stop); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this);
initMediaPlayer(); // 初始化MediaPlayer
}
private void initMediaPlayer() {
try {
File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
mediaPlayer.setDataSource(file.getPath()); // 指定音頻文件的路徑
mediaPlayer.prepare(); // 讓MediaPlayer進(jìn)入到準(zhǔn)備狀態(tài)
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start(); // 開始播放
}
break;
case R.id.pause:
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause(); // 暫停播放
}
break;
case R.id.stop:
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset(); // 停止播放
initMediaPlayer();
}
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
}
可以看到,在類初始化的時(shí)候我們就創(chuàng)建了一個(gè) MediaPlayer 的實(shí)例,然后在 onCreate() 方法中調(diào)用了 initMediaPlayer()方法為 MediaPlayer 對(duì)象進(jìn)行初始化操作。在 initMediaPlayer() 方法中,首先是通過創(chuàng)建一個(gè) File 對(duì)象來指定音頻文件的路徑,從這里可以看出,我們需要 事 先 在 SD 卡 的 根 目 錄 下 放 置 一 個(gè) 名 為 music.mp3 的 音 頻 文 件 。 后 面 依 次 調(diào) 用 了 setDataSource()方法和 prepare()方法為 MediaPlayer 做好了播放前的準(zhǔn)備。
接下來我們看一下各個(gè)按鈕的點(diǎn)擊事件中的代碼。當(dāng)點(diǎn)擊 Play 按鈕時(shí)會(huì)進(jìn)行判斷,如 果當(dāng)前 MediaPlayer 沒有正在播放音頻,則調(diào)用 start()方法開始播放。當(dāng)點(diǎn)擊 Pause 按鈕時(shí)會(huì) 判斷,如果當(dāng)前 MediaPlayer 正在播放音頻,則調(diào)用 pause()方法暫停播放。當(dāng)點(diǎn)擊 Stop 按鈕 時(shí)會(huì)判斷,如果當(dāng)前 MediaPlayer 正在播放音頻,則調(diào)用 reset()方法將 MediaPlayer 重置為剛 剛創(chuàng)建的狀態(tài),然后重新調(diào)用一遍 initMediaPlayer()方法。
最后在 onDestroy()方法中,我們還需要分別調(diào)用 stop()和 release()方法,將與 MediaPlayer相關(guān)的資源釋放掉。 這樣一個(gè)簡易版的音樂播放器就完成了,現(xiàn)在將程序運(yùn)行到手機(jī)上,界面如圖所示:

點(diǎn)擊一下 Play 按鈕就可以聽到優(yōu)美的音樂了,然后點(diǎn)擊 Pause 按鈕聲音會(huì)停住,再次點(diǎn) 擊 Play 按鈕會(huì)接著暫停之前的位置繼續(xù)播放。這時(shí)如果點(diǎn)擊一下 Stop 按鈕聲音也會(huì)停住, 但是再次點(diǎn)擊 Play 按鈕時(shí),音樂就會(huì)重頭開始播放了。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android開發(fā)入門與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android MediaPlayer 音頻倍速播放 調(diào)整播放速度問題
- Android MediaPlayer 播放音頻的方式
- 詳解Android開發(fā)錄音和播放音頻的步驟(動(dòng)態(tài)獲取權(quán)限)
- Android使用SoundPool實(shí)現(xiàn)播放音頻
- Android自定義View實(shí)現(xiàn)音頻播放圓形進(jìn)度條
- Android多媒體應(yīng)用使用SoundPool播放音頻
- Android多媒體應(yīng)用使用MediaPlayer播放音頻
- Android開發(fā)之MediaPlayer多媒體(音頻,視頻)播放工具類
- Android錄制聲音文件(音頻)并播放
- Android音頻處理之通過AudioRecord去保存PCM文件進(jìn)行錄制,播放,停止,刪除功能
- Android App中使用AudioManager類來編寫音頻播放器
- Android提高之MediaPlayer播放網(wǎng)絡(luò)音頻的實(shí)現(xiàn)方法
- android實(shí)現(xiàn)小音頻頻繁播放
相關(guān)文章
Android?Flutter實(shí)現(xiàn)創(chuàng)意時(shí)鐘的示例代碼
時(shí)鐘這個(gè)東西很奇妙,總能當(dāng)做創(chuàng)意實(shí)現(xiàn)的入口。這篇文章主要介紹了如何通過Android?Flutter實(shí)現(xiàn)一個(gè)創(chuàng)意時(shí)鐘,感興趣的小伙伴可以了解一下2023-03-03
Android 雙進(jìn)程守護(hù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 雙進(jìn)程守護(hù)的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
android基礎(chǔ)總結(jié)篇之九:Intent應(yīng)用詳解
這篇文章主要介紹了android基礎(chǔ)總結(jié)篇之九:Intent應(yīng)用詳解,有需要的可以了解一下。2016-11-11
android TextView不用ScrollViewe也可以滾動(dòng)的方法
這篇文章主要介紹了android TextView不用ScrollViewe也可以滾動(dòng)的方法,很簡單實(shí)用的代碼,大家參考使用吧2013-11-11
實(shí)現(xiàn)輪轉(zhuǎn)廣告帶底部指示的自定義ViewPager控件
在項(xiàng)目中經(jīng)常需要使用輪轉(zhuǎn)廣告的效果,在android-v4版本中提供的ViewPager是一個(gè)很好的工具,而一般我們使用Viewpager的時(shí)候,都會(huì)選擇在底部有一排指示物指示當(dāng)前顯示的是哪一個(gè)page,下面我們就做這個(gè)功能的實(shí)現(xiàn)2013-11-11
Android實(shí)現(xiàn)網(wǎng)絡(luò)圖片瀏覽器
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)網(wǎng)絡(luò)圖片瀏覽器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
ViewPager 滑動(dòng)一半的判斷方法以及左滑右滑判斷實(shí)例
下面小編就為大家?guī)硪黄猇iewPager 滑動(dòng)一半的判斷方法以及左滑右滑判斷實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04

