Пользователь быстро коснется MediaController. Ошибка возникает только на Nexus 4.

В моей деятельности у меня есть VideoView, который должен показывать MediaController при касании. Если пользователь быстро коснется контроллера, пока VideoView не следует, после этого пользователь нажмет кнопку «Назад», мое приложение зависнет.

setContentView(R.layout.activity_play_video_fullscreen);
videoView = (VideoView) findViewById(R.id.video_view);

urlString = getIntent().getStringExtra(EXTRA_URL);
videoView.setVideoURI(Uri.parse(urlString));
videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        // video ready to play - hide progress bar
        ProgressBar pb = (ProgressBar)findViewById(R.id.progress_bar);
        pb.setVisibility(ProgressBar.INVISIBLE);
    }
});

videoView.setOnCompletionListener(new OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // video finished - terminate this activity
        AxUtils.axLog(AxUtils.eDbgLogError, AxUtils.eDbgLogGroupDialer, String.format("PlayVideoFullsreenActivity.videoView.onCompletion(): Fullscreen video playback completed.\n"));
        finish();
    }
});

// install our own error handler
videoView.setOnErrorListener(new OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        AxUtils.axLog(AxUtils.eDbgLogError, AxUtils.eDbgLogGroupDialer, String.format("PlayVideoFullsreenActivity.videoView.onError(): Playback failed. what=%d(%s) extra=%d(%s)\n", 
                what, what_toString(what), extra, extra_toString(extra)));
        String reason;
        if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) {
            reason = "Server connection lost.";
        }
        else {
            reason = extra_toString(extra);
        }
        String message = String.format("Playback Failed. %s", reason);
        Toast.makeText(PlayVideoFullscreenActivity.this.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
        finish();
        return true;
    }
});

// add playback controls
mediaController = new MediaController(this);
mediaController.setAnchorView(videoView.getRootView());
videoView.setMediaController(mediaController);

person Luc Le    schedule 14.02.2014    source источник
comment
Пожалуйста, опубликуйте код   -  person Niko    schedule 14.02.2014
comment
@Niko я редактировал свой пост   -  person Luc Le    schedule 14.02.2014
comment
Как приложение зависает?   -  person Niko    schedule 14.02.2014
comment
когда пользователь быстро прокручивает медиаконтроллер, после этого нажимает кнопку «Назад», тогда приложение зависает, пользователь не может взаимодействовать   -  person Luc Le    schedule 18.02.2014
comment
Просто освободите все ресурсы, пока вызывается onDestroy.   -  person jitain sharma    schedule 21.04.2014
comment
Добавить какую-то часть вашего журнала, показать что-то необычное, что нужно упомянуть?   -  person Sulfkain    schedule 22.05.2014
comment
Вероятно, интерфейс зависает. Сделайте сетевое подключение в другом потоке.   -  person Gaurav    schedule 03.06.2014


Ответы (1)


В подготовленных прослушивателях отключите и включите ваши медиа-контроллеры. Это должно решить вашу проблему.

Удачи.

person Emre Aktürk    schedule 27.06.2014