2016-08-07 66 views
1

這似乎是一個非常普遍的問題,但我無法在SO上進行搜索。Android視頻查看變黑

我有一個簡單的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(); 
}