안드로이드에서 알림음을 실행하려는데 기왕이면 벨소리로 지정되어 있는것이 나을거 같아서 찾아보면서 했던 삽질들을 정리
가장 햇갈렸던 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(); // 재생하면 된다.
'공부 > 프로그래밍' 카테고리의 다른 글
빅데이터와 현실 (0) | 2015.10.01 |
---|---|
안드로이드 카메라 소스 [펌] (2) | 2015.09.24 |
컴퓨터 언어를 공부할때는.... (0) | 2015.08.28 |
java 와 nodejs의 비교 (0) | 2015.08.28 |
아두이노에서도 타이머 사용하기(setInterval, setTimeout) (1) | 2015.08.24 |
댓글