Это самая важная часть кода, представленного в исходном посте.
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);
Во-первых, это инициализация кнопки, которая будет использоваться для воспроизведения звука. Мы используем Activity findViewById
, передавая ему присвоенный нам идентификатор (в данном примере case :) R.id.button1
, чтобы получить нужную нам кнопку. Мы приводим его как a, 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. Используйте переменную one для 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