3

ストレージから曲を再生する必要があるプログラムを書いています。このために MediaPlayer をセットアップしましたが (以下のコード フラグメント)、java.io.IOException: Prepare failed.: status=0x1 が発生し続けました。一部の Web サイトでは、読み取ろうとしているファイルが誰でも読み取り可能ではないため、このエラーが発生する可能性があることが示されています。これが本当なら、どうすればプログラムからファイルのアクセス許可を変更したり、これを回避したり、または他の解決策を講じることができますか? そうでない場合は、これの何が問題なのかを理解するのを手伝ってください。前もって感謝します。

MediaPlayer player = new MediaPlayer();
player.reset();
player.setDataSource(selectedFilePath);
player.prepare();
player.start();
4

1 に答える 1

7

どこからファイルを読み取ろうとしていますか? /sdcard/ 領域を見ている可能性があり、アプリケーションに read_external_storage の機能がない可能性があります

その場合は、次の行をマニフェストに追加してください。

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

[編集] どこからロードしようとしているのかわかりませんが、パスの代わりに記述子を使用すると役立つ場合があります。これが役立つかどうかを確認してください:

FileInputStream fis = new FileInputStream(locationOfFile);
mediaPlayer.setDataSource(fis.getFD());

それでも問題が解決しない場合は、別のファイル名を試して、メディア プレーヤーの設定が正しいことを確認することをお勧めします。または、次のようなことができます

File thisFile = new File("/storage/sdcard0/Music/song.mp3");
if (thisFile.exists())
   Log.v("file", "Exists");
else
   Log.v("file", "Could not be located.");
于 2012-07-31T21:46:24.580 に答える