MediaPlayer onError никогда не вызывается - PullRequest
0 голосов
/ 04 января 2019

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 не вызывается.

...