У меня есть MediaPlayer, который играет со следующим кодом:
private void playVideo() {
if (videoURI == null) {
showToast("Please, set the video URI in HelloAndroidActivity.java in onClick(View v) method");
} else {
new Thread(new Runnable() {
public void run() {
try {
player.setOnErrorListener(new OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp,
int what, int extra) {
Log.e("MEDIAPLAYER ERRORS",
"what: " + what + " extra: " + extra);
return false;
}
});
Log.d("video","---+ in main run");
player.setDataSource(videoURI);
player.prepare();
player.reset();
} catch (IllegalArgumentException e) {
Log.d("video","---+ illegal arg");
showToast("Error while playing video");
Log.i(TAG, "========== IllegalArgumentException ===========");
e.printStackTrace();
} catch (IllegalStateException e) {
Log.d("video","---+ illegal state");
showToast("Error while playing video");
Log.i(TAG, "========== IllegalStateException ===========");
e.printStackTrace();
} catch (IOException e) {
Log.d("video","---+ general error");
showToast("Error while playing video. Please, check your network connection.");
Log.i(TAG, "========== IOException ===========");
e.printStackTrace();
}
}
}).start();
}
}
При ошибке мое приложение заходит в бесконечный цикл ошибок со следующими сообщениями:
03-05 13:27:23.035: E/MediaPlayer(6289): stop called in state 0
03-05 13:27:23.035: E/MediaPlayer(6289): error (-38, 0)
03-05 13:27:23.035: E/MediaPlayer(6289): Error (-38,0)
03-05 13:27:23.043: E/MEDIAPLAYER ERRORS(6289): what: -38 extra: 0
Каков наилучший способ восстановления после обнаруженной ошибки? Должен ли я прервать медиаплеер и если да, как мне это сделать? Кроме того, как я могу прекратить входить в этот цикл ошибок в первую очередь?
Спасибо!