Android

벨소리 재생하기

까망사과 2022. 7. 19. 20:00

API

RingtoneManager

여러 유형(알람음(Alarm), 알림음(Nofitication), 수신음(Ringtone))의 벨소리에 액세스할 수 있게 하는 API이다.

벨소리 선택 창과 관련된 인텐트 액션 및 엑스트라, 벨소리에 대한 쿼리에 사용하는 메서드 등을 포함하고 있다.

인텐트 액션 상수를 사용하여 벨소리 선택 창을 열거나, URI를 통해 Ringtone 객체를 얻어 벨소리를 재생할 수 있다.

 

Ringtone

벨소리에 대한 정보를 제공하고 재생할 수 있게 하는 API이다.

 


URI를 사용하여 벨소리 재생하기

벨소리의 Uri 객체가 필요하다.

각 유형에 대해 기본 벨소리의 URI를 얻으려면 RingtoneManager의 다음 정적 메서드를 사용한다.

  • getActualDefaultRingtoneUri(context: Context!, type: Int): Uri!
    전달된 타입의 기본 벨소리의 URI를 반환한다. 타입에는 RingtoneManager의 상수인 TYPE_ALARM, TYPE_NOTIFICATION, TYPE_RINGTONE 중 하나를 사용할 수 있다.
    이 메서드 대신 Settings.System.DEFAULT_XXX_URI를 사용할 수 있다.
  • getDefaultUri(type: Int): Uri!
    위 메서드와 유사하지만 벨소리의 실제 URI를 반환하지 않는다.

 

벨소리에 대한 Uri 객체를 RingtoneManager.getRingtone(Context!, Uri!)에 전달하면 Ringtone 객체가 반환된다.

Ringtone 객체의 play()를 호출하면 로컬 MediaPlayerstart()가 호출되어 벨소리가 재생된다.

val uri = RingtoneManager.getActualDefaultRingtoneUri(
    applicationContext, 
    RingtoneManager.TYPE_RINGTONE
) // Settings.System.DEFAULT_RINGTONE_URI로 대신할 수 있음
val ringtone = RingtoneManager.getRingtone(applicationContext, uri)
ringtone.play()