반응형
이 글은 안드로이드 프로그래밍에 대한 글입니다.
검색을 해서 들어오시는 대부분의 사람들이 원하시는 게 아마도 링크를 통해서 들어가시면 보실 수 있으실지 않을까 해서 를 올려둡니다.
앱내에서 볼륨키를 이용해서 미디어의 음량을 조절하는 예제를 만들어보려고 합니다.
이전 글 효과음 넣기 예제에서 볼륨을 조절하는 부분만 추가해서 만들어보겠습니다.
효과음을 넣는 부분만 궁금하시다면 링크를 통해서 보시기 바랍니다.
1. SoundManager 클래스에 함수 추가
package com.everyshare.animationtest;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
import android.view.KeyEvent;
import java.util.HashMap;
public class SoundManager {
private SoundPool mSoundPool;
private HashMap<Integer,Integer> mSoundPoolMap;
private AudioManager mAudioManager;
private Context mContext;
public SoundManager(Context mContext,SoundPool mSoundPool){
this.mContext = mContext;
this.mSoundPool = mSoundPool;
mSoundPoolMap = new HashMap<Integer, Integer>();
mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
}
public void addSound(int index,int soundId){ //효과음 추가
mSoundPoolMap.put(index,mSoundPool.load(mContext,soundId,1));
}
public int playSound(int index){ //효과음 재생
int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
return mSoundPool.play(mSoundPoolMap.get(index),streamVolume,streamVolume,1,0,1f);
}
public void stopSound(int streamId){
mSoundPool.stop(streamId);
} //효과음 정지
public void pauseSound(int streamId){
mSoundPool.pause(streamId);
} //효과음 일시정지
public void resumeSound(int streamId){
mSoundPool.resume(streamId);
} //효과음 재시작
//---------------- 추가한 부분 (볼륨 조절) ----------------------------------------------------
public boolean volumeDown(){
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER,
AudioManager.FLAG_SHOW_UI);
return true;
}
public boolean volumeUp(){
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE,
AudioManager.FLAG_SHOW_UI);
return true;
}
}
AudioManager.ADJUST_LOWER - 음량 낮추기
AudioManager.ADJUST_RAISE - 음량 높이기
이 부분이 음량 조절 부분이라고 생각하시면 됩니다.
2. MainActivity에 onKeyDown 함수 오버라이드, 코드 추가
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode){
//볼륨키(아래)
case KeyEvent.KEYCODE_VOLUME_DOWN:{
return soundManager.volumeDown();
}
//볼륨키(위)
case KeyEvent.KEYCODE_VOLUME_UP:{
return soundManager.volumeUp();
}
default:
return false;
}
}
추가적으로 볼륨키 외에 뒤로가기버튼이나 홈키를 이용한 이벤트를 추가해야 한다면
switch문에 해당 case를 추가하여 사용하시면 됩니다.
반응형
'안드로이드 > 코드' 카테고리의 다른 글
[안드로이드] SharedPreferences를 이용해서 데이터를 저장해보자 (0) | 2019.11.26 |
---|---|
[안드로이드] 터치(클릭) 이벤트 감지 - GestureDetector,OnTouchListener (0) | 2019.11.24 |
[안드로이드] 효과음 넣기 (SoundPool, AudioManager) (0) | 2019.11.19 |
[안드로이드] EditText 텍스트 변경시 이벤트 처리(TextWatcher) (0) | 2019.11.18 |
[안드로이드] 깜빡이는 텍스트 애니메이션 만들기(AlphaAnimation) (0) | 2019.11.16 |