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
で、しばらく連打していたら、さらにエラーを吐いてなんにも鳴らなくなっちゃった…。
もう少し調べてみる必要がありそうです。
-
前の記事
だんぼっちへの鍵盤の設置に悩む 2014.04.21
-
次の記事
だんぼっちもうすぐ届きそう 2014.04.24