게임 혹은 자신이 원해서 BGM 사운드 등을 끊임없이
자연스럽게 반복시킬 필요가 있다. MP3 플레이어의 자동 재생 처럼 말이다.
그냥 loop() 메서드 등을 사용하면, 뚝! 하고 끊기는 음이 들린다. 즉, 해당 노이즈 가 발생해서 부드럽지 못하다.
그렇기에 하기 코드를 이용하면, 다음 곡을 미리 버퍼링 해두기에 부드럽게 연결이 가능하다.
물론 안드로이드 기기 성능에 따라 조금의 차이는 있을 수 있다.
class LoopMediaPlayer { public static final String TAG = LoopMediaPlayer.class.getSimpleName(); private Context mContext = null; private int mResId = 0; private int mCounter = 1;
private MediaPlayer mCurrentPlayer = null; private MediaPlayer mNextPlayer = null;
public static LoopMediaPlayer create(Context context, int resId) { return new LoopMediaPlayer(context, resId); }
public LoopMediaPlayer(Context context, int resId) { mContext = context; mResId = resId;
mCurrentPlayer = MediaPlayer.create(mContext, mResId); createNextMediaPlayer(); }
public void stop() {
mCurrentPlayer.stop(); }
public void start() {
mCurrentPlayer.start(); }
public void pause() {
mCurrentPlayer.pause(); }
public void release() {
mCurrentPlayer.release(); }
public void setVolume(float left, float right){
mCurrentPlayer.setVolume(left, right); }
public void setLooping(boolean loop){
mCurrentPlayer.setLooping(loop); }
public boolean isPlaying(){
return mCurrentPlayer.isPlaying(); }
private void createNextMediaPlayer() { mNextPlayer = MediaPlayer.create(mContext, mResId); mCurrentPlayer.setNextMediaPlayer(mNextPlayer); mCurrentPlayer.setOnCompletionListener(onCompletionListener);
} private MediaPlayer.OnCompletionListener onCompletionListener = new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayermediaPlayer) { mediaPlayer.release(); mCurrentPlayer = mNextPlayer; createNextMediaPlayer(); } }; } |
즉, 위의 붉은 코드에서 처럼
현재 미디어 소스 재생시 다음 곡을 미리 설정하여 버퍼링 하고,
음원이 끝날때 메모리 해제 및 자연스럽게 다음곡을 재생하면서 연이어 곡을 반복하게 해주는 코드이다.
만약에 한곡을 현재, 다음곡으로 설정해준다면
노이즈 없이 아주 부드럽게 계속 반복되는 코드가 되는 것이다.
이렇게 탄생한 앱이 바로 "Rain Sound ☆ 빗소리" 이다.
오늘도 필자의 티스토리를 찾아주셔서 감사드립니다.
좋은 하루보내세요. 감사합니다.
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
갤러리 뷰 만들어보기 (안드로이드 스튜디오) (5) | 2020.06.11 |
---|---|
custom toast 만들기 (4) | 2020.06.08 |
안드로이드 비트맵 로딩하기 - Glide 사용하기(3) (4) | 2020.05.18 |
안드로이드 GIF 이미지 재생 하기 - Glide 사용하기(2) (12) | 2020.05.12 |
안드로이드 화면 전환 방법. (6) | 2020.05.11 |
댓글