これは、元の投稿で提供されたコードで最も重要な部分です。
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);
最初は、サウンドの再生に使用されるボタンの初期化です。アクティビティのを使用して、findViewById
割り当てたID(この例の場合:)を渡して、R.id.button1
必要なボタンを取得します。初期化しているButton
変数に簡単に割り当てることができるように、それをとしてキャストしone
ます。これがどのように機能するかをさらに説明することは、この回答の範囲外です。これは、それがどのように機能するかについての簡単な洞察を与えます。
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
これはを初期化する方法MediaPlayer
です。MediaPlayerはStatic Factory Method Design Patternに従います。インスタンスを取得するには、そのcreate()
メソッドを呼び出して、再生するサウンドのコンテキストとリソースIDを渡します(この場合)R.raw.soho
。として宣言しますfinal
。Jon Skeetは、なぜここでそうするのかについての素晴らしい説明を提供しました。
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
最後に、以前に初期化したボタンの動作を設定します。ボタンクリックで音を鳴らす!これを行うにOnClickListener
は、ボタンのを設定しますone
。内部は1つのメソッドのみでonClick()
、クリック時にボタンが実行する必要のある指示が含まれています。
public void onClick(View v) {
mp.start();
}
サウンドを再生するには、MediaPlayerのstart()
メソッドを呼び出します。このメソッドは、サウンドの再生を開始します。
そこで、Androidのボタンクリックでサウンドを再生できるようになりました。
ボーナス部分:
以下のコメントで述べたように、Langusten Gustelに感謝します。、およびAndroid Developer Referenceで推奨されているように、このrelease()
メソッドを呼び出して、使用されなくなったリソースを解放することが重要です。通常、これは、再生するサウンドの再生が完了すると行われます。これを行うにはOnCompletionListener
、likeにを追加します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メソッドです。
第二。ボタンを変数oneとして初期化し、次に変数0を使用して、そのonClickListenerを不完全なonClickListenerに設定しました。変数1をsetOnClickListenerに使用します。
3番目に、サウンドを再生するロジックを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