안드로이드 개발시 버튼을 눌러 여러 음악중에서 하나의 음악을 재생하고 다시 버튼을 눌러 그 다음 음악을 재생하고 싶습니다.


a,b,c음악 중에서 재생버튼을 누르면 a음악이 재생되고 확인버튼을 누르면 b음악이 재생되고 다시 확인버튼을 누르면 c음악이 재생되는 기능을 구현하고 싶은데요... a음악에서 b음악으로 넘어가는 것까지는 해봤느데... c음악으로 넘어가는것을 어떻게 해야할지 모르겠어요ㅠㅠㅠㅠ제발 도와주 세요 ㅠㅠㅠㅠㅠ

 Button btn1,btn2; //재생버튼과   확인버튼
MediaPlayer mp,mp1,mp2;

protected void onCreate(Bundle savedInstanceState) {
btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(listener);
btn2 = (Button)findViewById(R.id.button2);
btn2.setOnClickListener(listener);
mp = MediaPlayer.create(MainActivity.this, R.raw.music);
mp1 = MediaPlayer.create(MainActivity.this, R.raw.music1);
mp2 = MediaPlayer.create(MainActivity.this, R.raw.music2);
}

Button.OnClickListener listener = new Button.OnClickListener()
 {
public void onClick(View v)
{
 switch(v.getId()){
//재생버튼 누르는 경우
 case R.id.button1:
mp = MediaPlayer.create(MainActivity.this, R.raw.music);
//객체를 통해 음원 재생
 mp.start();
 break;

//확인버튼을 누르는 경우
 case R.id.button2:
//그 전에 재생되던 음악멈춤
 mp.pause();
//그 다음 음원을 가져와 다시 객체 생성
mp = MediaPlayer.create(MainActivity.this, R.raw.music1);
 mp.start();
 break;
        }
  }  };
  • 알 수 없는 사용자

조회수 224


1 답변


질문을 정리하보면, 확인 버튼을 누를 때마다 음악 3개를 순환 재생하고 싶다고 이해했는데 맞나요?

모듈러 연산과 배열을 적절히 응용하시면 원하시는 문제를 해결할 수 있을 것 같네요.

다음은 질문자의 코드를 기준으로 수정하면 다음과 같이 하면될 것 같네요.

일단 mp, mp1, mp2 변수는 mp로 하고, 음원 부분을 배열로 바꿉니다.

private int songs[]; // 음원 목록
private int playing = -1; // 현재 연주중인 음원 지시자

private ... onCreate(...) {
  // onCreate 함수 내에서
  songs = new int[3];
  songs[0] = R.raw.music;
  songs[1] = R.raw.music1;
  songs[2] = R.raw.music2;
}

버튼 부분에서 재생버튼의 경우 다음과 같이 합니다.

playing=0;
if( mp!=null ) {
    mp.stop(); // 혹은 pause
}
mp = MediaPlayer.create(MainActivity.this, songs[ playing ]);
mp.start();

확인버튼의 경우는 다음과 같이 합니다.

playing = (playing+1)%songs.length; // 목록의 끝에 도달하면 다시 첫번째를 선택.
if( mp!=null ) {
    mp.stop(); // 혹은 pause
}
mp = MediaPlayer.create(MainActivity.this, songs[ playing ]);
mp.start();
  • 2016년 04월 11일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 04월 11일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close