C'est la partie la plus importante du code fourni dans le message d'origine.
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();
}
});
Pour l'expliquer étape par étape:
Button one = (Button) this.findViewById(R.id.button1);
Le premier est l'initialisation du bouton à utiliser pour jouer le son. Nous utilisons l'activité findViewById
, en passant l'identifiant que nous lui avons attribué (dans le cas de cet exemple:) R.id.button1
, pour obtenir le bouton dont nous avons besoin. Nous le convertissons en un Button
afin qu'il soit facile de l'affecter à la variable one
que nous initialisons. Expliquer davantage comment cela fonctionne est hors de portée de cette réponse. Cela donne un bref aperçu de son fonctionnement.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Voici comment initialiser un fichier MediaPlayer
. Le MediaPlayer suit le modèle de conception de méthode de fabrique statique . Pour obtenir une instance, nous appelons sa create()
méthode et lui passons le contexte et l'ID de ressource du son que nous voulons jouer, dans ce cas R.raw.soho
. Nous le déclarons comme final
. Jon Skeet a fourni une excellente explication sur les raisons pour lesquelles nous le faisons ici .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Enfin, nous définissons ce que fera notre bouton précédemment initialisé. Jouez un son en cliquant sur le bouton! Pour ce faire, nous définissons le OnClickListener
de notre bouton one
. À l'intérieur, il n'y a qu'une seule méthode, onClick()
qui contient les instructions que le bouton doit faire lors d'un clic .
public void onClick(View v) {
mp.start();
}
Pour jouer le son, nous appelons la start()
méthode de MediaPlayer . Cette méthode démarre la lecture du son.
Là, vous pouvez maintenant jouer un son en cliquant sur un bouton sous Android!
Partie bonus:
Comme indiqué dans le commentaire ci-dessous Merci Langusten Gustel! , et comme recommandé dans la référence pour les développeurs Android , il est important d'appeler la release()
méthode pour libérer des ressources qui ne seront plus utilisées. Habituellement, cela est fait une fois que le son à jouer est terminé. Pour ce faire, nous ajoutons un OnCompletionListener
à notre mp
comme ainsi:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
À l'intérieur de la onCompletion
méthode, nous la publions comme ceci:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Il existe évidemment de meilleures façons de mettre cela en œuvre . Par exemple, vous pouvez faire du MediaPlayer une variable de classe et gérer son cycle de vie avec le cycle de vie du Fragment
ou Activity
qui l'utilise. Cependant, ceci est un sujet pour une autre question. Pour limiter la portée de cette réponse, je l'ai écrite juste pour illustrer comment jouer un son lors d'un clic sur un bouton sous Android .
Message original
Première. Vous devez mettre vos instructions dans un bloc, et dans ce cas la méthode onCreate.
Seconde. Vous avez initialisé le bouton en tant que variable 1 , puis vous avez utilisé une variable zéro et défini son onClickListener sur un onClickListener incomplet. Utilisez la variable 1 pour setOnClickListener.
Troisièmement, placez la logique pour jouer le son dans le onClick.
En résumé:
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);
. Si tel est le cas, cette bibliothèque pourrait être pour vous: github.com/delight-im/Android-Audio