Dies ist der wichtigste Teil des Codes im ursprünglichen Beitrag.
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();
}
});
Um es Schritt für Schritt zu erklären:
Button one = (Button) this.findViewById(R.id.button1);
Zunächst wird die Taste initialisiert, die zum Abspielen des Sounds verwendet werden soll. Wir verwenden die Aktivitäten und findViewById
übergeben die ID, die wir ihr zugewiesen haben (in diesem Beispiel :) R.id.button1
, um die Schaltfläche zu erhalten, die wir benötigen. Wir haben es Button
so umgewandelt, dass es einfach ist, es der Variablen zuzuweisen, die one
wir initialisieren. Mehr darüber zu erklären, wie dies funktioniert, ist für diese Antwort nicht möglich. Dies gibt einen kurzen Einblick in die Funktionsweise.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
So initialisieren Sie a MediaPlayer
. Der MediaPlayer folgt dem Entwurfsmuster der statischen Factory-Methode . Um eine Instanz zu erhalten, rufen wir ihre create()
Methode auf und übergeben ihr in diesem Fall den Kontext und die Ressourcen-ID des Sounds, den wir abspielen möchten R.raw.soho
. Wir erklären es als final
. Jon Skeet lieferte eine großartige Erklärung, warum wir dies hier tun .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Schließlich legen wir fest, was unsere zuvor initialisierte Schaltfläche tun soll. Spielen Sie einen Sound auf Knopfdruck! Dazu setzen wir den OnClickListener
Knopf one
. Im Inneren befindet sich nur eine Methode, onClick()
die enthält, welche Anweisungen die Schaltfläche beim Klicken ausführen soll .
public void onClick(View v) {
mp.start();
}
Um den Sound abzuspielen, rufen wir MediaPlayer an start()
Methode von . Diese Methode startet die Wiedergabe des Sounds.
Dort können Sie jetzt einen Sound auf Knopfdruck in Android abspielen!
Bonus-Teil:
Wie im Kommentar unten erwähnt, danke Langusten Gustel! Wie in der Android-Entwicklerreferenz empfohlen , ist es wichtig, die release()
Methode aufzurufen , um Ressourcen freizugeben, die nicht mehr verwendet werden. Normalerweise erfolgt dies, sobald der abzuspielende Sound wiedergegeben ist. Dazu fügen wir OnCompletionListener
unserem mp
Like Folgendes hinzu:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Innerhalb der onCompletion
Methode veröffentlichen wir es wie folgt:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Es gibt offensichtlich bessere Möglichkeiten, dies umzusetzen . Beispielsweise können Sie den MediaPlayer zu einer Klassenvariablen machen und seinen Lebenszyklus zusammen mit dem Lebenszyklus des Fragment
oder des Benutzers behandeln Activity
. Dies ist jedoch ein Thema für eine andere Frage. Um den Umfang dieser Antwort klein zu halten, habe ich sie geschrieben, um zu veranschaulichen, wie ein Sound beim Klicken auf eine Schaltfläche in Android abgespielt wird .
Ursprünglicher Beitrag
Zuerst. Sie sollten Ihre Anweisungen in einen Block einfügen, in diesem Fall die onCreate-Methode.
Zweite. Sie haben die Schaltfläche als Variable Eins initialisiert , dann eine Variable Null verwendet und ihren onClickListener auf einen unvollständigen onClickListener gesetzt. Verwenden Sie die Variable one für den setOnClickListener.
Drittens setzen Sie die Logik, um den Sound in onClick abzuspielen.
Zusammenfassend:
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);
. Wenn ja, könnte diese Bibliothek für Sie sein: github.com/delight-im/Android-Audio