按下按钮时发出咔嗒声

时间:2014-02-21 08:46:21

标签: android

我应该在哪里添加button.playSoundEffect(SoundEffectConstants.CLICK); ? 应该在这里:

    //onClick event where myButton1 is pressed a click sound occurs
    public void onClick(View v){
    if (v.getId() == R.id.b_Press1){
            myButton1.playSoundEffect(SoundEffectConstants.CLICK);
    }

5 个答案:

答案 0 :(得分:1)

1)你应该将mp3文件放在/ raw文件夹中。

2)在setContentView()

之后将此代码放在onCreate()方法中
final MediaPlayer mp = new MediaPlayer();
Button b = (Button) findViewById(R.id.button1); 

b.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        if(mp.isPlaying())
        {  
            mp.stop();
            mp.reset();
        } 
        try {

            AssetFileDescriptor afd;
            afd = getAssets().openFd("AudioFile.mp3");
            mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            mp.prepare();
            mp.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
});

3.每按一次按钮,声音将再次播放。您不必为此编写任何额外的代码。

请注意,AudioFile.mp3是/ raw文件夹

中mp3文件的名称

希望这个答案有用:)

答案 1 :(得分:0)

尝试一下

    final MediaPlayer mp = new MediaPlayer();
     Button b = (Button) findViewById(R.id.button1); 

        b.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        if(mp.isPlaying())
        {  
            mp.stop();
            mp.reset();
        } 
        try {

            AssetFileDescriptor afd;
            afd = getAssets().openFd("song.mp3");
            mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
            mp.prepare();
            mp.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }



    }
});  

答案 2 :(得分:0)

只有在用户启用了声音效果且isSoundEffectsEnabled()为true时才会播放声音效果。

因此请确保使用xml(例如

)启用它
android:soundEffectsEnabled="true"

通过代码

myButton1.setSoundEffectsEnabled(true)

答案 3 :(得分:0)

使用此代码。有关详情,请参阅此link1link2

 button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                button.playSoundEffect(0);
            }
        });

答案 4 :(得分:0)

您无需亲自致电playSoundEffect()进行点击。来自docs

  

该框架将为某些内置动作播放声音效果,例如单击

另请注意:

  

只有在用户启用声音效果时才会播放声音效果