这是原始帖子中提供的代码中最重要的部分。
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
),以获取所需的按钮。我们将其强制转换为a,Button
以便轻松将其分配给one
正在初始化的变量。对于此答案的更多解释超出了此方法的范围。这给出了它是如何工作的一个简短的洞察。
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
这是初始化的方法MediaPlayer
。MediaPlayer遵循静态工厂方法设计模式。为了获得实例,我们调用它的create()
方法,然后将要播放的声音的上下文和资源ID传递给它,在这种情况下为R.raw.soho
。我们将其声明为final
。乔恩斯基特提供了为什么我们如此做了很好的解释在这里。
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
最后,我们设置先前初始化的按钮将执行的操作。单击按钮即可播放声音!为此,我们设置OnClickListener
按钮的one
。内部只有一种方法,onClick()
其中包含按钮在单击时应执行的指令。
public void onClick(View v) {
mp.start();
}
要播放声音,我们调用MediaPlayer的start()
方法。此方法开始播放声音。
在那里,您现在可以在Android中单击按钮播放声音!
奖励部分:
如下面的评论所述,谢谢Langusten Gustel!,并且按照Android开发者参考中的建议,重要的是调用该release()
方法以释放将不再使用的资源。通常,一旦要播放的声音播放完毕,便会执行此操作。要做到这一点,我们添加一个OnCompletionListener
到我们mp
,像这样:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
在onCompletion
方法内部,我们像这样释放它:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
显然有更好的方法来实现这一点。例如,您可以将MediaPlayer设为一个类变量,并处理其生命周期以及使用它的Fragment
或的生命周期Activity
。但是,这是另一个问题的话题。为了使这个答案的范围很小,我写它只是为了说明如何在Android中单击按钮时播放声音。
原始帖子
第一。您应该将语句放入一个块中,在这种情况下,将其放在onCreate方法中。
第二。您将按钮初始化为变量1,然后使用了变量0并将其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();
}
});
}
}
MusicManager.getInstance().play(this, R.raw.my_sound);
。如果是这样,这个库可能是你:github.com/delight-im/Android-Audio