티스토리 뷰

mp3 파일을 Loud Speaker 같은 Media 말고, 전화를 수발신할때, 귀에 갖다대는 수화기 스피커에서 재생시키는 방법이다.


사용 클래스 : SoundPool


############################## 롤리팝 이전 버전 ######################################

1. 초기화


SoundPool sp = new SoundPool(10, AudioManager.STREAM_VOICE_CALL, 0);


SoundPool 초기 생성자는 

SoundPool([최대스트림수], [미디어 종류], [품질]);

이라고 한다.


두번째 변수인 미디어 종류를 VOICE_CALL로 변경하면 수화기에서 음악재생이 가능하다.



2. 파일 로드

int sound = sp.load(c, R.raw.ring, 1);

안드로이드 raw 폴더에 ring.mp3라는 파일을 넣어놓고, 먼저 초기화한 sp객체에 ring을 집어넣어준다.


3. 재생

int stream = sp.play(sound, 0.03f, 0.03f, 0, -1, 1);


2번에서 로드하고 난 리턴값 (sound)를 넣으며 ply한다. 

play 파라미터는 

play([로드값], [좌측볼륨], [우측볼륨], [우선순위], [반복여부], [속도]);

이다, 

무한 반복을 하고싶다면, -1을 넣으면 된다.




4. 멈춤.

sp.stop(stream);

멈추는 코드는 따로 설명이 피룡없을듯.

3번에서 딴 stream int 값을 넣으며 멈추면 된다.



5. 예외 (+ 추가, 2015. 04. 28)

안드로이드..

우선 현재까지 테스트해본 결과

삼성 갤럭시 윈, 

삼성 갤럭시 S4, 

삼성 갤럭시 노트, 

삼성 갤럭시 노트4,

 LG 옵티머스 G Pro2, 

LG 옵티머스 G3


중에 LG 옵티머스 G pro2 는 VOICE_CALL로 하면 stop이 되지 않는다.

첨엔 stream id를 잘못써서 그런가 했는데 아니다.

VOICE_CALL을 단순히 MUSIC으로 변경만 해줘도 스탑이 잘된다.

머리털 다빠질듯

뮤직으로 했을땐 수화기에서 소리가 나는게 아니라, 스피커에서 소리가 나기때문에 

취지에 어긋난다...어찌해야할지

우선 뮤직으로 해놓는다...stop이 안되면 안되니까 



############################## 롤리팝  ###################################

롤리팝에서는 SoundPool이 deprecated 되었다.

초기화를 SoundPool.Builder로 해야한다.




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함