Tips/Android
[Android] 오디오 모드 변경 및 볼륨 조절
DevJaewoo
2022. 2. 7. 15:39
반응형
권한 설정
소리 설정을 변경하기 위해 Write Settings 권한이 필요하다.
AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" />
Write Settings는 시스템 권한이라 앱 실행 시 자동으로 권한을 묻는 창이 뜨지 않기 때문에
설정 창을 띄워서 사용자가 직접 권한을 부여하도록 해야 한다.
MainActivity.kt
private fun requestWriteSettingsPermission() {
if(!Settings.System.canWrite(this)) {
Toast.makeText(this, "알림음을 켜기 위해 권한 설정이 필요합니다.", Toast.LENGTH_SHORT).show()
startActivity(Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS))
}
}
코드를 실행시키면 아래와 같은 창이 자동으로 실행되는데, 사용자가 다운로드한 앱을 선택해 권한을 직접 부여해주면 된다.
오디오 모드 읽기/쓰기 (소리/진동/무음)
AudioManager의 RingerMode를 변경하여 오디오 모드를 바꿀 수 있다.
RingerMode의 종류는 총 3가지가 있는데, 이 중 변경하고자 하는 모드를 ringerMode에 넣어주면 된다.
- AudioManager.RINGER_MODE_NORMAL (소리)
- AudioManager.RINGER_MODE_VIBRATE (진동)
- AudioManager.RINGER_MODE_SILENT (무음)
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
var currentRingerMode = audioManager.ringerMode //읽기
audioManager.ringerMode = AudioManager.RINGER_MODE_NORMAL //쓰기
볼륨 읽기/쓰기
스마트폰으로 볼륨 키를 누르면 알 수 있듯이 볼륨엔 4가지 모드가 있다.
각 모드 별로 최대 볼륨이 다르기 때문에 getStreamMaxVolume을 통한 비율로 조정해야 한다.
- AudioManager.STREAM_RING
- AudioManager.STREAM_MUSIC
- AudioManager.STREAM_ALARM
- AudioManager.STREAM_SYSTEM
currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_ALARM) //읽기
var percentageVolume = 60 //60%
audioManager.setStreamVolume(
AudioManager.STREAM_ALARM,
(audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM) * (percentageVolume / 100.0)).toInt(),
0) //쓰기
반응형