My Photo

« Androidアプリ開発メモ052:USB接続した端末を外す | Main | 2011年12月終了アニメ感想 #anime »

January 14, 2012

Androidアプリ開発メモ053:サウンドファイルの再生の注意

サウンドファイル再生の以前の記事:
Androidアプリ開発メモ040:サウンドファイルの再生

サウンドファイルを再生を実装したときの失敗をメモ。

ちゃんと解放する

音とトーストを出そうと思って以下のようなコードを書いた。

player = MediaPlayer.create(context, R.raw.sound01);
player.start();

Toast myToast = Toast.makeText(
    context, "COMPLETE", Toast.LENGTH_SHORT);
myToast.show();

これだとリソースを解放していない。どこかで解放してやらねば。

解放するタイミング

リソースを解放する処理を書き足した。

player = MediaPlayer.create(context, R.raw.sound01);
player.start();

Toast myToast = Toast.makeText(
    context, "COMPLETE", Toast.LENGTH_SHORT);
myToast.show();

player.release();
player = null;

しかし、動かしてみると実機では音がでない。エミュレータだと一瞬再生されるから直後のトーストの処理が再生を妨げてるのかと思い、トーストの処理をサウンド再生の前に持っていったが現象は変わらず。
それはそうだ。再生の終了を待たずにリソースを解放してるんだからw
正しくは、サウンドの再生が終わってから解放するように下記のようにする。

player = MediaPlayer.create(context, R.raw.sound01);
player.start();
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
  @Override
  public void onCompletion(MediaPlayer mp) {
    player.stop();
    player.setOnCompletionListener(null);
    player.release();
    player = null;
  }
});

« Androidアプリ開発メモ052:USB接続した端末を外す | Main | 2011年12月終了アニメ感想 #anime »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/53735710

Listed below are links to weblogs that reference Androidアプリ開発メモ053:サウンドファイルの再生の注意:

« Androidアプリ開発メモ052:USB接続した端末を外す | Main | 2011年12月終了アニメ感想 #anime »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof