① 먼저 기기 내부에 있는 음원의 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값을 준다.
④
⑤