这是原帖中提供的代码中最重要的部分。
Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
一步一步解释:
Button one = (Button) this.findViewById(R.id.button1);
首先是用于播放声音的按钮的初始化。我们使用 Activity 的 findViewById,传递我们分配给它的 Id(在本例中为:R.id.button1),以获取我们需要的按钮。我们将其转换为Button,以便将其分配给我们正在初始化的变量one。解释更多它是如何工作的超出了这个答案的范围。 This 简要介绍了它的工作原理。
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
这是如何初始化MediaPlayer。 MediaPlayer 遵循Static Factory Method Design Pattern。为了获得一个实例,我们调用它的create() 方法并将我们想要播放的声音的上下文和资源ID 传递给它,在本例中为R.raw.soho。我们将其声明为final。 Jon Skeet 很好地解释了我们为什么这样做here。
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
最后,我们设置我们之前初始化的按钮将做什么。点击按钮播放声音!为此,我们设置按钮one 的OnClickListener。里面只有一种方法,onClick(),它包含按钮应该在点击时执行的指令。
public void onClick(View v) {
mp.start();
}
要播放声音,我们调用 MediaPlayer 的 start() 方法。此方法开始播放声音。
现在,您可以在 Android 中播放按钮点击声音!
奖金部分:
如下评论中所述感谢 Langusten Gustel!,作为recommended in the Android Developer Reference,调用release() 方法以释放不再使用的资源非常重要。通常,这是在要播放的声音完成播放后完成的。为此,我们将OnCompletionListener 添加到我们的mp like so:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
在onCompletion 方法中,我们将它释放like so:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
显然有更好的实现方式。例如,您可以将 MediaPlayer 设为类变量并处理其生命周期以及使用它的 Fragment 或 Activity 的生命周期。但是,这是另一个问题的主题。为了缩小这个答案的范围,我写它只是为了说明如何在 Android 中单击按钮时播放声音。
原帖
首先。你应该把你的语句放在一个块中,在这种情况下是 onCreate 方法。
第二。您将按钮初始化为变量 one,然后使用变量 zero 并将其 onClickListener 设置为不完整的 onClickListener。对 setOnClickListener 使用变量 one。
第三,把播放声音的逻辑放到onClick里面。
总结:
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BasicScreenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic_screen);
Button one = (Button)this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
}
}