2016-08-07 5 views
1

Это, кажется, очень распространенная проблема, но я не мог найти ее на SO.Android Video View становится черным

У меня есть простой videoview и он воспроизводит видео из файла mp4. Он непрерывно воспроизводит видео и просматривает видео.

Проблема в том, что я играл в настройках и возвращался, тогда видео становится черным.

Это мой код:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 
    video = (VideoView) findViewById(R.id.video); 
    // Load and start the movie 
    Uri video1 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videoplayback); 
    video.setVideoURI(video1); 
    video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      mp.setLooping(true); 
     } 
    }); 
    video.start(); 

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

+0

Настройки - это настройки телефона из верхней панели, и это происходит для всего, что я открываю над своим приложением, и когда я закрываю его, мой видеоролик черный. – Yawar

+0

вам нужно установить текущую позицию onPause и начать с onResume с новой позицией –

+0

У меня была такая же проблема, вместо этого используйте mediaPlayer – Apurva

ответ

0

попробовать этот

private int stopPosition; 
    private VideoView splashVideoView; <-- my Video view 

в onCreate

//video player 

    if (savedInstanceState != null) { 
      stopPosition = savedInstanceState.getInt("position"); 
     } 



    @Override 
    protected void onResume() { 
     super.onResume(); 
     splashVideoView.seekTo(stopPosition); 
     splashVideoView.start(); 
    } 

// This gets called before onPause so pause video here. 
    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     stopPosition = splashVideoView.getCurrentPosition(); 
     splashVideoView.pause(); 
     outState.putInt("position", stopPosition); 
    } 
0

попробовать этот

private int videoViewStopPosition ; 

    @Override 
    protected void OnPause(){ 
    super.onPause(); 
    videoViewStopPosition = vidView.getCurrentPosition(); 
    vidView.pause(); 
    } 



    @Override 
    protected void OnResume() { 
    super.onResume(); 
    vidView.seekTo(videoViewStopPosition); 
    vidView.start(); 

    } 
0

Я имел такой же вопрос. Я обнаружил, что основной причиной этого было использование FrameLayout в качестве родительского макета. Я изменил его на RelativeLayout как родительский макет VideoView, и проблема решена.

0

Вам также необходимо создать вид видео в onResume(). Попробуйте следующее:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video); 

     setVideoBackground(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     setVideoBackground(); 
    } 

    private void setVideoBackground(){ 
     video = (VideoView) findViewById(R.id.video); 
     // Load and start the movie 
     Uri video1 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videoplayback); 
     video.setVideoURI(video1); 
     video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
     mp.setLooping(true); 
    } 
    }); 
     video.start(); 
} 
Смежные вопросы