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" не вызывается.
setOnPreparedListener () также не вызывается. И есть ошибка: E / PlaylistFetcher: не удалось загрузить плейлист по url 'http: // <suppressed>' Но я не могу ее поймать.
Что такое urls[current]? Откуда вы берете данные?
Это список String []. Вот пример ссылки: persik.by/stream/2853/374241/10228.m3u8




Зарегистрируйте
setOnPreparedListener, чтобы узнать, вызывается ли он. Кроме того, предоставьте дополнительную информацию, сбой и т. д.