To najważniejsza część kodu zawartego w oryginalnym poście.
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();
}
});
Aby wyjaśnić to krok po kroku:
Button one = (Button) this.findViewById(R.id.button1);
Pierwsza to inicjalizacja przycisku używanego do odtwarzania dźwięku. Używamy Aktywności findViewById
, przekazując identyfikator, który do niej przypisaliśmy (w tym przypadku R.id.button1
:), aby uzyskać przycisk, którego potrzebujemy. Rzutowaliśmy go jako, Button
aby łatwo było przypisać go do zmiennej one
, którą inicjalizujemy. Więcej wyjaśnienia, jak to działa, nie wchodzi w zakres tej odpowiedzi. To daje wgląd krótko o tym, jak to działa.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Oto jak zainicjować plik MediaPlayer
. MediaPlayer jest zgodny ze wzorcem projektowym metody Static Factory . Aby uzyskać instancję, wywołujemy jej create()
metodę i przekazujemy jej kontekst oraz identyfikator zasobu dźwięku, który chcemy odtworzyć, w tym przypadku R.raw.soho
. Deklarujemy to jako final
. Jon Skeet zapewnił świetne wyjaśnienie, dlaczego to robimy tutaj .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Na koniec ustalamy, co zrobi nasz poprzednio zainicjowany przycisk. Odtwórz dźwięk po kliknięciu przycisku! Aby to zrobić, ustawiamy OnClickListener
nasz przycisk one
. Wewnątrz jest tylko jedna metoda, onClick()
która zawiera instrukcje , które przycisk powinien wykonać po kliknięciu .
public void onClick(View v) {
mp.start();
}
Aby odtworzyć dźwięk, wywołujemy start()
metodę MediaPlayera . Ta metoda rozpoczyna odtwarzanie dźwięku.
Tam możesz teraz odtwarzać dźwięk po kliknięciu przycisku w systemie Android!
Część bonusowa:
Jak zauważono w komentarzu poniżej, dzięki Langusten Gustel! i zgodnie z zaleceniami zawartymi w dokumentacji dla deweloperów systemu Android ważne jest wywołanie release()
metody w celu zwolnienia zasobów, które nie będą już używane. Zwykle robi się to po zakończeniu odtwarzania odtwarzanego dźwięku. Aby to zrobić, dodajemy OnCompletionListener
do naszego mp
polubienia:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Wewnątrz onCompletion
metody wypuszczamy ją w następujący sposób:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Istnieją oczywiście lepsze sposoby realizacji tego. Na przykład możesz uczynić MediaPlayer zmienną klasy i obsługiwać jej cykl życia wraz z cyklem życia Fragment
lub, Activity
który jej używa. To jednak temat na inne pytanie. Aby zakres tej odpowiedzi był mały, napisałem ją tylko po to, aby zilustrować, jak odtwarzać dźwięk po kliknięciu przycisku w systemie Android .
Oryginalny post
Pierwszy. Powinieneś umieścić swoje instrukcje wewnątrz bloku, w tym przypadku metody onCreate.
Druga. Zainicjowałeś przycisk jako zmienną jeden , następnie użyłeś zmiennej zero i ustawiłeś jego onClickListener na niekompletny onClickListener. Użyj zmiennej jeden dla setOnClickListener.
Po trzecie, umieść logikę odtwarzania dźwięku wewnątrz onClick.
W podsumowaniu:
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);
. Jeśli tak, ta biblioteka może być dla Ciebie: github.com/delight-im/Android-Audio