Questa è la parte più importante del codice fornito nel post originale.
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();
}
});
Per spiegarlo passo dopo passo:
Button one = (Button) this.findViewById(R.id.button1);
La prima è l'inizializzazione del pulsante da utilizzare per riprodurre il suono. Usiamo l'attività findViewById
, passando l'ID che gli abbiamo assegnato (nel caso di questo esempio :) R.id.button1
, per ottenere il pulsante di cui abbiamo bisogno. Lo creiamo come a in Button
modo che sia facile assegnarlo alla variabile one
che stiamo inizializzando. Spiegare di più su come funziona è fuori portata per questa risposta. Questo fornisce una breve panoramica su come funziona.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Ecco come inizializzare un file MediaPlayer
. MediaPlayer segue lo Static Factory Method Design Pattern . Per ottenere un'istanza, chiamiamo il suo create()
metodo e gli passiamo il contesto e l'ID risorsa del suono che vogliamo riprodurre, in questo caso R.raw.soho
. Lo dichiariamo come final
. Jon Skeet ha fornito un'ottima spiegazione del motivo per cui lo facciamo qui .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Infine, impostiamo cosa farà il nostro pulsante precedentemente inizializzato. Riproduci un suono al clic del pulsante! Per fare ciò, impostiamo il OnClickListener
del nostro pulsante one
. All'interno c'è solo un metodo, onClick()
che contiene le istruzioni che il pulsante deve eseguire al clic .
public void onClick(View v) {
mp.start();
}
Per riprodurre il suono, chiamiamo il start()
metodo di MediaPlayer . Questo metodo avvia la riproduzione del suono.
Lì, ora puoi riprodurre un suono al clic del pulsante in Android!
Parte bonus:
Come notato nel commento qui sotto Grazie Langusten Gustel! e, come consigliato nella guida di riferimento per gli sviluppatori Android , è importante chiamare il release()
metodo per liberare risorse che non verranno più utilizzate. Di solito, questo viene fatto una volta che il suono da riprodurre ha completato la riproduzione. Per fare ciò, aggiungiamo un OnCompletionListener
al nostro mp
simile così:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
All'interno del onCompletion
metodo, lo rilasciamo in questo modo:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Ovviamente ci sono modi migliori per implementarlo . Ad esempio, puoi rendere MediaPlayer una variabile di classe e gestirne il ciclo di vita insieme al ciclo di vita di Fragment
o Activity
che lo utilizza. Tuttavia, questo è un argomento per un'altra domanda. Per mantenere piccolo lo scopo di questa risposta, l'ho scritta solo per illustrare come riprodurre un suono al clic del pulsante in Android .
Post originale
Primo. Dovresti mettere le tue dichiarazioni all'interno di un blocco, e in questo caso il metodo onCreate.
Secondo. Hai inizializzato il pulsante come variabile uno , quindi hai usato una variabile zero e hai impostato il suo onClickListener su un onClickListener incompleto. Utilizzare la variabile uno per il setOnClickListener.
Terzo, inserisci la logica per riprodurre il suono all'interno di onClick.
In sintesi:
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);
. Se è così, questa libreria potrebbe fare al caso tuo: github.com/delight-im/Android-Audio