티스토리 뷰
안드로이드를 사용하다가 벨소리, 미디어가 아닌 알람 등을 조절하고 싶은 경우가 생긴다.
그럴경우에는 AudioManager 를 사용하여 조절할 수 있다.
아래에 있는 함수를 Activity 클래스 안에 추가해주면 벨소리에 대한 볼륨을 조절할 수 있다.
아래는 볼륨 조절 키를 통해 볼륨을 조절해주는 함수이다.
public boolean onKeyDown(int keyCode, KeyEvent event) {
AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP :
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_BACK:
return true;
}
return false;
}
아래는 볼륨 조절 키를 눌렀을 때 자신이 원하는 특정 볼륨 값으로 고정시키는 함수이다.
public boolean onKeyDown(int keyCode, KeyEvent event) {
AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);//선언 후
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP :
mAudioManager.setStreamVolume(AudioManager.STREAM_RING,
(int)(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING) * 0.90),
AudioManager.FLAG_PLAY_SOUND);
// * 0.90 이 부분의 숫자에 맞춰 볼륨이 바뀝니다. (*0.25 이면 25%의 볼륨)
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
// ring volume down
mAudioManager.setStreamVolume(AudioManager.STREAM_RING,
(int)(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING) * 0.25),
AudioManager.FLAG_PLAY_SOUND); return true;
case KeyEvent.KEYCODE_BACK:
return true;
}
return false;
}
이런식으로 자신이 원하는 값으로 볼륨을 조절할 수 있다.
참고로 (int)(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING) * 0.25) 로 적은 이유는
각각 벨소리, 미디어, 알람 등에 따라서 최대 음량이 다르기 때문에 각각의 최대볼륨의 퍼센트로 나타내었다.
(예를들어 벨소리 max가 6이면 미디어는 15이고 이런식.. 그래서 고정된 int값으로는 원하는 표현을 하기 힘들어서 이렇게 한 것이다.)
그렇다면, 현재는 벨소리 볼륨을 조절하는데, 다른 볼륨을 조절하고 싶다면 어떻게 하면 될까?
Media Volume (Music/Video etc…)
AudioManager.STREAM_MUSIC
Ringtone Volume
AudioManager.STREAM_RING
Alarm Volume
AudioManager.STREAM_ALARM
Notification Volume
AudioManager.STREAM_NOTIFICATION
System Volume
AudioManager.STREAM_SYSTEM
Voicecall Volume
AudioManager.STREAM_VOICECALL
각각 해당하는 값을 위 코드의
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
또는
mAudioManager.setStreamVolume(AudioManager.STREAM_RING,
(int)(mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING) * 0.90),
AudioManager.FLAG_PLAY_SOUND);
에서 STREAM_RING 부분을 자신이 원하는 형태로 바꾸어 주면 된다.
참고로 시스템에서 지원해주는 단계로 한단계씩 움직이고 싶으면 adjustStreamVolume 를 사용해야하고
자신이 원하는 값으로 바꾸고 싶으면 setStreamVolume 를 써야한다.
'Web&App > 안드로이드' 카테고리의 다른 글
안드로이드 배터리 상태 확인하기 broadcastreceiver 사용 BATTERY_LOW (0) | 2020.03.18 |
---|---|
안드로이드 전화 받기, 전화 끊기, 통화 상태보기 (answerCall, endCall) (0) | 2020.03.18 |
exo player 기본 이미지 넣기 - Glide 사용 (artwork 삽입) (0) | 2020.03.17 |
안드로이드 사진 배경 투명하게 만들기 png와 jpg 차이 (0) | 2020.03.13 |
안드로이드 가로 화면 지정하기 (0) | 2020.03.12 |