Androidで(とりあえず)音を鳴らそう Java編 その2

Androidで(とりあえず)音を鳴らそう Java編 その2

以前の記事「Androidで(とりあえず)音を鳴らそう Java編」で試しに音を鳴らしてみたらとんでもなく遅延が発生したのですが、対応方法が何かあるんじゃないかと気になっていました。

対応方法を検討するにあたって気になったのが、MediaPlayerをメンバ変数にしていたこと。
これって同じものを使い回しているから、連続してボタンを押したときに前の再生が終わるまで次の音が鳴らないんじゃないの〜?ということ。
で、やってみました。

 
public class MainActivity extends Activity {
	private Button m_button;
	private Context m_context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // ボタンの取得
        m_button = (Button)findViewById(R.id.button1);

        // コンテキストの設定
        m_context = this;
        
        // ボタンを押したときのイベント
        m_button.setOnClickListener(new OnClickListener(){
        	public void onClick(View v){ 		
        		// 音声準備と再生
         		MediaPlayer m_mediaPlayer2 = MediaPlayer.create(m_context, R.raw.kt_a2);
        		m_mediaPlayer2.start();
        	}
        });
        
    }
}
 

ボタンを押すたびに音声を準備して鳴らす方式、こんなソースでいいんかな〜と不安を残しつつやってみると、無事に音が鳴りました。
ボタンの連打でも大丈夫そう。
でもログになんかエラーが出ている。

E/MediaPlayer(2150): initSecureFlag() exception

で、しばらく連打していたら、さらにエラーを吐いてなんにも鳴らなくなっちゃった…。
もう少し調べてみる必要がありそうです。