Android音頻播放

   Android中的音頻播放主要藉助於MediaPlayer類來實現的,貌似他很神祕,但其實很簡單,我們一起來看看他的廬山真面目吧。

   一:MediaPalyer的生命週期

   下面的這幅圖,是在網上找的,這裏我們只針對其中的幾個特殊的方法,進行說明:

   1:當一個MediaPlayer創建或者調用reset()方法之後,他處於空閒IDLE狀態,在調用release之後,纔會處於結束end狀態

   2:任何一個MediaPlayer都必須處於準備狀態,然後纔開始播放。要開始播放必須調用start方法。

   3:當MediaPlayer對象正在播放時,可以進行暫停與停止等操作,pause方法暫停,stop方法停止。處於暫停態的MediaPlayer可以通過start方法恢復播放,即從暫停的位置處繼續播放;而處於停止態的必須通過prepare使之處於準備狀態後,然後調用start方法開始播放

   二:常用方法

   1:構造方法

   (1)static MediaPlayer create(Context context,Uri uri):通過URI指定的音頻創建一個多媒體播放器

   (2)static MediaPlayer create(Context context,int resId):通過資源ID創建一個多媒體播放器

   2:獲得屬性

   (1)int getCurrentPosition():得到當前的播放位置

   (2)int getDuration():獲得播放文件的總時長

   (3)int getVideoheight():獲得視頻的高度

   (4)int getVideoWidth():獲得視頻的寬度

   3:判斷狀態

   (1)boolean isLooping():是否循環播放

   (2)boolean isPlaying():是否正在播放

   4:設置屬性

   (1)void seekTo(int mesc):設置指定的播放位置(以毫秒爲單位)

   (2)void setDateSourece(String path):根據路徑設置多媒體數據的來源

   (3)void setDateSourece(FileDescriptor file):根據FileDescriptor設置多媒體數據的來源

   (4)void setDateSourece(Uri uri):根據URI設置多媒體數據的來源

   5:常用事件

   (1)void prepare():準備資源

   (2)void start():開始播放

   (3)void pause():暫停播放

   (4)void stop():停止播放

   三:音頻的播放

   根據音頻的來源,可以分爲三種,分別爲本地資源(應用程序內部)、內部的URL指向的資源(SDcard中)和外部的URL指向的資源(網絡中)。這裏我們只說明其中的第一種方式

本地資源

   (1)在res文件夾下創建文件名必須爲raw的文件,來存放音頻等。根據資源創建MediaPlayer

MediaPlayer mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.shijian);

   (2)調用MediaPlayer的start方法播放音樂

mediaPlayer.start();

    (3)結果:單擊start按鈕之後,播放音樂。(這裏沒有做停止操作,所以不要輕易嘗試哦)

   四:簡單的音樂播放器的製作

功能:在頁面上放置三個按鈕,實現單擊start開始播放,單擊pause後暫停播放,在單擊start後從停止的地方開始播放,單擊stop後停止播放。

   ◆具體實現:

   (1)根據本地資源,創建MediaPlayer對象

mediaPlayer = MediaPlayer.create(this, R.raw.shijian);

   (2)爲三個按鈕添加監聽事件

@Override
    public void onClick(View arg0) {  
        switch (arg0.getId()) {
        case R.id.start:
            mediaPlayer.start();//播放音樂
            break;
        case R.id.pause:
                                                             
            mediaPlayer.pause();//暫停播放
            break;
                                                             
        case R.id.stop://停止播放的實現
            mediaPlayer.pause();//先暫停
            mediaPlayer.seekTo(0);//然後設置文件的播放其實位置
            break;
        }
                                                         
    }
    @Override
    protected void onDestroy() {
        mediaPlayer.stop();//實現的是當應用程序退出之後,音樂的全部停止播放
        super.onDestroy();
    }

   ◆結果:真正的實現了Mediaplayer的生命週期中比較重要的幾個時期。可以自運行試一下。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章