검색결과 리스트
Android MediaPlayer에 해당되는 글 1건
- 2011.12.13 [Android] MediaPlayer
글
안드로이드에서 음원을 재생하는 클래스이다.
먼저 android.Media 를 import 시키고 res 아래에 raw 를 생성한 뒤 그곳에 음원 파일을 import 한다.
단 안드로이드에서는 대문자를 지원하지 않음으로 전부 소문자 파일이어야 한다.
그렇게 준비하고 다음과 같은 코드를 실행 하면 음원이 재생 되는 것을 확인 할 수 있다.
(ain.xml 파일에는 버튼 4개를 준비한다.)
package imageview.test;
import android.app.Activity;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.media.*;
import android.content.*;
public class ImageViewActivity extends Activity {
Beeper beeper1;
Beeper beeper2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
beeper1 = new Beeper(this,R.raw.aid);
beeper2 = new Beeper(this,R.raw.kalimba);
findViewById(R.id.btn1).setOnClickListener(listener);
findViewById(R.id.btn2).setOnClickListener(listener);
findViewById(R.id.btn3).setOnClickListener(listener);
findViewById(R.id.btn4).setOnClickListener(listener);
}
Button.OnClickListener listener = new Button.OnClickListener(){
public void onClick(View v)
{
MediaPlayer player;
switch(v.getId())
{
case R.id.btn1 :
player = MediaPlayer.create(ImageViewActivity.this, R.raw.aid);
player.start();
break;
case R.id.btn2 :
player = MediaPlayer.create(ImageViewActivity.this, R.raw.kalimba);
break;
case R.id.btn3 :
beeper1.play();
break;
case R.id.btn4 :
beeper2.play();
break;
}
}
};
class Beeper
{
MediaPlayer player;
Beeper(Context context, int id)
{
player = MediaPlayer.create(context, id);
}
void play()
{
player.seekTo(0);
player.start();
}
}
}
위 코드에서 1번과 2번의 경우 무작위로 누를 경우 프로그램의 부하가 생기지만 3번과 4번의 경우는 거의 생기지 않는다. 반응과 안정성에서는 훨씬 좋다.
다음은 SoundPool을 이용한 방법이다.
SoundPool pool;
int flag=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pool = new SoundPool(1,AudioManager.STREAM_MUSIC,0);
flag = pool.load(this,R.raw.aid,1);
findViewById(R.id.btn1).setOnClickListener(listener);
findViewById(R.id.btn2).setOnClickListener(listener);
findViewById(R.id.btn3).setOnClickListener(listener);
findViewById(R.id.btn4).setOnClickListener(listener);
}
Button.OnClickListener listener = new Button.OnClickListener(){
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btn1 :
pool.play(flag, 1, 1, 0, 0, 1);
case R.id.btn2 :
pool.play(flag, 0.5f, 0.5f, 0, 0, 1);
case R.id.btn3 :
pool.play(flag, 1, 1, 0, 2, 1);
case R.id.btn4 :
pool.play(flag, 1, 1, 0, 0, 0.5f);
}
}
};
얼핏봐도 처음 코드 보단 단순하다. SoundPool의 생성자의 첫번재 인수는 스트림갯수이고, 그 다음은 타입, 그 다음은 품질에 해당하는 것이다.
play 메서드를 보면 재생할 사운드 지정하고, 그 다음이 좌측 볼륨, 우측 볼륨, 재생 우선 순위, 반복 횟수, 재생 속도를 나타낸다)
재생 반복 횟수에서 0은 한번만 재생하는 것이다.
RECENT COMMENT