这是原帖中提供的代码中最重要的部分。
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的Fragment,传递我们分配给它的Id(在本例中为Fragment),以获取我们需要的按钮。 我们将其转换为Activity,以便将其分配给我们正在初始化的变量one。 解释更多如何工作超出了这个答案的范围。 这简要介绍了它的工作原理。
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
这是初始化Fragment的方法.MediaPlayer遵循静态工厂方法设计模式。 为了获得一个实例,我们调用它的Fragment方法,并将它传递给我们想要播放的声音的上下文和资源ID,在本例中为Fragment.我们将其声明为Activity.Jon Skeet提供了一个很好的解释,为什么我们这样做。
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
最后,我们设置我们之前初始化的按钮将执行的操作。 点击按钮播放声音! 为此,我们设置了Fragment的按钮Fragment。内部只有一种方法,Activity,其中包含按钮在单击时应执行的操作。
public void onClick(View v) {
mp.start();
}
要播放声音,我们称之为MediaPlayer的Fragment方法。 此方法开始播放声音。
在那里,你现在可以在Android按钮点击播放声音了!
奖金部分:
正如下面的评论中所述,感谢Langusten Gustel!并且根据Android Developer Reference中的建议,重要的是调用Fragment方法来释放将不再使用的资源。 通常,一旦要播放的声音完成播放就完成。 为此,我们将Fragment添加到Fragment,如下所示:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
在Fragment方法中,我们将其发布如下:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
显然有更好的方法来实现这一点。 例如,您可以将MediaPlayer设置为类变量,并将其生命周期与使用它的Fragment或Activity的生命周期一起处理。 但是,这是另一个问题的主题。 为了保持这个答案的范围很小,我写这篇文章只是为了说明如何在Android按钮点击时播放声音。
原帖
第一。 您应该将语句放在一个块中,在本例中是onCreate方法。
第二。 您将按钮初始化为变量1,然后使用变量零并将其onClickListener设置为不完整的onClickListener。 使用变量one作为setOnClickListener。
第三,把逻辑放在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();
}
});
}
}