国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android編程實現(xiàn)播放音頻的方法示例

2019-10-22 18:31:13
字體:
供稿:網(wǎng)友

本文實例講述了Android編程實現(xiàn)播放音頻的方法。分享給大家供大家參考,具體如下:

在 Android 中播放音頻文件一般都是使用 MediaPlayer 類來實現(xiàn)的,它對多種格式的音 頻文件提供了非常全面的控制方法,從而使得播放音樂的工作變得十分簡單。下表列出了 MediaPlayer 類中一些較為常用的控制方法。

 

方法名

功能描述

setDataSource()

設(shè)置要播放的音頻文件的位置。

prepare()

在開始播放之前調(diào)用這個方法完成準(zhǔn)備工作。

start()

開始或繼續(xù)播放音頻。

pause()

暫停播放音頻。

reset()

將 MediaPlayer 對象重置到剛剛創(chuàng)建的狀態(tài)。

seekTo()

從指定的位置開始播放音頻。

stop()

停止播放音頻。調(diào)用這個方法后的 MediaPlayer 對象無法再播放音頻。

release()

釋放掉與 MediaPlayer 對象相關(guān)的資源。

isPlaying()

判斷當(dāng)前 MediaPlayer 是否正在播放音頻。

getDuration()

獲取載入的音頻文件的時長。


 

簡單了解了上述方法后,我們再來梳理一下 MediaPlayer 的工作流程。首先需要創(chuàng)建出一個 MediaPlayer 對象,然后調(diào)用 setDataSource()方法來設(shè)置音頻文件的路徑,再調(diào)用 prepare()方法使 MediaPlayer 進(jìn)入到準(zhǔn)備狀態(tài),接下來調(diào)用 start()方法就可以開始播放音頻,調(diào)用 pause()方法就會暫停播放,調(diào)用 reset()方法就會停止播放。 下面就讓我們通過一個具體的例子來學(xué)習(xí)一下吧,新建一個 PlayAudioTest 項目,然后修改 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>

布局文件中橫向放置了三個按鈕,分別用于對音頻文件進(jìn)行播放、暫停和停止操作。然 后修改 MainActivity 中的代碼,如下所示:

public class MainActivity extends Activity implements OnClickListener {private Button play;private Button pause;private Button stop;private MediaPlayer mediaPlayer = new MediaPlayer();@Overrideprotected 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();}}@Overridepublic 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;}}@Overrideprotected void onDestroy() {super.onDestroy();if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.release();}}}

可以看到,在類初始化的時候我們就創(chuàng)建了一個 MediaPlayer 的實例,然后在 onCreate() 方法中調(diào)用了 initMediaPlayer()方法為 MediaPlayer 對象進(jìn)行初始化操作。在 initMediaPlayer() 方法中,首先是通過創(chuàng)建一個 File 對象來指定音頻文件的路徑,從這里可以看出,我們需要 事 先 在 SD 卡 的 根 目 錄 下 放 置 一 個 名 為 music.mp3 的 音 頻 文 件 。 后 面 依 次 調(diào) 用 了 setDataSource()方法和 prepare()方法為 MediaPlayer 做好了播放前的準(zhǔn)備。

接下來我們看一下各個按鈕的點擊事件中的代碼。當(dāng)點擊 Play 按鈕時會進(jìn)行判斷,如 果當(dāng)前 MediaPlayer 沒有正在播放音頻,則調(diào)用 start()方法開始播放。當(dāng)點擊 Pause 按鈕時會 判斷,如果當(dāng)前 MediaPlayer 正在播放音頻,則調(diào)用 pause()方法暫停播放。當(dāng)點擊 Stop 按鈕 時會判斷,如果當(dāng)前 MediaPlayer 正在播放音頻,則調(diào)用 reset()方法將 MediaPlayer 重置為剛 剛創(chuàng)建的狀態(tài),然后重新調(diào)用一遍 initMediaPlayer()方法。

最后在 onDestroy()方法中,我們還需要分別調(diào)用 stop()release()方法,將與 MediaPlayer相關(guān)的資源釋放掉。 這樣一個簡易版的音樂播放器就完成了,現(xiàn)在將程序運(yùn)行到手機(jī)上,界面如圖所示:

Android,播放,音頻

點擊一下 Play 按鈕就可以聽到優(yōu)美的音樂了,然后點擊 Pause 按鈕聲音會停住,再次點 擊 Play 按鈕會接著暫停之前的位置繼續(xù)播放。這時如果點擊一下 Stop 按鈕聲音也會停住, 但是再次點擊 Play 按鈕時,音樂就會重頭開始播放了。

希望本文所述對大家Android程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新乐市| 鄂温| 湟源县| 日喀则市| 二连浩特市| 板桥市| 托克逊县| 贞丰县| 武邑县| 呼和浩特市| 和顺县| 台北县| 蕲春县| 都江堰市| 那曲县| 红原县| 丽江市| 思茅市| 太仆寺旗| 信丰县| 和田县| 普定县| 乌拉特前旗| 黎川县| 监利县| 昂仁县| 合阳县| 原平市| 平泉县| 兴义市| 平南县| 剑河县| 志丹县| 永州市| 桐庐县| 无为县| 乌什县| 曲阳县| 峡江县| 庐江县| 祁门县|