Potrzebuję uzyskać czas trwania pliku audio dla serii komunikatów głosowych, które muszą być odtwarzane z aplikacji. Dodałem pliki audio jako zasoby i grają dobrze. Poniższy przykładowy kod działa idealnie do zamierzonego celu: zwraca czas trwania plików audio.Android: mediaplayer odszedł z nieobsłużonymi zdarzeniami
Oto kod:
float getDurationOfAudioResource(LocationEnum loc, Context context){
float duration = 0;
try {
MediaPlayer mp;
mp = MediaPlayer.create(context, getAudioResource(loc));
duration = mp.getDuration();
mp.release();
mp = null;
}
catch (IllegalStateException e) {e.printStackTrace(); logError(25, "TestDescItem:Fault::Could not open mediaplayer object with audio resource.");}
return duration;
}
Oto najdziwniejsze. Ten kod jest wywoływany w głównym działaniu, które przygotowuje zestaw instrukcji dźwiękowych dla danego testu. W ramach tego działania nie ma błędów. Ale zaraz po wywołaniu drugiej czynności otrzymuję długi ciąg błędów na logcat.
03-07 13:23:43.820: I/ActionLogger(21435): GenTest_Info_Test #0 successfully created.
03-07 13:23:43.830: I/ActionLogger(21435): GenTest_Info_Test #1 successfully created.
03-07 13:23:43.840: I/ActionLogger(21435): GenTest_Info_Test #2 successfully created.
03-07 13:23:43.850: I/ActionLogger(21435): GenTest_Info_Test #3 successfully created.
<snip>
03-07 13:23:43.910: I/ActionLogger(21435): GenTest_Info_all tests successfully created.
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.260: W/MediaPlayer(21435): mediaplayer went away with unhandled events
03-07 13:23:47.270: W/MediaPlayer(21435): mediaplayer went away with unhandled events
<snip>
Mam jednoetapowy do końca głównego działania (bez błędów) i od pierwszego wiersza drugiego działania. Błędy zdecydowanie rzucają się między działania.
Ponadto, jeśli skomentuję osiem wierszy bloku try (zwracając tylko zero), zostaną usunięte błędy logcat. Kiedy przywracam osiem linii, błędy powracają. Przeszukałem dokumentację i przeszukałem sieć i uważam, że poprawnie konstruuję, zwalniam i niszczę obiekt mediaplayer, więc nie widzę powodu, dla którego otrzymuję błąd. To powiedziawszy, muszę zrobić coś złego. Jakieś pomysły?
Dzięki,
Kevin
Doskonałe. To naprawiło to! Dziękuję Ci! – Hephaestus
Co to oznacza? Wydanie – Casebash
powoduje, że mój obraz wideo ulegnie awarii z IllegalStateException po tym ... – Ron