이것은 원본 게시물에 제공된 코드에서 가장 중요한 부분입니다.
Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
단계별로 설명하려면 :
Button one = (Button) this.findViewById(R.id.button1);
첫 번째는 사운드 재생에 사용되는 버튼의 초기화입니다. Activity의를 사용하여 findViewById
할당 한 Id (이 예제의 경우 :)를 전달하여 R.id.button1
필요한 버튼을 가져옵니다. 초기화 Button
하는 변수에 쉽게 할당 할 수 있도록 캐스트합니다 one
. 이것이 어떻게 작동하는지 더 설명하는 것은이 답변의 범위를 벗어납니다. 이것은 작동 방식에 대한 간략한 통찰력을 제공합니다.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
이것은 MediaPlayer
. MediaPlayer는 Static Factory 메서드 디자인 패턴을 따릅니다 . 인스턴스를 가져 오려면 해당 create()
메서드를 호출하고 재생하려는 사운드의 컨텍스트와 리소스 ID (이 경우)를 전달 R.raw.soho
합니다. 우리는 그것을 final
. Jon Skeet는 우리가 여기서 그렇게하는 이유에 대해 훌륭한 설명을 제공했습니다 .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
마지막으로 이전에 초기화 된 버튼이 수행 할 작업을 설정합니다. 버튼 클릭시 소리 재생! 이를 위해 OnClickListener
버튼을 설정 합니다 one
. 내부는 단지 하나의 방법이며, onClick()
무엇을해야하는지 지시 버튼이 들어 클릭에를 .
public void onClick(View v) {
mp.start();
}
사운드를 재생하기 위해 MediaPlayer의 start()
메서드를 호출 합니다. 이 메서드는 사운드 재생을 시작합니다.
이제 Android에서 버튼 클릭시 소리를 재생할 수 있습니다!
보너스 부분 :
아래 댓글에서 언급했듯이 감사합니다 Langusten Gustel! , Android 개발자 참조에서 권장release()
하는대로 더 이상 사용되지 않을 리소스를 확보하기 위해 메서드를 호출하는 것이 중요합니다 . 일반적으로 이것은 재생할 사운드가 재생을 완료하면 수행됩니다. 이를 위해, 우리는 추가 OnCompletionListener
우리에게 mp
이렇게 같은 :
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
onCompletion
메서드 내에서 다음 과 같이 릴리스합니다 .
public void onCompletion(MediaPlayer mp) {
mp.release();
}
이것을 구현하는 더 나은 방법 이 분명히 있습니다 . 예를 들어 MediaPlayer를 클래스 변수로 만들고 이를 사용 하는 Fragment
또는 Activity
사용 하는 수명주기와 함께 수명주기를 처리 할 수 있습니다. 그러나 이것은 다른 질문에 대한 주제입니다. 이 답변의 범위를 작게 유지하기 위해 Android에서 버튼 클릭시 소리를 재생하는 방법을 설명하기 위해 작성했습니다 .
원본 게시물
먼저. 문을 블록 안에 넣어야합니다.이 경우에는 onCreate 메서드가 필요합니다.
둘째. 버튼을 변수 1 로 초기화 한 다음 변수 0 을 사용하고 onClickListener를 불완전한 onClickListener로 설정했습니다. setOnClickListener에 변수 1 을 사용하십시오 .
셋째, onClick 내부에 사운드를 재생하는 로직을 넣습니다.
요약해서 말하자면:
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BasicScreenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic_screen);
Button one = (Button)this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
}
}
MusicManager.getInstance().play(this, R.raw.my_sound);
. : 그렇다면,이 라이브러리는 당신을 위해 수 있습니다 github.com/delight-im/Android-Audio