Android点击声音

时间:2014-07-17 18:03:23

标签: android

有人知道如何为Android中的按钮添加点击声音吗?这是我的代码如下.. 我已经检查了一些教程,但我不知道如何在我的代码上实现它们。

为什么我把包含mp3文件的文件夹名称收到错误?

http://s822.photobucket.com/user/backalleylive/media/android_test_error.jpg.html

public class MainActivity extends Activity implements OnClickListener {

    MediaPlayer clicksound;

    public void onClick(View a){
        switch (a.getId()){
        case R.id.login:
            Intent b = new Intent (this, play.class);
            startActivity(b);
            break;
        case R.id.admin:
            Intent c = new Intent (this, admin.class);
            startActivity(c);
            break;
        case R.id.exit:
            finish();
            break;

        }

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        View playButton = findViewById(R.id.login);
        playButton.setOnClickListener(this);
        View adminButton = findViewById(R.id.admin);
        adminButton.setOnClickListener(this);
        View exitButton = findViewById(R.id.exit);
        exitButton.setOnClickListener(this);

    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

1 个答案:

答案 0 :(得分:-1)

要使简单的点击音效起作用,您需要在Android设置中启用Touch Sound。虽然您的应用可以为您执行此操作,但您需要获得特定权限。

即这个(在AndroidManifest.xml的清单标签内):

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

现在,一旦你的应用启动,就会启用这样的触摸声音:

Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 1);

不幸的是,声音现在出现在所有视图上,所以你必须在不应该有声音的地方禁用它们。这可以通过向所有视图添加其他标记来完成:

android:soundEffectsEnabled="false"

更不幸的是,现在所有设备都启用了声音,所以一旦用户离开您的应用程序,您就会想要禁用它们:

Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 0);

对于像点击声这样的东西来说,这是一个很大的麻烦:-) 更重要的是,当用户按下设备按钮(如背面或家中)时,您需要确保听不到声音。

另一种方法是做

Button b = (Button) findViewById(R.id.button);

b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 1);
        v.playSoundEffect(SoundEffectConstants.CLICK);
        Settings.System.putInt(getContentResolver(), Settings.System.SOUND_EFFECTS_ENABLED, 0);
    }
});

不确定常量设置切换如何影响性能。

另请注意,用户可能已启用此设置,因此您首先需要检查

Settings.System.getInt(getContentResolver(),Settings.System.SOUND_EFFECTS_ENABLED,0);

编辑:

这是一种更好的方式来点击播放声音,而不是切换设置。

将您的声音文件放在原始文件夹中,您可以这样播放:

final MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.sound);
Button b = (Button) findViewById(R.id.button);

b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mPlayer.start();
    }
});