Мне нужно получить продолжительность аудиофайла для серии голосовых объявлений, которые нужно играть из приложения. Я добавил аудиофайлы в качестве ресурсов, и они отлично играют. Пример кода ниже действительно работает идеально по своему назначению: он возвращает продолжительность аудиофайлов.
Вот код:
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;
}
Вот странная вещь. Этот код вызывается в основном действии, который подготавливает набор звуковых инструкций для данного теста. В этом действии нет ошибок. Но как только вызывается второе действие, я получаю длинную строку ошибок в 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>
Я делаю одноэтапный до конца основной активности (без ошибок) и из первой строки второго действия. Ошибки, безусловно, выбрасываются между действиями.
Кроме того, если я прокомментирую восемь строк блока try (таким образом, возвращая только ноль), ошибки logcat можно избежать. Когда я восстанавливаю восемь строк, ошибки возвращаются.
Я прорыл документацию и обыскал в Интернете, и я считаю, что правильно создаю, освобождаю и уничтожаю объект медиапланера, поэтому я не понимаю, почему я получаю сообщение об ошибке.
Тем не менее, я должен делать что-то неправильно. Любые идеи?
Спасибо,
Кевин