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

조회수 3868회

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

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

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

그래서 다음날 아침에 알람이 울린다는 가정하에(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이 잘 흘러나옵니다..

뭐가 문제 일까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

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의 스트립타입 마저 따로 설정을 해줘야 되는지는 생각을 못했습니다 ㅠㅠ 감사합니다 좋은 하루되세요 알 수 없는 사용자 2016.8.29 16:21

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)