ボタンをクリックするとサウンドが再生される Android 質問する

ボタンをクリックするとサウンドが再生される Android 質問する

クリックすると生のサウンドを再生するボタンを取得するにはどうすればよいですか? id を持つボタンを作成したのですbutton1が、どのようなコードを書いてもすべて間違っています。

import android.media.MediaPlayer;

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);
    MediaPlayer = mp;
    mp = MediaPlayer.create(this, R.raw.soho);
    zero.setOnCliclListener(new View.OnClickListener() )

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.basic_screen, menu);
        return true;
    }



}

ベストアンサー1

これは、元の投稿で提供されているコードの中で最も重要な部分です。

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);

これは初期化する方法ですMediaPlayerMediaPlayerは静的ファクトリメソッド設計パターンインスタンスを取得するには、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開発者リファレンスで推奨されている、電話することが重要です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 メソッド内に配置する必要がありま す。

2番目。ボタンを変数として初期化しました1つ変数を使用した場合ゼロ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();
            }
        });
    }
}

おすすめ記事