Esta é a parte mais importante do código fornecido na postagem original.
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();
}
});
Para explicar passo a passo:
Button one = (Button) this.findViewById(R.id.button1);
Primeiro é a inicialização do botão a ser usado para reproduzir o som. Usamos o Activity's findViewById
, passando o Id que atribuímos a ele (no caso deste exemplo:) R.id.button1
, para obter o botão que precisamos. Nós o convertemos como um Button
para que seja fácil atribuí-lo à variável one
que estamos inicializando. Explicar mais sobre como isso funciona está fora do escopo desta resposta. Isso dá uma breve visão sobre como funciona.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
É assim que inicializar um MediaPlayer
. O MediaPlayer segue o padrão de design do método estático de fábrica . Para obter uma instância, chamamos seu create()
método e passamos a ele o contexto e o ID do recurso do som que queremos tocar, neste caso R.raw.soho
. Nós o declaramos como final
. Jon Skeet forneceu uma ótima explicação sobre por que fazemos isso aqui .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Finalmente, definimos o que nosso botão inicializado anteriormente fará. Tocar um som no clique do botão! Para fazer isso, definimos o OnClickListener
do nosso botão one
. Dentro há apenas um método, onClick()
que contém as instruções que o botão deve executar ao clicar .
public void onClick(View v) {
mp.start();
}
Para reproduzir o som, chamamos o start()
método de MediaPlayer . Este método inicia a reprodução do som.
Lá, agora você pode tocar um som ao clicar no botão no Android!
Parte bônus:
Conforme observado no comentário abaixo Obrigado Langusten Gustel! e, conforme recomendado na Referência do desenvolvedor Android , é importante chamar o release()
método para liberar recursos que não serão mais usados. Normalmente, isso é feito quando o som a ser reproduzido termina a reprodução. Para fazer isso, adicionamos um OnCompletionListener
ao nosso mp
like assim:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Dentro do onCompletion
método, nós o liberamos assim:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Obviamente, existem maneiras melhores de implementar isso. Por exemplo, você pode tornar o MediaPlayer uma variável de classe e manipular seu ciclo de vida junto com o ciclo de vida do Fragment
ou Activity
que o usa. No entanto, este é um assunto para outra pergunta. Para manter o escopo desta resposta pequeno, eu a escrevi apenas para ilustrar como reproduzir um som no clique de botão no Android .
Postagem Original
Primeiro. Você deve colocar suas instruções dentro de um bloco e, neste caso, o método onCreate.
Segundo. Você inicializou o botão como variável um , então usou uma variável zero e definiu seu onClickListener como um onClickListener incompleto. Use a variável um para setOnClickListener.
Terceiro, coloque a lógica para tocar o som dentro do onClick.
Em suma:
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);
. Em caso afirmativo, esta biblioteca pode ser para você: github.com/delight-im/Android-Audio