안드로이드 AudioManager로 벨소리모드로 바꾼 후에 Ringtone이 안울리는 문제


안녕하세요 해쉬코드 가족여러분

모닝콜 어플을 만들며 배우고있는 학생입니다

사용자가 자기전에 핸드폰을 벨소리/진동/무음 모드 중에 뭘 하고 잠들지 모르자나요?

그래서 다음날 아침에 알람이 울린다는 가정하에(AlarmManager로 액티비티를 호출햇을때)

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                        audioManager.setSpeakerphoneOn(true);
                        audioManager.setRingerMode(audioManager.RINGER_MODE_NORMAL);

이렇게 RINGER_MODE_NORMAL로 바꿔준 후에(벨소리 모드로 바꿔준 후에)

Intent intent = getIntent();   //Uri값 받기
        Uri ringtoneUri = intent.getParcelableExtra("리잉톤");
        final Ringtone ringtone = RingtoneManager.getRingtone(this, ringtoneUri);  //받은 Uri로 링톤 생성
        ringtone.play();

이전 액티비티에서 벨소리uri값을 받아와서 ringtone을 플레이 시켯습니다만..

벨소리 모드로 전환까지는 되는데 ringtone 소리가 안 흘러나옵니다.

참고로 애초에 벨소리 모드로 대기하다가 알람이 울렸을 경우엔 ringtone이 잘 흘러나옵니다..

뭐가 문제 일까요?


조회수 166


1 답변


좋아요
1
싫어요
채택취소하기

제 테스트 환경(넥서스 롤리팝)에서는 무음 모드에서 다음과 같이 ringtone의 스트림 타입을 알람으로 설정할 경우, 정상적으로 재생이 되는데요. (AudioManager를 통해서 벨소리 모드 전환은 하지 않았습니다.) 다음 샘플 코드로 테스트 해보세요.

Uri uri = RingtoneManager.getActualDefaultRingtoneUri(getContext(), RingtoneManager.TYPE_RINGTONE);
Ringtone ringtone = RingtoneManager.getRingtone(getContext(), uri);
if (ringtone != null) {
    ringtone.setStreamType(AudioManager.STREAM_ALARM);
    ringtone.play();
}

  • ringtone.setStreamType(AudioManager.STREAM_ALARM); 이 부분이 해결책이었네요!! ringtone의 스트립타입 마저 따로 설정을 해줘야 되는지는 생각을 못했습니다 ㅠㅠ 감사합니다 좋은 하루되세요    Jun Yong Lee   2016.8.29 16:21     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close