본문 바로가기

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

반응형

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

가장 햇갈렸던 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();            // 재생하면 된다.

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.