MediaPlayer onError никогда не вызывается, я пытался установить даже после start ()
, но разница не меняется, возможно, проблема в асинхронных вызовах ... но есть ли решение без отключения prepareAsync ()
?
public void play() {
try {
if(player != null){
player.stop();
player.release();
player = null;
}
player = new MediaPlayer();
player.setLooping(false);
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
player.setDisplay(surfaceHolder);
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {}
});
playerView.setVisibility(View.INVISIBLE);
player.setDataSource(urls[current]);
player.prepareAsync();
player.setOnErrorListener((mediaPlayer, error, i1) -> {
Log.e("ErrorListener", "error=" + error);
return false;
});
player.setOnPreparedListener(mediaPlayer -> {
player.start();
playerView.setVisibility(View.VISIBLE);
});
} catch (Exception ex){
menu.progressDialog.dismiss();
Log.e("ErrorException", "" + ex.toString());
}
}
Void play ()
находится в этом классе. Где «VideoPlayer» - это «интерфейс»:
public class myMediaPlayer implements VideoPlayer {
}
Ошибка определенно есть. но вызов не происходит, за исключением того, что OnPrepared не вызывается.