java - 媒体播放器不会在按钮单击方法中播放声音

标签 java android audio android-mediaplayer media

我有 3 个按钮,它们应该播放 3 种不同的声音。当我在 oncreate 方法中使用 3 个单独的 onclicks 方法时,它工作正常,但我想稍微清理一下代码,所以我将 OnClickListener 实现到 Activity 并将 onclick 方法向下移动。但现在,媒体播放器不播放声音。如何确保媒体播放器正常工作?

public class Play extends Activity implements OnClickListener {

    MediaPlayer mpPlay1,mpPlay2,mpPlay3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.play);


    Button bPlay1 = (Button) findViewById(R.id.button1);
    Button bPlay2 = (Button) findViewById(R.id.button2);
    Button bPlay3 = (Button) findViewById(R.id.button3);

        int resIdPlay1 = getResources().getIdentifier("play1", "raw", getPackageName());
        int resIdPlay2 = getResources().getIdentifier("play2", "raw", getPackageName());
        int resIdPlay3 = getResources().getIdentifier("play3", "raw", getPackageName());

        mpPlay1 = MediaPlayer.create(this, resIdPlay1);
        mpPlay2 = MediaPlayer.create(this, resIdPlay2);
        mpPlay3 = MediaPlayer.create(this, resIdPlay3);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.button1:
            mpPlay1.start();
            break;
        case R.id.button2:
            mpPlay2.start();
            break;
        case R.id.button3:
            mpPlay3.start();
            break;

        }

    }

}

最佳答案

您还没有在 Buttons 上实现监听器,或者至少还没有显示它。你应该有类似的东西

Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(this);

setContentView()之后的onCreate()内。每个Button都需要这个。

由于您正在尝试清理代码并使其更加简洁,因此您可以在 xml 中设置 onClick()

我已经解释过了in this answerthis one

The Button docs also cover this

关于java - 媒体播放器不会在按钮单击方法中播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765777/

相关文章:

java - 了解 CopyOnWriteArrayList 迭代器行为

android - 如何解决非 Activity InputConnection 上的 showStatusIcon

iPhone SDK : recording system sounds

Java Clip(Clip.Stop 不起作用)

java - Android:ListView 上的 Sqlite

java - java编程错误线程异常 "main"java.lang.NumberFormatException

java - 如何实现java字节码加密(防逆向工程)

android - 潜在的空指针异常。某些布局版本中缺少资源

android - 将数据从 Fragment Activity 传输到 Fragment

javascript - 在 vuejs 模板的子级中声明 onending 事件