Mam problemy z klasą soundpool. Tu idzie:Błąd SoundPool: brak dostępnych nazw ścieżek
W moim app gry (APP muzyka btw) Potrzebuję odtworzyć przynajmniej 32 krótkich dźwięków w tym samym czasie, więc deklaruję soundpool tak:
private SoundPool sp;
sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0);
Po tym obciążeniem I wszystkie dźwięki MP3 potrzebne, około 80 dźwięków 55KB każdy. Nie mam problemów z ładowaniem wszystkich dźwięków, ale jest wolny! Cóż, to nie problem. Prawdziwym problemem jest to, kiedy grać około 20 dźwięków w tym samym czasie, nie ma błędu w moim dzienniku:
ERROR/AudioFlinger(59): no more track names available
ERROR/AudioTrack(26349): AudioFlinger could not create track, status: -12
ERROR/SoundPool(26349): Error creating AudioTrack
Po że każdy dźwięk, który staram się grać rzuca ten sam błąd, a dźwięk nie mogą być odtwarzane. Nawet dźwięk innej działalności/puli dźwięków. Nie mam pojęcia, co się dzieje i jak to naprawić! Czy powinienem zmienić format plików dźwiękowych? Czy powinienem zwolnić pamięć lub coś po odtworzeniu dźwięku?
(I 'm testowania na Samsung Galaxy S I9000, 2.3.3 System OS. Aplikacja jest 2,1)
Może trzeba wdrożyć SoundPool.OnLoadCompleteListener? – Codeman
wywołać funkcję release() dla każdego z ścieżek dźwiękowych? – Codeman
Upewnij się, że tryb pętli nie jest włączony, żaden utwór nie jest ustawiony na pauzę, a każdy plik mp3 jest naprawdę krótki, jak myślisz (bez ciszy na końcu). Ponieważ dostępna jest ograniczona liczba ścieżek dźwiękowych, musisz ograniczyć ilość działających ścieżek audio. Być może dostępnych jest mniej niż 32 utwory, więc nie można odtwarzać wielu dźwięków w tym samym czasie. Również niektóre implementacje są błędne i mogą się zawiesić na niektórych ścieżkach (może zależeć od złego pliku mp3 lub czegoś podobnego), dlatego dostępne utwory są dość szybko wykorzystywane. Jeśli aplikacja ulegnie awarii, czasami ścieżki nie są zwalniane, więc nie ma dźwięku. – dronus