Ini adalah bagian terpenting dari kode yang disediakan di postingan asli.
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();
}
});
Untuk menjelaskannya selangkah demi selangkah:
Button one = (Button) this.findViewById(R.id.button1);
Pertama adalah inisialisasi tombol yang akan digunakan dalam memainkan suara. Kita menggunakan Activity findViewById
, meneruskan Id yang kita tetapkan padanya (dalam contoh kasus ini :) R.id.button1
, untuk mendapatkan tombol yang kita butuhkan. Kami memasukkannya sebagai Button
sehingga mudah untuk menugaskannya ke variabel one
yang kami inisialisasi. Menjelaskan lebih lanjut tentang cara kerjanya berada di luar cakupan jawaban ini. Ini memberikan wawasan singkat tentang cara kerjanya.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Ini adalah cara menginisialisasi file MediaPlayer
. MediaPlayer mengikuti Pola Desain Metode Pabrik Statis . Untuk mendapatkan sebuah instance, kita memanggil create()
metodenya dan meneruskannya ke konteks dan ID sumber daya dari suara yang ingin kita mainkan, dalam kasus ini R.raw.soho
. Kami menyatakannya sebagai final
. Jon Skeet memberikan penjelasan yang bagus tentang mengapa kami melakukannya di sini .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Akhirnya, kami mengatur apa yang akan dilakukan tombol yang diinisialisasi sebelumnya. Mainkan suara dengan mengklik tombol! Untuk melakukan ini, kami mengatur OnClickListener
tombol kami one
. Di dalamnya hanya ada satu metode, onClick()
yang berisi instruksi apa yang harus dilakukan tombol saat diklik .
public void onClick(View v) {
mp.start();
}
Untuk memutar suara, kami memanggil start()
metode MediaPlayer . Metode ini memulai pemutaran suara.
Di sana, Anda sekarang dapat memutar suara dengan mengklik tombol di Android!
Bagian bonus:
Seperti yang tercantum dalam komentar di bawah Terima kasih Langusten Gustel! , dan seperti yang direkomendasikan dalam Referensi Pengembang Android , penting untuk memanggil release()
metode untuk mengosongkan sumber daya yang tidak akan digunakan lagi. Biasanya, ini dilakukan setelah suara yang akan dimainkan selesai dimainkan. Untuk melakukannya, kami menambahkan sepertiOnCompletionListener
kami mp
:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Di dalam onCompletion
metode, kami merilisnya seperti ini:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Jelas ada cara yang lebih baik untuk menerapkan ini. Misalnya, Anda dapat menjadikan MediaPlayer sebagai variabel kelas dan menangani siklus prosesnya bersama dengan siklus proses Fragment
atau Activity
yang menggunakannya. Namun, ini adalah topik untuk pertanyaan lain. Untuk menjaga cakupan jawaban ini kecil, saya menulisnya hanya untuk mengilustrasikan cara memutar suara saat klik tombol di Android .
Posting Asli
Pertama. Anda harus meletakkan pernyataan Anda di dalam blok, dan dalam hal ini metode onCreate.
Kedua. Anda menginisialisasi tombol sebagai variabel satu , lalu Anda menggunakan variabel nol dan menyetel onClickListenernya menjadi onClickListener yang tidak lengkap. Gunakan variabel satu untuk setOnClickListener.
Ketiga, letakkan logika untuk memutar suara di dalam onClick.
Singkatnya:
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);
. Jika demikian, perpustakaan ini mungkin untuk Anda: github.com/delight-im/Android-Audio