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

두개의 mediaplayer를 제어를 하려고 합니다..그런데 볼륨쪽 조절이 안됩니다...

0 추천
if (base_sound.isPlaying()) {

 int currVol = 10;
 audioManager1.setStreamVolume(AudioManager.STREAM_MUSIC, currVol,
     AudioManager.FLAG_PLAY_SOUND);
} else if (action_sound.isPlaying()) {

 int currVol = 5;
 audioManager1.setStreamVolume(AudioManager.STREAM_MUSIC, currVol,
     AudioManager.FLAG_PLAY_SOUND);
}

관련 정보를 찾으려고 해도 없고 여러가지 방법을 사용을 해보았지만 적용이 안되어서  글을 올립니다.

현재 base, action mediaplayer(용량이 각 21KB, 117KB)로 구성을 하고 있습니다. 그리고 base를 start 하면 action은 pause를 하고 반대로 action이 start 하면 base를 pause를 하고 있습니다. 그리고 이것을 위의 소스 처럼 해 보았지만 현재 볼륨 상태만 적용이 되고 있습니다...제가 올린 소스가 잘 못 되었나요?? 잘 못 되었다면 어느 부분이 잘 못 되었는지...

그리고 soundpool을 사용을 해보았지만 안되어서 여러가지 정보를 검색해 보니 용량이 좀 크다고 하더군요...

어떻게 사운드를 잡아야될지...ㅜㅜ 알려주시면 감사하겠습니다...ㅜㅜ

안왕초보 (1,390 포인트) 님이 2014년 2월 28일 질문

1개의 답변

+1 추천
 
채택된 답변
볼륨은 사운드를 재생하는 액티비티의  onCreate 메소드에 setVolumeControlStream(AudioManager.STREAM_MUSIC); 코드를 넣으면 볼륨 업다운 버튼으로 조정할 수 있습니다. Media Player 각각에 볼륨을 지정할 필요가 없는데요. 혹시 그렇게 하는 이유가 있나요?

 

버튼을 누르면 음악을 재생하는 예제를 만들었습니다. 버튼을 누르면 다른 음악으로 변경됩니다. 볼륨 버튼으로 볼륨을 조절할 수 있습니다.

 

http://blog.naver.com/goodsogi/40207499798
방귀과장 (18,940 포인트) 님이 2014년 2월 28일 답변
안왕초보님이 2014년 2월 28일 채택됨
제 폰에서는 setVolume 메소드가 제대로 작동하지 않습니다. 0과 1사이의 값을 넣었습니다. AudioManager의 getStreamVolume으로 현재 볼륨값을 확인해보니 변경이 안되고 같은 값입니다.

안왕초보님의 방법으로 해보니 제 폰에서는 볼륨이 조절이 되는데요. 아래 링크의 코드를 사용하여 테스트해보세요. raw 폴더에 mp3 음악 2개를 넣고 하나는 music1, 다른 하나는 music2라고 이름을 붙이면 됩니다. 버튼을 누르면 현재 볼륨값이 토스트로 뜨는데 변경이 되었다는 것을 확인할 수 있을 겁니다.

http://blog.naver.com/goodsogi/40207499798
토스트로 확인 해보니깐 지금 안 넘어가네요....
현재 블루투스로 특정 값을 받으면 바뀌는 것으로 해놨는데..토스트 자체가 안 뜨내요...

if (action_sound.isPlaying()) {
            int currVol = RPM_value / 300;

            audioManager1
                    .setStreamVolume(AudioManager.STREAM_MUSIC, currVol, 0);
            Toast.makeText(this, "ACTION SOUND", Toast.LENGTH_LONG).show();

        } else {
            int curr = 5;

            audioManager1.setStreamVolume(AudioManager.STREAM_MUSIC, curr, 0);
            Toast.makeText(this, "BASE SOUND", Toast.LENGTH_LONG).show();
        }

if (RPM_value > 850) {
                            base_sound.pause();
                            action_sound.start();
                            // SoundRacerActivity.this.startVol();
                           

                        } else {
                            action_sound.pause();
                            base_sound.start();

                            // SoundRacerActivity.this.stopVol();
                           
                        }
디버그 해보셨나요?  Toast 부분 코드는 타나요? 토스트가 안 뜨면 에러가 발생할 텐데요.
아 해결 했습니다. 그냥 특정 값을 if(RPM_value > 850) 문에 넣으니 작동 하네요 ㅎㅎ
...