VideoView в WindowManager не обновляется

Я пытаюсь воспроизвести видео с помощью VideoView в WindowManager. Я использую для этого StandOutLibrary. До сих пор я был довольно успешным, за исключением пары вещей.

Очевидно, что MediaController в этом случае не работает, так как ему нужна активность. Поэтому я написал свой собственный вид для управления просмотром видео. Вот результат-

введите здесь описание изображения

Все работает, кроме панели поиска после паузы. После того, как я приостанавливаю видео и запускаю его снова, панель поиска отказывается обновляться. Вот мой код для воспроизведения/паузы и обновления панели поиска:

 play.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            if (playing) {
                vv.pause();
                play.setImageResource(R.drawable.ic_media_play);
                playing = !playing;
            } else {
                vv.start();
                play.setImageResource(R.drawable.ic_media_pause);
                playing = !playing;
            }
        }
    });

    vv = (VideoView) mView.findViewById(R.id.videoView);
    vv.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {

            sb.setMax(vv.getDuration());
            sb.postDelayed(onEverySecond, 60);
        }
    });

    vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            close(id);
        }
    });

    sb = (SeekBar) mView.findViewById(R.id.sbar);
    sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            vv.seekTo(sb.getProgress());
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            vv.seekTo(sb.getProgress());
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            if (fromUser) {
                vv.seekTo(progress);
                // vv.start();
            }
        }
    });

Где моя ошибка?

Также вторая проблема возникает после изменения размера окна. Обычно все представления принимают новый размер макета после изменения размера окна. Я тоже пробовал это с SurfaceView, и это работает. Но VideoView не принимает новый размер. Вот результат после изменения размера окна - введите здесь описание изображения

Может ли кто-нибудь помочь мне в отношении этих двух? Заранее спасибо!


person EatHeat    schedule 16.05.2014    source источник


Ответы (1)


Вы должны использовать RelativeLayout в качестве оболочки вашего VideoView.

Ссылка: нажмите здесь

person Mehul Joisar    schedule 05.08.2014
comment
Мой VideoView уже размещен в RelativeLayout. У вас есть идеи, как решить первую проблему? - person EatHeat; 10.08.2014