1. ホーム
  2. android

[解決済み] assetsディレクトリにあるオーディオファイルを再生する

2022-06-07 22:03:08

質問

次のようなコードがあります。

AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();

問題は、このコードを実行すると、私が要求したオーディオファイルだけを再生するのではなく、assetsディレクトリにあるすべてのオーディオファイルをアルファベット順に再生し始めることです。何が間違っているのでしょうか。assets ディレクトリからオーディオ ファイルを再生する良い方法はありますか?

フォローアップの質問です。 オーディオ ファイルを assets ディレクトリに保存することと、res/raw ディレクトリに保存することの間に違いはありますか? assets ディレクトリにある場合、id を取得しないという事実のほかに。オーディオファイルを res/raw フォルダに移動した場合、再利用する際に問題が発生します。 MediaPlayer にはidパラメータがないため setDataSource() . この種の問題を処理するための良いガイドラインを見つけることができません。

どのように解決するのですか?

player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

あなたのバージョンは、assetsディレクトリに1つのファイルしかない場合、動作します。 ディレクトリに1つのファイルしかない場合、あなたのバージョンは動作するでしょう。アセット ディレクトリのコンテンツは、実際にはディスク上の「実際のファイル」ではないのです。 ディスク上のファイルです。それらはすべて、次々にまとめられます。ですから、もしあなたが 何バイトから読み込むかを指定しない場合、プレーヤーは最後まで読み込みます。 最後まで読みます(つまり、assetsディレクトリにあるすべてのファイルを再生し続けます)。 ディレクトリにあるすべてのファイルを再生し続けます)。