Android Sound
안드로이드 사운드 재생 방법입니다.
1. SoundPool
2. MediaPlayer
차이점이라면
SoundPool 은 알림사운드,게임효과등 짧은 사운드클립에 적합하고
MediaPlayer 는 노래와 같이 더 큰 사운드파일을 재생할 때 적합합니다.
1. SoundPool 로 재생하는 방법
우선 res > raw 폴더에 sound file 을 넣습니다. (모두 소문자로! 대쉬(-)는 언더바(_)로 바꾸고)
raw 폴더가 없다면 res 에서 우클릭 -> new -> Directory 클릭 해서 raw 폴더를 만듭니다.
사운드 파일은 아래 첨부합니다.
그럼 이제 sound play 를 위한 class를 하나 생성합니다.
MySoundPlayer.java
package ai.vdotdo.hellobryan_test;
import android.content.Context;
import android.media.AudioAttributes;
import android.media.SoundPool;
import java.util.HashMap;
public class MySoundPlayer {
public static final int DING_DONG = R.raw.sound_dingdong;
public static final int SUCCESS = R.raw.success;
private static SoundPool soundPool;
private static HashMap<Integer, Integer> soundPoolMap;
// sound media initialize
public static void initSounds(Context context) {
AudioAttributes attributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool.Builder()
.setAudioAttributes(attributes)
.build();
soundPoolMap = new HashMap(2);
soundPoolMap.put(DING_DONG, soundPool.load(context, DING_DONG, 1));
soundPoolMap.put(SUCCESS, soundPool.load(context, SUCCESS, 2));
}
public static void play(int raw_id){
if( soundPoolMap.containsKey(raw_id) ) {
soundPool.play(soundPoolMap.get(raw_id), 1, 1, 1, 0, 1f);
}
}
}
SoundPool 은 Builder 를 이용해서 생성해야 합니다.
참고) new SoundPool(maxStreams, streamType, srcQuality); 로 생성하는 방식은 api21 이후에 deprecated 됐습니다.
사용하려는 Activity 에서는
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MySoundPlayer.initSounds(getApplicationContext());
findViewById(R.id.button).setOnClickListener((v)->{
MySoundPlayer.play(MySoundPlayer.DING_DONG);
});
}
MySoundPlayer.initSounds(getApplicationContext()); 로 초기화 하고
사용할 땐
MySoundPlayer.play(MySoundPlayer.DING_DONG);
또는
MySoundPlayer.play(MySoundPlayer.SUCCESS);
하면 됩니다.
2. MediaPlayer 사용.
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_dingdong);
mediaPlayer.start();
간단하쥬?
MediaPlayer 는 사운드 외에 동영상도 재생합니다.
상황에 맞게 SoundPool 과 MediaPlayer 를 사용하시면 됩니다.
2019/11/24 - [Android] - [개발인생]블로거의 앱 - 로또버스
글 작성자의 앱 - 로또버스
초스피드 로또 당첨 확인 1초에 15개 이상 당첨확인! 이번 글은 제가 만든 안드로이드 앱에 대한 글입니다. 기존의 대부분 앱은 하나씩 QR을 스캔하고 동행 복권 사이트로 넘깁니다. 이렇게.... 귀찮죠..? QR 맞..
hello-bryan.tistory.com
'Android' 카테고리의 다른 글
[Android] Git 사용하기 1 : git 설치 (0) | 2019.12.06 |
---|---|
[Android] 미디어 파일 생성 후 기본 앨범에 나오게 하기 (0) | 2019.11.25 |
[Android] 안드로이드 ttf font 적용 (0) | 2019.11.24 |
[Android] OpenCV for android 로 GrayScale 이미지 만들기 (5) | 2019.09.12 |
[Android] OpenCV4 for android (OpenCV4.1.1) 사용하기 (2) | 2019.09.12 |
댓글