6

동영상 플레이어가 내장 된 전자 리더를 구현 했으므로 플레이어에서 전체 화면 모드를 전환하는 옵션이 필요합니다.VideoView & Fullscreen & Orientation changes - Android

내 질문은 다음

비디오의 현재 시간을 전체 화면에 비디오를 재생하고 사용자가 그 전에 읽고있는 페이지로이 상태에서 돌아 오게하며 유지하는 가장 좋은 방법입니다

.

내가 처리해야하는 또 다른 복잡한 상황은 다음과 같습니다, 세로 및 가로에 페이지의 다른 시각화있다

세로의 사용자 토글 전체 화면 및 장치를 회전하는 경우, 비디오가 가로 모드로 이동 재조정해야 동영상을 화면에 맞게 만들지 만 사용자가이 페이지에서 돌아 가면 다시 초상으로 돌아 가야합니다.

필요한 경우 더 많은 정보를 제공 할 수 있습니다. 미리 감사드립니다.

답변

9

VideoView과 함께 Activity을 사용하는 것이 좋습니다.

당신은 그런 위치를 복원하고

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.video); 

    mVideoView = (VideoView) findViewById(R.id.video); 
    MediaController mediaController = new MediaController(this); 
    mediaController.setAnchorView(mVideoView); 
    mVideoView.setMediaController(mediaController); 
    mVideoView.setOnCompletionListener(this); 

    Intent intent = getIntent(); 
    path = intent.getExtras().getString("path"); 

    int pos = 0; 
    if (savedInstanceState != null) { 
     pos = savedInstanceState.getInt("pos"); 
    } 

    playVideoFromPos(pos); 
} 
+1

사실에서 onCreate 메소드에서 다시 재생이

@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (mVideoView.isPlaying()) outState.putInt("pos", mVideoView.getCurrentPosition()); } 

같은 방향 변경에 위치를 저장할 수있는 가장 큰 문제는 페이지에서 이전 VideoView를 지켜 보면서 제거에 대한과 상태 일관성있는 골짜기 방향 변경을 유지하십시오. (백그라운드 작업을 재현하지 않음) –

+0

알겠습니다. mVideoView.getCurrentPosition()을 사용하면 videoview를이 값으로 설정하는 방법을 알 수 있습니다. 그리고 주요 이슈는 얼마나 많은 비디오가 플레이되었는지 시간을 얻고 그것을 설정하는 것입니다. – Sameer

+1

'mVideoView.getCurrentPosition()'은 얼마나 많은 비디오가 재생되었고'outState'에 저장했는지 시간을 알려줍니다. 그런 다음'onCreate'에서'savedInstanceState'가이 저장된 시간을 가지고 있는지 확인합니다. 'playVideoFromPos (int pos)'메서드에서는'mVideoView.seekTo (pos);와'mVideoView.start();'를 호출 할 수 있습니다. 그것은 당신이 필요로하는 것을 할 것입니다. – vasart