[Android] MediaPlayer

개요

Android에서 미디어를 재생할 때 재생 속도를 조절하려고 한다. 어떻게 해야할까?

Android MediaPlayer

랄라는 MediaPlayer[1]를 이용하여 개발하였다. 초기에는 속도 조절 기능이 없었으니 마쉬멜로우(Ver.23)[2]부터 속도, 피치 등을 조절할 수 있게 되었다.

PlaybackParams

PlayerbackParams[3]는 미디어 재생을 위해 필요한 컨트롤 정보를 담는 파라메터이다. 재생속도(speed), 높낮이(pitch), Fallback mode 등을 설정할 수 있다. 구현하고자 했던 속도 조절은 아래와 같이 할 수 있다.

private boolean setPlaySpeed(float speed) {
//마쉬멜로우 버전 이상일 때,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
//기존 미디어 플레이어의 파라미터(playbackparams)를 가져와서
PlaybackParams params = mediaPlayer.getPlaybackParams();
//속도만 변경할 다음
params.setSpeed(speed);
//미디어 플레이어에 다시 설정해주면 속도가 변한다.
mediaPlayer.setPlaybackParams(params);
return true;
} catch (Exception e) {
//하지만 Exception이 뜬다면 어떨까!?!?!
Log.e(TAG, "setPlaySpeed: ", e);
return false;
}
}
return false;
}

AudioFallbackMode(int audioFallbackMode)

오디어 재생에 실패했을 때? 파라미터를 잘못 설정했을 때?의 상태를 설정할 수 있다. 세 가지 타입으로 설정할 수 있는데,

  • AUDIO_FALLBACK_MODE_DEFAULT : Default 값으로 시스템이 판단한 최고의 동작을 수행
  • AUDIO_FALLBACK_MODE_FAIL : 아웃
  • AUDIO_FALLBACK_MODE_MUTE : IllegalArgumentException를 반환

참조

[1] https://developer.android.com/guide/topics/media/mediaplayer?hl=ko [2] https://developer.android.com/reference/android/os/Build.VERSION_CODES#M [3] https://developer.android.com/reference/android/media/PlaybackParams#setSpeed(float)