1. 程式人生 > >Android MediaPlayer 播放各種來源的音訊檔案,特效控制

Android MediaPlayer 播放各種來源的音訊檔案,特效控制

這裡寫圖片描述

MediaPlayer通過資源ID播放Raw目錄下音訊資原始檔:

MediaPlayer mMediaPlayer;
mMediaPlayer  = MediaPlayer.create(this, R.raw.bomb); // 
mMediaPlayer.setLooping(true); // 設定迴圈播放
mMediaPlayer.start(); // 開始播放
mMediaPlayer.stop(); // 停止播放

// 設定播放下一首音訊的程式碼
mMediaPlayer.reset(); // reset MediaPlayer
try {
    mMediaPlayer.setDataSource("/mnt/sdcard/next.mp3"
); // 指定要播放的音訊檔案 mMediaPlayer.prepare(); // MediaPlayer 預處理 mMediaPlayer.start(); // 開始播放 mMediaPlayer.stop(); // 停止播放 } catch (IOException e) { e.printStackTrace(); }

MediaPlayer播放Asset目錄下音訊檔案:

AssetManager assetManager = getAssets();
        try {
            AssetFileDescriptor afd = assetManager.openFd
("one.mp3"); MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(afd.getFileDescriptor() , afd.getStartOffset() , afd.getLength()); mediaPlayer.prepare(); mediaPlayer.start(); mediaPlayer.stop
(); } catch (IOException e) { e.printStackTrace(); }

MediaPlayer播放外部儲存器上的音訊檔案:

try {
    mMediaPlayer.setDataSource("/mnt/sdcard/next.mp3"); // 指定要播放的音訊檔案
    mMediaPlayer.prepare(); // MediaPlayer 預處理
    mMediaPlayer.start(); // 開始播放
    mMediaPlayer.stop();  // 停止播放
} catch (IOException e) {
    e.printStackTrace();
}

MediaPlayer播放來自網路的音訊檔案:

        Uri uri = Uri.parse("http://192.168.8.88/audio/abc.mp3");
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(this, uri); // 根據URI裝載音訊檔案
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }

MediaPlayer 事件監聽器:

mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {

            }
        });

        mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                return false;
            }
        });

        mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {

            }
        });

        mMediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
            @Override
            public void onSeekComplete(MediaPlayer mp) {

            }
        });

        mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
            @Override
            public void onBufferingUpdate(MediaPlayer mp, int percent) {

            }
        });

        mMediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
            @Override
            public boolean onInfo(MediaPlayer mp, int what, int extra) {
                return false;
            }
        });

音訊特效控制:

  • AcousticEchoCanceler:取消回聲控制器
  • AutomaticGainControl:自動增益控制器
  • NoiseSuppressor:噪音壓制控制器
  • BassBoost:重低音控制器
  • Equalizer:均衡控制器
  • PresetReverb:預設音聲控制器
  • Visualizer:示波器