[解決済み] 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ディレクトリにあるすべてのファイルを再生し続けます)。 ディレクトリにあるすべてのファイルを再生し続けます)。
関連
-
Android.mk:7: *** セパレータがありません。
-
デフォルトのアクティビティが見つからない場合の対処法
-
AndroidがMainActivityが包含クラスでないというエラーを報告する
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
JVMのエラーに遭遇しました。Java Runtime Environmentによって致命的なエラーが検出されました。
-
Android ProgressBarの色を変更する
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
アンドロイドの遅延実行のいくつかの方法
-
[解決済み] Android Studioの「assets」フォルダはどこに配置すればいいですか?
-
[解決済み] APKファイルからソースコードを取得する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
AndroidStudio reports Could not resolve all artifacts for configuration ':app:classpath'.
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
IllegalStateException。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
アンドロイドのエリプサイズを使用する
-
AndroidでListViewを使ってカスタムテーブルを描画する
-
Androidの美しいSeekBarスタイルのカスタマイズ
-
アンドロイドスタジオ学習入門
-
AndroidStudioのショートカット 検索/置換