본문 바로가기

안드로이드/코드

[안드로이드] 볼륨키로 미디어 음량 조절하기

반응형

이 글은 안드로이드 프로그래밍에 대한 글입니다.

검색을 해서 들어오시는 대부분의 사람들이 원하시는 게 아마도 링크를 통해서 들어가시면 보실 수 있으실지 않을까 해서 를 올려둡니다.

 

 

 

 

 

볼륨키1

 

 

앱내에서 볼륨키를 이용해서 미디어의 음량을 조절하는 예제를 만들어보려고 합니다.

이전 글 효과음 넣기 예제에서 볼륨을 조절하는 부분만 추가해서 만들어보겠습니다.

효과음을 넣는 부분만 궁금하시다면 링크를 통해서 보시기 바랍니다.

 

 

 

 

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를 추가하여 사용하시면 됩니다.

 

 

반응형