Воспроизведение звука при нажатии кнопки на Android

Я новичок в Android, и я пытаюсь сделать что-то простое, например, играть в пользовательский MP3, когда нажимается кнопка. Это, кажется, довольно распространенный вопрос , но хотя мой код следует примерам, и я не получаю никаких ошибок, я не слышу никакого звука ни в симуляторе, ни в реальном телефоне.

Моя MainActivity.java:

public class MainActivity extends Activity { private static final String TAG = "MyActivity"; public void MyActivity(Bundle onSavedStateInstance) { Log.v(TAG, "Initializing sounds..."); final MediaPlayer mp = MediaPlayer.create(this, R.raw.alarma_67560); Button play_button = (Button)this.findViewById(R.id.play_button); play_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.v(TAG, "Playing sound..."); mp.start(); } }); Log.v(TAG, "Sounds initialized."); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

И мой activity_main.xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:padding="@dimen/padding_medium" android:text="@string/hello_world" tools:context=".MainActivity" /> <Button android:id="@+id/play_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/play_button" /> </RelativeLayout> 

Я разрабатываю с помощью плагина Eclipse, который не показывает никаких ошибок и, кажется, правильно запускает приложение в симуляторе или на реальном телефоне, но когда я нажимаю кнопку воспроизведения, ничего не происходит. Я не уверен, поддерживает ли симулятор звук (но я предполагаю, что он это делает), и я подтвердил, что звук отключен на моем телефоне.

Что я делаю не так?

Кроме того, я не вижу операторов ведения журнала, которые отображаются в любом месте, либо в консоли Eclipse, либо в панели LogCat. Должен ли я когда-нибудь видеть эти печатные издания?

Это не будет работать по очень простой причине: MyActivity () никогда не вызывается.

Android будет вызывать функцию onCreate (), но любые другие вызовы методов должны выполняться вами. Поскольку вы никогда не называете вас методом MyActivity (), кнопке никогда не дается onClickListener (), и звук никогда не воспроизводится. Вместо этого попробуйте использовать следующий код:

 public class MainActivity extends Activity { private static final String TAG = "MyActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(TAG, "Initializing sounds..."); final MediaPlayer mp = MediaPlayer.create(this, R.raw.alarma_67560); Button play_button = (Button)this.findViewById(R.id.play_button); play_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.v(TAG, "Playing sound..."); mp.start(); } }); Log.v(TAG, "Sounds initialized."); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

Вы должны поместить свой код внутри onCreate и после setContentView (), так как ваш метод / конструктор public void MyActivity (Bundle onSavedStateInstance) никогда не вызывается, поэтому ваш код никогда не выполняется. Что-то вроде этого:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(TAG, "Initializing sounds..."); final MediaPlayer mp = MediaPlayer.create(this, R.raw.alarma_67560); Button play_button = (Button)this.findViewById(R.id.play_button); play_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.v(TAG, "Playing sound..."); mp.start(); } }); Log.v(TAG, "Sounds initialized."); }