Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Kotlin으로 안드로이드 액티비티에서 벨소리 설정하는 방법 (단계별 가이드)

이 튜토리얼에서는 Kotlin을 사용해 안드로이드 액티비티에서 기기의 벨소리(ringtone)를 설정하는 방법을 단계별로 알아봅니다. RingtoneManager가 제공하는 벨소리 선택 인텐트를 활용하면, 별도의 커스텀 UI 없이도 시스템 벨소리 선택 화면을 띄우고 사용자가 고른 벨소리의 URI를 손쉽게 가져올 수 있습니다.

1단계 — 새 프로젝트 생성

Android Studio에서 File → New Project를 차례로 선택한 뒤, 필요한 정보를 모두 입력하여 새 프로젝트를 생성합니다.

2단계 — 레이아웃 작성 (res/layout/activity_main.xml)

아래 코드를 res/layout/activity_main.xml에 추가합니다. 벨소리 선택을 위한 버튼과, 선택된 벨소리 경로를 표시할 TextView를 함께 배치했습니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:text="Tutorials Point"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="32sp"
android:textStyle="bold" />
<Button
android:id="@+id/btnSelRingtone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Select Ringtone" />
<TextView
android:id="@+id/tvRingtone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btnSelRingtone"
android:layout_centerInParent="true"
android:text="Ringtone Path"
android:textStyle="bold|italic" />
</RelativeLayout>

3단계 — 메인 액티비티 구현 (src/MainActivity.kt)

다음으로 src/MainActivity.kt에 아래 코드를 추가합니다. 버튼 클릭 시 현재 설정된 알람 벨소리 URI를 가져온 후, ACTION_RINGTONE_PICKER 인텐트로 벨소리 선택 화면을 실행합니다. 선택 결과는 onActivityResult() 콜백에서 받아 화면에 표시됩니다.

import android.app.Activity
import android.content.Intent
import android.media.RingtoneManager
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
lateinit var btn: Button
lateinit var txtView: TextView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
btn = findViewById(R.id.btnSelRingtone)
txtView = findViewById(R.id.tvRingtone)

btn.setOnClickListener {
val currentRingtone: Uri = RingtoneManager.getActualDefaultRingtoneUri(
this,
RingtoneManager.TYPE_ALARM
)
val intent = Intent(RingtoneManager.ACTION_RINGTONE_PICKER)
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE)
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone")
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentRingtone)
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false)
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true)
startActivityForResult(intent, 999)
}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 999 && resultCode == Activity.RESULT_OK) {
val uri = data!!.getParcelableExtra<Uri>(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
txtView.text = "From :" + uri.path
}
}
}

참고: 각 엑스트라(Extra) 옵션의 역할은 다음과 같습니다.
- EXTRA_RINGTONE_TYPE: 선택할 사운드 종류를 지정합니다 (여기서는 벨소리 타입).
- EXTRA_RINGTONE_TITLE: 선택 다이얼로그의 제목을 지정합니다.
- EXTRA_RINGTONE_EXISTING_URI: 선택 화면에서 현재 설정된 벨소리를 미리 표시합니다.
- EXTRA_RINGTONE_SHOW_SILENT: '무음' 옵션 표시 여부를 결정합니다.
- EXTRA_RINGTONE_SHOW_DEFAULT: '기본값' 옵션 표시 여부를 결정합니다.

4단계 — 권한 설정 (androidManifest.xml)

마지막으로 AndroidManifest.xml에 아래 코드를 추가합니다. 시스템 설정(벨소리)을 변경하려면 WRITE_SETTINGS 권한이 필요합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.q1">
<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 스마트폰을 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 상단 툴바의 Run 아이콘Kotlin으로 안드로이드 액티비티에서 벨소리 설정하는 방법 (단계별 가이드)을 클릭하세요. 실행 대상 목록에서 연결된 모바일 기기를 선택하면, 기기에 앱의 기본 화면이 나타납니다.

화면 중앙의 Select Ringtone 버튼을 누르면 시스템 벨소리 선택 화면이 열리고, 원하는 벨소리를 고르면 그 하단의 TextView에 해당 벨소리의 경로가 표시되는 것을 확인할 수 있습니다.

Kotlin으로 안드로이드 액티비티에서 벨소리 설정하는 방법 (단계별 가이드)