Mam następujący kod:Odtwórz plik dźwiękowy z katalogu aktywów
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Problem polega na tym, że po uruchomieniu tego kodu, to rozpocznie odtwarzanie wszystkich plików audio w katalogu aktywów, w porządku alfabetycznym, a nie po prostu odtwarzam żądany plik audio. Co ja robię źle? Czy istnieje lepszy sposób odtwarzania plików audio z katalogu asset?
Późniejsze pytanie: Czy istnieje różnica między zachowaniem plików audio w katalogu zasobów a przechowywaniem ich w katalogu res/raw? Poza tym, że nie otrzymują identyfikatorów, jeśli znajdują się w katalogu aktywów. Jeśli przeniesię pliki audio do folderu res/raw, to mam problem z ponownym użyciem MediaPlayer
s, ponieważ nie ma parametru id dla setDataSource()
. Nie mogę znaleźć dobrej wskazówki do radzenia sobie z tego rodzaju problemem.
Zadziałało. Dzięki. Ale myślę, że moja wersja POWINNA też zadziałać. –
Twoja wersja będzie działać, jeśli w katalogu zasobów znajduje się tylko jeden plik. Zawartość katalogu zasobów nie jest w rzeczywistości "prawdziwymi plikami" na dysku. Wszystkie są układane jeden po drugim. Tak więc, jeśli nie określisz, od czego zacząć i ile bajtów do przeczytania, odtwarzacz będzie czytał do końca (czyli będzie odtwarzał wszystkie pliki w katalogu zasobów). –
Bardzo dobra odpowiedź! – Redax