본문 바로가기
공부/프로그래밍

Mediaplayer 로 지정되어있는 벨소리 재생하기

by demonic_ 2015. 9. 22.
반응형

안드로이드에서 알림음을 실행하려는데 기왕이면 벨소리로 지정되어 있는것이 나을거 같아서 찾아보면서 했던 삽질들을 정리


가장 햇갈렸던 Stream 방식.

- 출력방식을 설정하는 것으로써, 외장스피커와 내장스피커를 선택할 수 있다.

현재 지정되있는 벨소리 URI 를 가져오는 방법 

- 현재 있는 설정되어 벨소리나 알람의 파일위치를 가져오는 방법

   (만약 파일을 첨부하고 해당 파일을 재생하고 싶다면 아래 예를 참조)



현재 설정된 벨소리를 미디어로 재생시키고 싶은 경우


MediaPlayer mPlayer = new MediaPlayer();         // 객체생성


// TYPE_RINGTONE 을 하면 현재 설정되어 있는 밸소리를 가져온다. 

// 만약 알람음을 가져오고 싶다면 TYPE_ALARM 을 이용하면 된다

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);  


try {

    // 이렇게 URI 객체를 그대로 삽입해줘야한다. 

    //인터넷에서 url.toString() 으로 하는것이 보이는데 해보니까 안된다 -_-;

    mPlayer.setDataSource(this, alert);        


    // 출력방식(재생시 사용할 방식)을 설정한다. STREAM_RING 은 외장 스피커로,

    // STREAM_VOICE_CALL 은 전화-수신 스피커를 사용한다. 

    mPlayer.setAudioStreamType(AudioManager.STREAM_RING);


    mPlayer.setLooping(true);  // 반복여부 지정

    mPlayer.prepare();    // 실행전 준비

} catch (IOException e) {

    e.printStackTrace();

}

mPlayer.start();   // 실행 시작 


/*

===============================

멈추고 싶으면

*/

mPlayer.stop();         // 이 방식은 미디어를 멈추는것이고

mPlayer.release();        // 이 방식은 메모리에서 해체시키는 방법이다.




파일을 직접 삽입하고 해당 파일을 재생하고 싶을 경우


주의할 점은 setAudioStreamType() 메소드를 사용하면 재생이 안된다는 점이다. 이유는 모르겠다; 


mPlayer = new MediaPlayer();

mPlayer.create(this, R.raw.desperado);        // res/raw 폴더안에 desperado.mp3 파일을 삽입했고 그파일을 참조

mPlayer.start();        // 재생 시작


/*

===============================

멈추고 다시 재생하고 싶다면 prepare() 메서드를 사용해야 한다.

*/

mPlayer.stop();         // 이 방식은 미디어를 멈추는것이고

mPlayer.release();        // 이 방식은 메모리에서 해체시키는 방법이다.


// 다시 재생하려 한다면

mPlayer.prepare();        // 재생전 준비시키고

mPlayer.start();            // 재생하면 된다.



반응형

댓글