按钮在Android中单击时播放声音

Cer*_*rin 5 eclipse android eclipse-adt

我是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;
    }

}
Run Code Online (Sandbox Code Playgroud)

还有我的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>
Run Code Online (Sandbox Code Playgroud)

我正在开发使用Eclipse插件,它没有显示任何错误,似乎在模拟器或真实手机中正确运行应用程序,但当我点击播放按钮时,没有任何反应.我不确定模拟器是否支持声音(但我假设它确实如此)并且我已经确认声音在我的手机上没有静音.

我究竟做错了什么?

此外,我没有看到我的日志记录语句显示在任何地方,无论是在Eclipse的控制台还是LogCat面板中.我应该看到那些印在某处吗?

Rag*_*ood 10

这不会起作用的原因很简单:永远不会调用MyActivity().

Android将调用您的Activity的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;
    }

}
Run Code Online (Sandbox Code Playgroud)