Це найважливіша частина коду, поданого в оригіналі публікації.
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();
}
});
Щоб пояснити це покроково:
Button one = (Button) this.findViewById(R.id.button1);
По-перше, це ініціалізація кнопки, яка використовується для відтворення звуку. Ми використовуємо активність findViewById
, передаючи ідентифікатор, призначений йому (у цьому прикладі:) R.id.button1
, щоб отримати потрібну нам кнопку. Ми подаємо це як Button
так, що легко віднести його до змінної, one
яку ми ініціалізуємо. Поясніть більше, як це працює, поза цією відповіддю. Це дає коротке розуміння того, як це працює.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Ось як ініціалізувати MediaPlayer
. MediaPlayer дотримується моделі дизайну статичних заводських методів . Щоб отримати екземпляр, ми називаємо його create()
метод і передаємо йому контекст та ідентифікатор ресурсу звуку, який ми хочемо відтворити, в цьому випадку R.raw.soho
. Ми оголошуємо це як final
. Джон Скіт дав чудове пояснення того, чому ми робимо це тут .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Нарешті, ми встановлюємо, що буде робити наша раніше ініціалізована кнопка. Відтворити звук при натисканні кнопки! Для цього ми встановлюємо OnClickListener
нашу кнопку one
. Всередині є лише один метод, onClick()
який містить інструкції, які повинна виконувати кнопка при натисканні .
public void onClick(View v) {
mp.start();
}
Для відтворення звуку ми називаємо start()
метод MediaPlayer . Цей метод запускає відтворення звуку.
Там тепер ви можете відтворювати звук при натисканні кнопки в Android!
Бонусна частина:
Як зазначалося в коментарі нижче Спасибі Лангустен Густель! , і, як рекомендовано в Посібнику для розробників Android , важливо викликати release()
метод, щоб звільнити ресурси, які більше не використовуватимуться. Зазвичай це робиться після того, як звук, який слід відтворити, закінчить відтворення. Для цього ми додамо OnCompletionListener
до нашого mp
так:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Всередині onCompletion
методу ми випускаємо його так:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Очевидно, є кращі способи здійснення цього. Наприклад, ви можете зробити MediaPlayer змінною класу і обробляти її життєвий цикл разом з життєвим циклом того Fragment
або іншого, Activity
який він використовує. Однак це тема для іншого питання. Щоб обсяг цієї відповіді був невеликим, я написав це лише для того, щоб проілюструвати, як відтворювати звук при натисканні кнопки в Android .
Оригінальна публікація
Перший. Ви повинні помістити свої заяви всередину блоку, а в цьому випадку метод onCreate.
Друге. Ви ініціалізіруетесь кнопка в змінних один , то ви використовували змінний нульовий і встановіть його onClickListener до неповного onClickListener. Використовуйте змінну один для setOnClickListener.
По-третє, введіть логіку для відтворення звуку всередині onClick.
Підсумовуючи:
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);
. Якщо так, ця бібліотека може бути для вас: github.com/delight-im/Android-Audio