仮免プログラマの軌跡

Android 端末だけで Android アプリを作ったり、技術やガジェットネタをぽつぽつと

スポンサーリンク

MediaPlayer で "java.io.FileNotFoundException"

スポンサーリンク

ちょっと Android アプリ内でサウンドを再生しようとしたら地味にハマったのでメモしておく。

  • 症状
    • サウンドファイルが MediaPlayer クラスで読み込めない
    • ログには以下の表示が。
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

コードはシンプルなので間違い無いはず。

mPlayer = MediaPlayer.create(this, R.raw.sound);
mPlayer.start();

ログを信じるのであればファイルが圧縮されてて読めないっぽいが、wave ファイルなんで問題無いと思ってウンウン唸ってました。しかしファイラでよく見ると、アイコンが他の wave ファイルと違っていて、ファイルがメディアファイルだと認識されてない様子。今でも何故こうなったかは不明だけど、今度は mp3 に変換してから試したら上手く動作した。
最初は Not Found の部分しか見てなかったので、AIDE が raw ディレクトリを認識してないかと思って、ファイルをプロジェクトに追加するのに手続きが要るのかと無駄な時間を費やした...。ちなみに AIDE でリソースを追加するのは、普通に res ディレクトリ以下に raw ディレクトリを作ってファイルを放り込むだけで、リソース ID を割り振ってくれる。
ちゃんとエラーログは最後まで読みましょうというお話でした。