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