audio-files.AndroidのSoundPoolはロードしたオーディオファイルをすぐに再生できません。ロードしたオーディオのデコード処理に時間がかかるためです。2.2以降はsetOnLoadCompleteListenerでロードが完了したことを知ることができます。2.1以前を想定してsetOnLoadCompleteListenerを使わずに対策します。起動したら音を鳴らすだけのアプリケーションを作ってみます。※プロジェクトのresフォルダー配下にrawフォルダーにオーディオファイル「sample_sound.ogg」が保存されているものとします。※パーミッションは設定不要のためマニフェストは省略します。レイアウト用xmlも使いません。}SoundPool#loadの直後にSoundPool#playで音を鳴らしたくても、どれだけ高速な端末でもデコードが間に合わないので音は鳴らないでしょう。SoundPoolのリファレンスを見るとplayメソッドはオーディオの再生に失敗するとゼロを返すとされています。実験したところ、デコード中は再生に失敗するのでゼロが返ってきました。ゼロ以外の数値が返ってくるまでplayメソッドを繰り返し実行すればデコードが終わったことがわかります。playメソッドをボリュームゼロで実行し、ゼロ以外が返るまで繰り返せば確実に音を鳴らすことができます。再生テスト追加後のソースです。}これで確実に音声が再生されるようになりました。今回のサンプルはロードしたらすぐに再生する仕様にしました。実際のアプリケーションでは早いタイミングで複数のオーディオファイルをロードして、任意のタイミングで再生することが多いと思います。Eye元気!はロードした直後にオーディオの再生テストをしています。Responding」(ANR)の警告が出るので、サイズが大きいオーディオは要注意です。以上、参考になれば幸いです。当ブログは公開後に内容を修正することがあります。当ブログの内容により発生した損害につきましては一切の責任を負いかねますのでご了承下さい。ユーザーの訪問の際にクッキーやアクセス解析という方法でユーザーの行動を記録しています。これはユーザー個人を特定できない情報であり、サイトの質向上のために用いられます。プライバシー保護のために当ブログのクッキーの取得を拒否するにはお使いのブラウザのクッキーの送受信を拒否するよう設定してください。当サイトは第三者によって配信される広告を表示します。その際、ユーザーが過去に閲覧したサイトの情報からユーザーの興味のある広告を優先的に表示することがあります。このために、ユーザーのインターネット閲覧履歴情報を利用することがありますが、これらは個人を特定できる情報ではなく、個人情報の漏洩や電話、手紙、メールによるセールスはありません。