Bu, orijinal gönderide verilen koddaki en önemli kısımdır.
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();
}
});
Adım adım açıklamak için:
Button one = (Button) this.findViewById(R.id.button1);
Birincisi, sesin çalınmasında kullanılacak düğmenin başlatılmasıdır. İhtiyacımız olan düğmeyi elde etmek için, findViewByIdkendisine atadığımız Kimliği (bu örnekte:) geçerek Aktiviteleri kullanırız R.id.button1. Onu başlattığımız Buttondeğişkene atamanın kolay olması için bir oneatıyoruz. Bunun nasıl çalıştığını daha fazla açıklamak bu yanıt için kapsam dışıdır. Bu , nasıl çalıştığına dair kısa bir fikir verir.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Bu, a MediaPlayer. MediaPlayer, Statik Fabrika Yöntemi Tasarım Modelini izler . Bir örnek almak için, create()yöntemini çağırıyoruz ve bu durumda çalmak istediğimiz sesin bağlamını ve kaynak kimliğini iletiyoruz R.raw.soho. Olarak ilan ediyoruz final. Jon Skeet, burada neden böyle yaptığımıza dair harika bir açıklama yaptı .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Son olarak, önceden başlatılmış butonumuzun ne yapacağını belirledik. Düğmeye tıklandığında bir ses çalın! Bunu yapmak için, biz set OnClickListenerbizim düğmeye one. İçinde yalnızca bir yöntem olduğunu onClick()ne yapması gerektiğini talimatlar düğmesi bulunur tıklamada .
public void onClick(View v) {
mp.start();
}
Sesi çalmak için MediaPlayer start()yöntemini çağırıyoruz . Bu yöntem, sesin çalınmasını başlatır.
Orada, artık Android'de düğme tıklandığında bir ses çalabilirsiniz!
Bonus kısmı:
Aşağıdaki yorumda belirtildiği gibi Teşekkürler Langusten Gustel! ve Android Geliştirici Referansında önerildiği gibi,release() artık kullanılmayacak kaynakları serbest bırakmak için yöntemi çağırmak önemlidir . Genellikle bu, çalınacak sesin çalması tamamlandıktan sonra yapılır. Bunu yapmak için, biz eklemek OnCompletionListenerbizim için mp şöyle:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
onCompletionYöntemin içinde şu şekilde yayınlıyoruz :
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Bunu uygulamanın daha iyi yolları var . Örneğin, MediaPlayer'ı bir sınıf değişkeni yapabilir ve yaşam döngüsünü, onu kullanan Fragmentveya Activitykullanan kişinin yaşam döngüsü ile birlikte yönetebilirsiniz . Ancak bu başka bir soru için bir konudur. Bu cevabın kapsamını küçük tutmak için, bunu Android'de bir düğme tıklandığında nasıl ses çalınacağını göstermek için yazdım .
Orijinal Gönderi
İlk. İfadelerinizi bir bloğun içine ve bu durumda onCreate yöntemine koymalısınız.
İkinci. Düğmeyi değişken bir olarak başlattınız , sonra bir sıfır değişkeni kullandınız ve onun onClickListener'ını tamamlanmamış bir onClickListener olarak ayarladınız. Değişken kullanın birini setOnClickListener için.
Üçüncüsü, sesi onClick içinde çalmak için mantığı koyun.
Özetle:
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);. Öyleyse, bu kitaplık size uygun olabilir: github.com/delight-im/Android-Audio