마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MediaPlayer의 setVolume 이 동작하지 않습니다다

0 추천
MediaPlayer kPlayer = MediaPlayer.create(this, R.raw.bgm_event);
kPlayer.start();
kPlayer.setVolume(0.01f, 0.01f);

 

재생하려는 파일이 955KB 짜리 bgm_main.mp3와 977KB짜리 bgm_event.mp3, 467KB짜리 bgm_end.mp3가 있습니다.

(상관있는지는 모르겠지만) 샘플율은 모두 48,000입니다.

셋 다 소리는 납니다.

 

bgm_main은 음량 조절이 잘 됩니다.

하지만 나머지 두 파일은 setVolume을 해도 소리가 항상 제일 크게 나옵니다.

prepare()도 해봤고, setVolume을 start()하기 전에 호출해도 역시나 변함이 없습니다.

 

도대체 무엇이 문제인가요?

 

쎄미 (162,410 포인트) 님이 2013년 6월 12일 질문
에뮬레이터에서는 잘 되는걸보니 제 폰이 문제였네요 -_-

2개의 답변

0 추천
setVolume 의 범위는 0~1 까지인데 0.01은 값이 너무 작아 적용이 안되지 않나싶네요

 

확연히 차이가 날 수 있게 0.2, 0.5, 0.8 뭐 이런식으로 넣어서 테스트 해보세요
Gradler (109,780 포인트) 님이 2013년 6월 12일 답변
숫자를 바꿨어도 음량은 똑같아요....
게다가 0.01은 bgm_main 은 작게 잘 들리구요...
도대체 뭐가 문제일까요?
0 추천
AudioManager의 setVolumeControlStream을 써보시는 어떨까요?

 

 

//볼륨컨트롤러 미디어볼륨으로만 나오게
setVolumeControlStream (AudioManager.STREAM_MUSIC);

//* 값 범위 : 1~15
AudioManager audio = null;
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

//음량 늘이는 소스
audio.setStreamVolume(AudioManager.STREAM_MUSIC,
    (int)(audio.getStreamVolume(AudioManager.STREAM_MUSIC) + 1), // 1씩 늘림
    0);

//음량 줄이는 소스
audio.setStreamVolume(AudioManager.STREAM_MUSIC,
    (int)(audio.getStreamVolume(AudioManager.STREAM_MUSIC) - 1), // 1씩 줄임
    0);
푸어어엉111 (610 포인트) 님이 2013년 6월 13일 답변
네 저도 이걸로 해봤었어요.
근데 목소리랑 bgm이랑 같이 재생돼야 하는건데, set stream type이 music으로 밖에 안되더라구요 -_-;;;
그래서 이렇게 음량을 줄이면 목소리까지 같이 줄어들더라구요...
목소리는 stream_voice_call 같은걸로 주면 아예 재생이 안되구요...

결국은 폰 상태가 이상해서 였어요...ㅠㅠ
...