개발 창고/Android

[Kotlin] How to use "Ringtone"

로이제로 2023. 12. 5. 22:00
반응형

 

1. Ringtone 객체 생성

class RingtoneActivity : AppCompatActivity() {
    private var ringtone : Ringtone? = null
    ...
}

Ringtone에 사용될 객체를 선언합니다.

2. Ringtone 실행

/**
 * @description 벨소리 시작
 * @param   context     컨텍스트
 * @param   packageName 패키지 명 (ex. com.test.app)
 * @param   path        벨소리 경로 (test.mp3)
 */
fun startRingtone(context:Context, packageName:String, path:String){
    // 사전에 선언된 벨소리가 있는 경우 중지
    if(ringtone != null)   ringtone!!.stop()

    val uriString       = "android.resource://${packageName}/raw/${path}"
    val uriRingtone     = Uri.parse(uriString)
    ringtone            = RingtoneManager.getRingtone(context, uriRingtone)

    ringtone!!.play()
}

아래와 같이 resource폴더의 raw폴더에 포함된 ringtone을 호출하게 되는데

Android Studio의 Project 구조

 현재 앱의 패키지가 com.test.app이고, 재생하려는 ringtone이 fantasy_alarm_clock.mp3인 경우 아래와 같이 호출하면 rintone이 재생됩니다.

startRingtone(this, "com.test.app", "fantasy_alarm_clock.mp3")

 

3. Ringtone 중지

/**
 * @description 벨소리 중지
 */
fun stopRingtone(){
    if(ringtone != null){
        ringtone!!.stop()
        ringtone = null
    }
}

사전에 선언된 Ringtone이 있는 경우에만 재생을 중지하고 객체를 비워줍니다.

반응형