내부음원 및 외부음원 사용하여 알림음 재생

채현·2023년 12월 11일
0

안드로이드

목록 보기
33/37

1. 기기 내부 음원 이용

① 먼저 기기 내부에 있는 음원의 uri를 알기 위해 다음 메소드를 이용한다.

fun logNotiUri(context: Context) {
            val ringtoneManager = RingtoneManager(context)
            ringtoneManager.setType(RingtoneManager.TYPE_NOTIFICATION)
            val cursor = ringtoneManager.cursor

            while (cursor.moveToNext()) {
                val ringtoneTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX)
                val ringtoneUri = ringtoneManager.getRingtoneUri(cursor.position)

                Log.d("NotificationSound", "Title: $ringtoneTitle, URI: $ringtoneUri")
            }

            cursor.close()
        }

② 로그에서 원하는 음원의 uri를 확인한다.

③ 음원을 플레이하는 메소드를 선언하고, 원하는 곳에서 호출한다.

    fun notiSound() {

//        NotiSoundUtil.logNotiUri(mainActivity) // 원하는 사운드의 uri 얻기

        val myUri: Uri = Uri.parse("content://media/internal/audio/media/176?title=Beep%20Once&canonical=1")
        mediaPlayer= MediaPlayer().apply {
            setDataSource(mainActivity, myUri)
            prepare()
            start()
        }
    }

mediaPlayer 변수의 경우 미리 전역변수 null값으로 초기화해두었다.
리소스 낭비를 막기위해서 해당 액티비티 혹은 프래그먼트가 onDestroy()일 때, release()하고 null값을 준다.

0개의 댓글