2015. 8. 13.

Android MediaPlayer

Android의 동영상 재생 or 음성재생이 가능한 MediaPlayer API를 사용하였다.

이번 소스는 음성만 재생하는 간단한 소스이다.

MediaPlayer class는 따로 두었다.
아래는 MediaRecord소스이다.


import android.media.MediaPlayer;
import android.os.Environment;
import android.util.Log;

import java.io.File;

/**
 * Created by sona
 */
public class MediaPlayer {

    private final String TAG = "MediaPlayer";
    private final File RECORDED_FILE = Environment.getExternalStorageDirectory();

    private MediaPlayer player;
    private String mFileName;

    public MediaPlayer() {
        mFileName = RECORDED_FILE.getAbsolutePath()+"/audio_milo.mp3";
    }

    /**
     *  Audio Play
     */
    public void play(){
        if (player != null) {
            player.stop();
            player.release();
            player = null;
        }
        Log.d(TAG, "PLAY AUDIO");
        try {
            player = new MediaPlayer();
            player.setDataSource(mFileName);

            player.prepare();
            player.start();
        } catch (Exception e) {
            Log.e(TAG, "Audio play failed.", e);
        }
    }
    /**
     * Audio Play Pause
     */
    public void playPause(){
        if(player.isPlaying()){
            player.pause();
        } else {
            player.start();
        }
    }
    /**
     *  Audio Play Stop
     */
    public void playStop(){
        if (player == null)
            return;
        Log.d(TAG,"PLAY STOP");

        player.stop();
        player.release();
        player = null;
    }

    /**
     *  Mediaplayer Release
     */
    public void release(){
        if (player != null) {
            player.release();
            player = null;
        }
    }

    /**
     * MediaPlayer Seek duration
     * @param frame : video player frame (Refer : MLPlayer.onPlaying)
     */
    public void seekTo(int frame){
        if(player != null){
            player.seekTo(frame * 1000);
        }

    }

아래는 activity에서 test로 사용하는 코드이다.



import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;


public class MediaRecordActivity extends Activity implements View.OnClickListener{

    private Button          audioRecordPlay;
    private Button          audioRecordPlayStop;
    private Button          audioSeekButton;

    private MediaPlayer   mediaPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.media_activity);
        initialize();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mediaPlayer.release();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.record_button:
                mediaPlayer.start();
                break;
            case R.id.record_stop_button:
                mediaPlayer.stop();
                break;
            case R.id.play_start_button:
                mediaPlayer.play();
                break;
            case R.id.play_stop_button:
                mediaPlayer.playPause();
                break;
            case R.id.seek_button:
                // seekTo unit = millisecond
                mediaPlayer.seekTo(3000);
                break;
        }
    }

    private void initialize(){

        audioRecordPlay          = (Button) findViewById(R.id.play_start_button);
        audioRecordPlayStop   = (Button) findViewById(R.id.play_stop_button);
        audioSeekButton          = (Button) findViewById(R.id.seek_button);

        audioRecordPlay.setOnClickListener(this);
        audioRecordPlayStop.setOnClickListener(this);
        audioSeekButton.setOnClickListener(this);

        mediaPlayer = new MediaPlayer();
    }
}

댓글 없음:

댓글 쓰기