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, findViewById
kendisine atadığımız Kimliği (bu örnekte:) geçerek Aktiviteleri kullanırız R.id.button1
. Onu başlattığımız Button
değişkene atamanın kolay olması için bir one
atı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 OnClickListener
bizim 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 OnCompletionListener
bizim için mp
şöyle:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
onCompletion
Yö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 Fragment
veya Activity
kullanan 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